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运算符重载用法实例分析
Jun 01 Python
python 日期排序的实例代码
Jul 11 Python
django实现支付宝支付实例讲解
Oct 17 Python
python 二维矩阵转三维矩阵示例
Nov 30 Python
Django admin管理工具TabularInline类用法详解
May 14 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
Jun 04 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
Oct 12 Python
python图片合成的示例
Nov 09 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
Nov 17 Python
python 用递归实现通用爬虫解析器
Apr 16 Python
Python用tkinter实现自定义记事本的方法详解
Mar 31 Python
python pygame 开发五子棋双人对弈
May 02 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
在线短消息收发的程序,不用数据库
2006/10/09 PHP
PHP动态输出JavaScript代码实例
2015/02/12 PHP
使用phpstorm和xdebug实现远程调试的方法
2015/12/29 PHP
Symfony的安装和配置方法
2016/03/17 PHP
PHP ElasticSearch做搜索实例讲解
2020/02/05 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
2015/03/04 Javascript
Javascript中replace()小结
2015/09/30 Javascript
javascript自动切换焦点控制效果完整实例
2016/02/02 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
Angular2内置指令NgFor和NgIf详解
2016/08/03 Javascript
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
2017/06/19 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
2020/06/04 Javascript
0基础学习前端开发的一些建议
2020/07/14 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
nuxt.js服务端渲染中axios和proxy代理的配置操作
2020/11/06 Javascript
在Python的web框架中配置app的教程
2015/04/30 Python
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
Python 多线程的实例详解
2017/09/07 Python
python之pandas用法大全
2018/03/13 Python
浅谈Python中的作用域规则和闭包
2018/03/20 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
自适应线性神经网络Adaline的python实现详解
2019/09/30 Python
如何在Win10系统使用Python3连接Hive
2020/10/15 Python
python实现b站直播自动发送弹幕功能
2021/02/20 Python
投标授权委托书范文
2014/08/02 职场文书
二手房购房协议书范本
2014/10/05 职场文书
公安个人四风问题对照检查及整改措施
2014/10/28 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
2015年扶贫帮困工作总结
2015/05/20 职场文书
婚礼上证婚人致辞
2015/07/28 职场文书
美德少年事迹材料(2016推荐版)
2016/02/25 职场文书
解决Redis启动警告问题
2022/02/24 Redis