最近很焦虑...觉得爬虫越来越难,遇到js加密基本都是歇菜,一开始还可以用selenium、pyppeteer啥来获取一下,且不说慢和耗资源的问题,有的网站直接给你检测(taobao、hbwjw等),搞不好网段还给你封掉,还是得学习啊,边学边记录吧,觉得有用看到了点个赞哦!有不足的也要提醒我哟!笔芯~
以(https://www.mps.gov.cn/)为例(仅供学习交流,请勿用作商用):
1. 打开chrome抓个包(注:一定要选上preserve log选项,此处有重定向)
可以看到第一次请求首页返回状态码是521,然后自动重载了页面后成了200,所以我们对比下两次的请求
很明显两次请求头在cookie上有变化,猜测是cookie不一决定了不同的请求结果,我们再用requests模拟一下请求看看(这里cookie的决定参数只有两个,所以我删了一下,可自行尝试)
由此我们可判断关键是获取参数__jsl_clearance的值(__jsluid_s的值第一次请求已返回),第二次请求乱码:可以用requests.content.decode("utf-8")就好啦!
2. 分析第一次响应内容
把script标签里的内容拿出来,格式化,这段代码的关键是eval那块,但是没有返回值,所以我们修改一下
拿到执行后的数据,终于看到了生成cookie的js代码了?。?!
3. 修改加密参数js块
因为上图不是很友好,所以我们再改改...
执行结果我就不放了,已经破案了,兄弟们?。?!快去验证一下!
哈哈哈哈,最后一个图放我的demo吧,用execjs来执行js
码字不易,跪求各路兄弟点赞?。?!要不我爆个照吧。。
嘿嘿.....想啥呢?!在线撸猫吧还是?。。?!