爬虫案例十五js逆向七麦数据
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、网站分析
- 二、代码
前言
提示:这里可以添加本文要记录的大概内容:
js逆向七麦数据
提示:以下是本篇文章正文内容,下面案例可供参考
一、网站分析
二、代码
扣的js
function fn_o(n) {
var t = '';
['66', '72', '6f', '6d', '43', '68', '61', '72', '43', '6f', '64', '65']['forEach'](function(n) {
t += unescape('%u00' + n)
});
return String["fromCharCode"](n)
}
function fn_p(t) {
t = encodeURIComponent(t)["replace"](/%([0-9A-F]{2})/g, function(n, t) {
return fn_o('0x' + t)
});
try {
return btoa(t)// 计算base64
} catch (n) {
return Buffer['from'](t)['toString']('base64')
}
}
function fn_qt(n, t) {
for (var e = (n = n['split'](''))['length'], r = t['length'], a = 'charCodeAt', i = 0; i < e; i++)
n[i] = fn_o(n[i][a](0) ^ t[(i + 10) % r][a](0));
return n['join']('')
}
function fn(t) {
var n = undefined;
// f || $ != s
s = 1079
var e, r = +new Date - (s || 0) - 1661224081041, a = [];
return undefined === t["params"] && (t["params"] = {}),
Object['keys'](t["params"])['forEach'](function(n) {
if (n == 'analysis')
return false;
t["params"]['hasOwnProperty'](n) && a['push'](t["params"][n])
}),
a = a['sort']()['join'](''),
a = fn_p(a),
a = (a += "@#" + t["url"]["replace"](t["baseURL"], "")) + ("@#" + r) + ("@#" + 3),
e = fn_p(fn_qt(a, 'xyz517cda96efgh')),
-1 == t['url']['indexOf']('analysis') && (t['url'] += (-1 != t['url']['indexOf']('?') ? '&' : '?') + 'analysis' + '=' + encodeURIComponent(e)),
e
}
// v = fn({
// baseURL: "https://api.qimai.cn",
// url: "/indexV2/getIndexRank",
// params: {
// "genre": "36",
// "setting": "0"
// },
// })
// console.log(v);
python代码
import requests
import execjs
f = open('qm.js',mode='r',encoding='utf-8')
js_code = f.read()
f.close()
js = execjs.compile(js_code)
url = "https://api.qimai.cn/indexV2/getIndexRank"
params = {
"setting": "0",
"genre": "36"
}
jiami_ming = {
"baseURL": "https://api.qimai.cn",
"url": "/indexV2/getIndexRank",
"params": params
}
mi = js.call("fn",jiami_ming)
print(mi)
params['analysis'] = mi
headers = {
"":"" #头自行添加
}
resp = requests.get(url,params=params,headers=headers)
print(resp.json())