JS爬虫逆向的的一次照猫画虎的实践
本次来进行JS爬虫逆向的实践,当然本次日志是边敲代码边写博客。
研究的对象是企名科技的创业服务网页:
url='https://www.qimingpian.cn/finosda/project/einvestment'

(1)先用最朴素的谷歌浏览器方法
按F12,查看Network,选Fetch/XHR,刷新,出现investEventVip、industryFieldVip两个,应该关键参数就在这两个里面了,找到Request Headers中的参数,写入python爬虫的headers、
先试industryFieldVip:

PS: 'Content-Length':'68',这行要注释掉,不然无法得到返回值。
#coding=utf-8 import requests url='https://www.qimingpian.cn/finosda/project/einvestment' headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36', 'Accept':'application/json, text/plain, */*', 'Accept-Encoding':'gzip, deflate, br', 'Connection':'keep-alive', #'Content-Length':'13', 'Content-Type':'application/x-www-form-urlencoded', 'Host':'vipapi.qimingpian.cn', 'Origin':'https://www.qimingpian.cn', 'sec-ch-ua-mobile':'?0', 'sec-ch-ua-platform':'"Windows"', 'Sec-Fetch-Dest':'empty', 'Sec-Fetch-Mode':'cors', 'Sec-Fetch-Site':'same-site' } hideurl='https://vipapi.qimingpian.cn/Search/industryFieldVi' res01=requests.post(url=hideurl,headers=headers) print(res01.cookies) print(res01.text)
运行结果:

改成investEventVip,这里面的Datalist也看着更靠谱,找到对应网页的数据接口


果然返回json数据。这个encrypt_data就是加密返回的关键数据。
(2)在js中分析encrypt_data

经查找,只有一个app.85cce....js的文件中encrypt_data


将encrypt_data都打上断点,



重新刷新程序,到这里停止住了:

试着找一下,t。
点这个下一步,(不是蓝色的那个)

打印o函数。




这个 JSON.parse(s("5e5062e82f15fe4ca9d24bc5", a.a.decode(t), 0, 0, "012345677890123", 1)) 便是返回的关键。
在console控制台打出JSON.parse,看到了解密后的数据。

可以看出,t就是那个加密后的字符串。

因此,最关键的就是function o(t)、f s(t,e,i,n,a,s)、f decode(t),甭管它们是啥,直接拿来主义用就对了。

这几个函数便是构造的关键。
(3)利用python的execjs函数复现js
将那三个函数(稍加改动),保存为spyder02.js。利用execjs得到数据。值得注意,要把JSON.parse()改为 .toString()

源代码截图如下:


浙公网安备 33010602011771号