Python调用,爬虫JS逆向——ajax类型数据
JS逆向-加密数据
加密数据是无法通过在后台找到接口进行请求来获取数据
目标网站:https://www.qimingpian.com/finosda/project/pinvestment
1. 通过查找无法找到接口位置
2.查看fetch/xhr查看动态请求(对加密数据进行查找操作)找到我们需要的JS文件。
3. 点击进入源代码-点击美化输出。
4.搜索刚才点关键字参数,进行查找位置(其他位置基本是上传图片),打断点。
5.F5刷新界面,进入断点位置,进行单步点击,找到参数传入位置。
6.encrypt_data参数传入变化,将片段截取到本地JS中进行调试,补齐缺失参数。
6.encrypt_data参数传入变化,将片段截取到本地JS中进行调试,补齐缺失参数。
- data就是在网站中找到encrypt_data,这是需要传入的参数,在进行运行补齐参数。
6.运行时会报错,缺少o到方法,我们对其进行补齐操作,在网站中将鼠标放到o方法上点击,就可以找到o方法位置。
7.点击o后点中括号,找到整个方法结尾到位置,将整个方法复制到JS文件中。
8.在将JS运行,继续补齐缺失的方法,缺少a.a.decode方法,可以修改为decode123。
9.进入到decode方法中,将方法进行复制Js文件中,将方法名修改为decode123。
10.再次进行运行Js文件,补齐缺失参数和方法,c 可以在控制台直接输入,找到参数在写入decode123中。
10.再次进行运行Js文件,补齐缺失参数和方法,c 可以在控制台直接输入,找到参数在写入decode123中。
11.再次进行运行Js文件,无缺失参数即可获得数据,因为data是随时更新的,我们要将断点去除,刷新网站找到encrypt_data参数进行修改。
- 失效的data参数。
- 重新请求的参数获取数据。
Python-调用部分
import requests
import execjs
# 请求加密参数,对其进行js解密,获取数据。
url = 'https://vipapi.qimingpian.cn/DataList/productListVip'
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
}
data = {
'time_interval':'',
'tag':'',
'tag_type': '',
'province': '',
'lunci': '',
'page': '1',
'num': '20',
'unionid': '',
}
res =requests.get(url, headers=headers,data=data)
e = res.json()['encrypt_data']
# 打开js文件,方法s中传入参数e,请求回数据。
with open('./qxkj.js','r',encoding='utf-8') as f:
jscode = f.read()
ctx = execjs.compile(jscode)
call_a = ctx.call('s',e)
print(e)