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()

 

 源代码截图如下:

 

posted @ 2021-12-08 15:16  乾坤伯格  阅读(118)  评论(0)    收藏  举报