python模拟登录并且保持cookie的方法详解


Posted in Python onApril 04, 2017

前言

最近在爬行 nosec.org 的数据,看了下需要模拟登录拿到cookie后才能访问想抓的数据,重要的是 nosec.org 的登录页面 form 中有个 authenticity_token 字段每次访问登录页面都会自动生成,而且会和你的用户名,密码一样被POST到服务器。

经过一番研究后发现,直接访问网站登录界面的时候,服务器的响应头会有一个Set-Cookie字段,如下:

_nosec_session=ZTlHNmxuZXE4R0s1UXpsVUxGRTNPblNBWFd2TXU4TU9aNWVJM2lyLzNFY0pLeUdNMDY1cmZqanpkc0ppaGtjU
i9kTGdWenBrNXJKenNqbnN2YUxucE1DRW5UMHNTR1RxWDZPeGlLazllTmY1czVpYWplazJXdWkvZS9wUHJpc1Jya3ZzcmNVMytPR
it2T1dEcGx4bHNDTTVzSmVTb0xhSjRycE03QUl5RXE5Z2tZWG1mTHFBWGx1QW52QjBURi8rLS1acE8yeVRtMFRZR1JWdExneStwdmpRPT0
%3D--a6ccd9a12a8af5c8b5fb6625c24bb4db0398c503; path=/; HttpOnly

而且页面form 的表单有一个 authenticity_token 的 input ,内容如下:

<input type="hidden" name="authenticity_token" value="cGdhqVxDMRndpKbpvIV66wfEQlGf4Rz6UtXqsf79brEvFveHw2rCc6uz3euFEyUlpuA0azt5uNhnmrUiCaAyUg==" />

之前按照后端的逻辑分析_nosec_session 的值 经过解密以及各种xx手法得到 authenticity_token 的值,然后顺带着 username 和 password post就行了,最后发现这真是一个大写的傻逼!! 老是用后端的思维思考问题,过不得最近走路都走不好了。所以来,直接在页面中抓取已经生成的 authenticity_token 的值,然后 顺着 POST 过去就好了啊。

使用 requests 库 的 Session() 方法,确实很好用,比早期直接拿 cookielib 就干方便多了。

代码

类XXX 的 login 方法用来模拟登录,就贴出这部分登录的代码好了。

class XXX:
 def login(self):

  r = self.s.get('https://nosec.org/users/sign_in')
  html = r.text
  p1 = re.compile(r'city_token" value="(.*?)"')
  res = re.search(p1,html)
  authenticity_token = str(res.group(1))
  print 'authenticity_token:',authenticity_token
  # print 'cookies',self.s.cookies
  # print s.cookies
  data = {
   'authenticity_token':authenticity_token,
   'user[login]':'xxxxx',
   'user[password]':'xxxxx'
  }
  r = self.s.post('https://nosec.org/users/sign_in',data=data)
  # print r.headers
  # print r.request.headers
  # print self.s.cookies
  print '[*] OK!'
  return True

调用了 login 方法后 下次直接用self.s.get() 请求网页就会带着 cookie 啦。

之前被思路坑了一次,被笔误也坑了一次(https 写成 http),导致我抓狂了好久才发现这个 “BUG” = =、所以还得多谢 代码,提高排 Bug 的效率 2333!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python自动化测试ConfigParser模块读写配置文件
Aug 15 Python
DataFrame中去除指定列为空的行方法
Apr 08 Python
python如何制作英文字典
Jun 25 Python
python输入多行字符串的方法总结
Jul 02 Python
django的聚合函数和aggregate、annotate方法使用详解
Jul 23 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
Aug 17 Python
python tkinter之顶层菜单、弹出菜单实例
Mar 04 Python
如何使用pandas读取txt文件中指定的列(有无标题)
Mar 05 Python
使用IPython或Spyder将省略号表示的内容完整输出
Apr 20 Python
Python如何优雅删除字符列表空字符及None元素
Jun 25 Python
python UIAutomator2使用超详细教程
Feb 19 Python
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
May 21 Python
python 容器总结整理
Apr 04 #Python
详解Python中最难理解的点-装饰器
Apr 03 #Python
JSON Web Tokens的实现原理
Apr 02 #Python
Python 40行代码实现人脸识别功能
Apr 02 #Python
Python可变参数用法实例分析
Apr 02 #Python
Python编程实现数学运算求一元二次方程的实根算法示例
Apr 02 #Python
Python中selenium实现文件上传所有方法整理总结
Apr 01 #Python
You might like
php 防止单引号,双引号在接受页面转义
2008/07/10 PHP
基于python发送邮件的乱码问题的解决办法
2013/04/25 PHP
WordPress中is_singular()函数简介
2015/02/05 PHP
php读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
2019/09/03 PHP
IE DOM实现存在的部分问题及解决方法
2009/07/25 Javascript
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
用dtree实现树形菜单 dtree使用说明
2011/10/17 Javascript
FF IE浏览器修改标签透明度的方法
2014/01/27 Javascript
浅谈Javascript中深复制
2014/12/01 Javascript
jquery $(document).ready()和window.onload的区别浅析
2015/02/04 Javascript
jQuery使用CSS()方法给指定元素同时设置多个样式
2015/03/26 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
2017/02/10 Javascript
jQuery实现的手动拖动控制进度条效果示例【测试可用】
2018/04/18 jQuery
JavaScript作用域链实例详解
2019/01/21 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
js+springMVC 提交数组数据到后台的实例
2019/09/21 Javascript
[48:26]VGJ.S vs infamous Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
Tensorflow之构建自己的图片数据集TFrecords的方法
2018/02/07 Python
Django中的forms组件实例详解
2018/11/08 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
2019/02/22 Python
python 计算数据偏差和峰度的方法
2019/06/29 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
神经网络训练采用gpu设置的方式
2021/03/03 Python
css3 2D图片转动样式可以扩充到Js当中
2014/04/29 HTML / CSS
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
2019/04/26 HTML / CSS
Weblogic的布署方式
2013/08/23 面试题
大堂副理的岗位职责范文
2014/02/17 职场文书
私人会所最新创业计划书范文
2014/03/24 职场文书
村级四风对照检查材料
2014/08/24 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
2015年度个人教学工作总结
2015/05/20 职场文书
2015年公路路政个人工作总结
2015/07/24 职场文书
Python数据可视化之用Matplotlib绘制常用图形
2021/06/03 Python
nginx 配置指令之location使用详解
2022/05/25 Servers