cookies应对python反爬虫知识点详解


Posted in Python onNovember 25, 2020

在保持合理的数据采集上,使用python爬虫也并不是一件坏事情,因为在信息的交流上加快了流通的频率。今天小编为大家带来了一个稍微复杂一点的应对反爬虫的方法,那就是我们自己构造cookies。在开始正式的构造之前,我们先进行简单的分析如果不构造cookies爬虫时会出现的一些情况,相信这样更能体会出cookies的作用。

网站需要cookies才能正常返回,但是该网站的cookies过期很快,我总不能用浏览器开发者工具获取cookies,然后让程序跑一会儿,每隔几分钟再手动获取cookies,再让程序继续跑吧。如果反复这样工作,那么写爬虫也就没意义了。便开始对cookies进行分析。

从浏览器的开发者工具获取到的cookies大约有10个字段,经过反复测试,能让网站正常返回的只需要两个字段,分别为__jsluid_h=011a522dbxxxxxxxxc1ce59d336e5e60和__jsl_clearance=1581880640.794|0|trTB4c6b%2BZpvxxxxxxxx8YqCOOo%3D (中间打码处理)。

 经过测试,如果请求的时候不自己构造cookies,默认会返回__jsluid_h :

cookies应对python反爬虫知识点详解

先尝试了将那段js脚本保存下来,包装成一个html文件打开,发现浏览器不停的刷新,也并没起什么作用。那就分析一下js脚本,原来的代码是单行的,自己整理一下并加了一些变量名和log,大概是这么个样子: 

cookies应对python反爬虫知识点详解

将第16行的变量cmd打印出来看看,发现是另一段类似的脚本:

cookies应对python反爬虫知识点详解

可以看到第二段脚本已经开始设置cookies的__jsl_clearence 字段了。这些显然就是混淆后的js脚本,但是分析到这里也就大概弄明白了从发送请求到网站返回是怎么回事。之所以在本地跑这段代码会不断刷新,是因为第二行的setTimeout会让其在1.5秒后重新请求,但是我们本地没有服务处理请求让其停止,所以会不断的刷新。

而第一段脚本当中,变量y是完整的js代码 ,代码中的变量名和关键字被进行编码了,变量x存储的是用来替换的变量名和关键字,后面是解码函数。所以现在的问题变成了获取第一段脚本当中的cmd代码,执行后再获取第二段代码的document.cookie的内容即可。

可是对于python和js的交互我完全没接触过,尝试了PyExecJS和Js2Py,都没办法正常执行第一段脚本。无奈之下,我用python复现了第一段脚本,然后用Js2Py获取了cookie。在请求一次过后,构造cookies,再请求一次,就可以了:

def test():
  url = REQUEST_URL
  # url = 'https://www.baidu.com'
  request_header = get_header()
  html = requests.get(url, headers=request_header)
  print(html)
  jscode = html.text
  # print(jscode)
  # tryjs.get_cookies()为复现的js代码,以及用Js2Py获取cookies的代码
  request_cookies = try_js.get_cookies(jscode)
  request_cookies += ';__jsluid_h=' + html.cookies['__jsluid_h']
  request_header['Cookie'] = request_cookies
  print(request_header)
  html = requests.get(url, headers=request_header, timeout=5)
  print('new connection')
  print(html)
  print(html.text)

在经历重重的分析试验后,我们终于得出以上的代码成功实现了构造cookies。相信经过本篇的学习,小伙伴们又多了一种解决爬虫阻拦获取数据的cookies办法了,赶快行动起来吧。

到此这篇关于cookies应对python反爬虫知识点详解的文章就介绍到这了,更多相关如何构造cookies应对python反爬虫内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中子类继承父类的__init__方法实例
Dec 15 Python
JSON Web Tokens的实现原理
Apr 02 Python
Python实现多并发访问网站功能示例
Jun 19 Python
python嵌套字典比较值与取值的实现示例
Nov 03 Python
Python中super函数的用法
Nov 17 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
Jan 17 Python
对python3 一组数值的归一化处理方法详解
Jul 11 Python
在Pycharm中项目解释器与环境变量的设置方法
Oct 29 Python
python使用Turtle库绘制动态钟表
Nov 19 Python
Mysql数据库反向生成Django里面的models指令方式
May 18 Python
python将YUV420P文件转PNG图片格式的两种方法
Jan 22 Python
使用numpngw和matplotlib生成png动画的示例代码
Jan 24 Python
Python基于unittest实现测试用例执行
Nov 25 #Python
python反爬虫方法的优缺点分析
Nov 25 #Python
Pytest测试框架基本使用方法详解
Nov 25 #Python
python实现企业微信定时发送文本消息的实例代码
Nov 25 #Python
Python json解析库jsonpath原理及使用示例
Nov 25 #Python
搭建pypi私有仓库实现过程详解
Nov 25 #Python
Python代码覆盖率统计工具coverage.py用法详解
Nov 25 #Python
You might like
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
js操作时间(年-月-日 时-分-秒 星期几)
2010/06/20 Javascript
js String对象中常用方法小结(字符串操作)
2012/01/27 Javascript
一个简单的Ext.XTemplate的实例代码
2012/03/18 Javascript
js替代copy(示例代码)
2013/11/27 Javascript
jQuery实现的图片分组切换焦点图插件
2015/01/06 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
2016/01/18 Javascript
Bootstrap学习笔记之css样式设计(2)
2016/06/07 Javascript
jQuery插件实现可输入和自动匹配的下拉框
2016/10/24 Javascript
javascript实现复选框全选或反选
2017/02/04 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
2017/10/26 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
2019/09/12 Javascript
keep-alive不能缓存多层级路由菜单问题解决
2020/03/10 Javascript
Python3实现从指定路径查找文件的方法
2015/05/22 Python
Python应用03 使用PyQT制作视频播放器实例
2016/12/07 Python
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
Python实现从log日志中提取ip的方法【正则提取】
2018/03/31 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
python利用百度云接口实现车牌识别的示例
2020/02/21 Python
Pycharm无法打开双击没反应的问题及解决方案
2020/08/17 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
HTML5 拖放(Drag 和 Drop)详解与实例代码
2017/09/14 HTML / CSS
斯凯奇澳大利亚官网:SKECHERS澳大利亚
2018/03/31 全球购物
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
计算机应用专业应届毕业生中文求职信范文
2013/11/29 职场文书
综合实践教学反思
2014/01/31 职场文书
个人借款担保书
2014/04/02 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
中小企业员工手册范本
2015/05/14 职场文书
2015年乡镇安全生产工作总结
2015/05/19 职场文书
教师节老师寄语
2015/05/28 职场文书
员工考勤管理制度
2015/08/06 职场文书
经典祝酒词大全
2015/08/12 职场文书
导游词之无锡梅园
2019/11/28 职场文书