
打开改网页发明为第二页真正的数据源,经由过程仿造请求可以抓取每一页的数据。

很多网页的运维者经由过程组合以上几种手段,然后形成一套反爬策略,就像之前碰着过一个复杂收集传输+加快活+cookies时效的反爬手段。
7. 加快活 :有些网站应用了加快活的办事,在拜访之前先断定客户端的cookie正不精确。如不雅不精确,返回521状况码,set-cookie并且返回一段js代码经由过程浏览器履行后又可以生成一个cookie,只有这两个cookie一路发送给办事器,才会返回精确的网页内容。
解决办法 :将浏览器返回的js代码放在一个字符串中,然后应用nodejs对这段代码进行反紧缩,然后对局部的信息进行解密,获得关键信息放入下一次拜访请求的头晨中。
案例:加快活
如许的一个交互过程仅仅用python的requests库是解决不了的,经由查阅材料,有两种解决办法:
第一种将返回的set-cookie获取到之后再经由过程脚本履行返回的eval加密的js代码,将代码中生成的cookie与之前set-cookie结合发送给办事器就可以返回精确的内容,即状况码大年夜521变成了200。

类似于这种:

切记,放在requests中拜访的headers信息必定要和你操控的浏览器headers信息一致,因为办事器端也会检查cookies与headers信息是否一致
这里我们就须要对这段JS做下修改,假设我们先把这段JS代码存在了string sHtmlJs这个字符串变量里,我们须要把eval这里履行的结不雅提掏出来,把eval调换成 return,然后把全部代码放到一个JS函数里,方法如下:
案例:拉勾网

显而易见,这个dc就是我们想要的cookie,履行JS,让函数返回DC就OK了。
解密后的代码如下:


经由过程不雅察代码发清楚明了一段:

当办事器发明浏览器的头晨是_phantom或者__phantommas就让浏览器进行逝世轮回,即阻拦用selenium操控phantomjs来拜访网页。
至此两端加快活cookie如下:

这个破解办法很麻烦不建议用,所以我想出了第二种办法
第二种办法就是经由过程selenium的webdriver模块控制浏览器主动拜访网页然后输出浏览器头部信息中的cookie,封装在一个字典中,将其经由过程requests中的jar模块转换成cookiejar放入下一次拜访的request中就可以持续拜访,因为cookie的时效大年夜约一个小时阁下。
以下是处理主动生成一个新的有效cookie的代码:

最厉害的武功是融合贯通,那么最厉害的反爬策略也就是组合今朝有的各类反爬手段,当然也不是无法破解,这就须要我们对各个反爬技巧及道理都很清跋扈,梳理清跋扈办事器的反爬逻辑,然后再会招拆招,就可以让我们的爬虫无孔不入。
感谢浏览!
推荐阅读
2017年架构师最重要的48个小时 | 8折倒计时 云计算正在逐渐获得企业的青睐,然则企业本地的IT基本举措措施仍然>>>详细阅读
地址:http://www.17bianji.com/lsqh/38283.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示