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的Scrapy框架十分钟爬取美女图
Dec 26 Python
Python中将dataframe转换为字典的实例
Apr 13 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
May 04 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
Apr 01 Python
使用selenium模拟登录解决滑块验证问题的实现
May 10 Python
python之信息加密题目详解
Jun 26 Python
Python实现Selenium自动化Page模式
Jul 14 Python
pandas中遍历dataframe的每一个元素的实现
Oct 23 Python
基于python SMTP实现自动发送邮件教程解析
Jun 02 Python
python调用win32接口进行截图的示例
Nov 11 Python
python 爬虫网页登陆的简单实现
Nov 30 Python
python数字图像处理之图像自动阈值分割示例
Jun 28 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统计目录下的文件总数及代码行数(去除注释及空行)
2011/01/17 PHP
ajax取消挂起请求的处理方法
2013/03/18 PHP
遭遇php的in_array低性能问题
2013/09/17 PHP
详解PHP导入导出CSV文件
2014/11/03 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
2014/11/29 PHP
php图像验证码生成代码
2017/06/08 PHP
JQuery实现鼠标滑过显示导航下拉列表
2013/09/12 Javascript
使用js判断控件是否获得焦点
2014/01/03 Javascript
js无刷新操作table的行和列
2014/03/27 Javascript
JavaScript和JQuery的鼠标mouse事件冒泡处理
2015/06/19 Javascript
jQuery 实现评论等级好评差评特效
2016/05/06 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
详解解决Vue相同路由参数不同不会刷新的问题
2018/10/12 Javascript
jQuery利用FormData上传文件实现批量上传
2018/12/04 jQuery
JavaScript实现的级联算法示例【省市二级联动功能】
2018/12/25 Javascript
JavaScript监听触摸事件代码实例
2019/12/30 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
[03:33]TI9战队采访 - Infamous
2019/08/20 DOTA
win7 下搭建sublime的python开发环境的配置方法
2014/06/18 Python
Python中的defaultdict模块和namedtuple模块的简单入门指南
2015/04/01 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
2018/09/17 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
2018/12/18 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
2020/02/21 Python
Python telnet登陆功能实现代码
2020/04/16 Python
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
JD Sports西班牙:英国领先的运动服装公司
2020/01/06 全球购物
普天C++笔试题
2016/03/20 面试题
生产现场工艺工程师岗位职责
2013/11/28 职场文书
护士演讲稿范文
2014/01/05 职场文书
学校文明单位申报材料
2014/05/06 职场文书
公务员群众路线心得体会
2014/11/03 职场文书
青年教师个人总结
2015/02/11 职场文书
2015年春训学习心得体会范文
2015/03/09 职场文书
安全员岗位职责范本
2015/04/11 职场文书
通知书大全
2015/04/27 职场文书
vue组件vue-esign实现电子签名
2022/04/21 Vue.js