爬虫案例十js逆向合肥滨湖会展中心网
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、网站分析
- 二、代码
- 总结
前言
提示:这里可以添加本文要记录的大概内容:
爬虫案例十js逆向合肥滨湖会展中心网
提示:以下是本篇文章正文内容,下面案例可供参考
一、网站分析
二、代码
python代码
"""
网站:https://www.hfhuizhan.com/schedule#
目标:
"""
import requests
import execjs
import json
url = "https://www.hfhuizhan.com/prod-api/hfhz-exhibition/back/exhibition/listExhibitionNotPage"
headers = {
"":""#自行添加头
}
form_data = {
"yyyyMM": "2025-03"
}
j_fdata = json.dumps(form_data,separators=(',', ':'))
# print(j_fdata) # {"yyyyMM":"2025-03"}
f = open('hf.js',mode='r',encoding='utf-8')
js_code = f.read()
js = execjs.compile(js_code)
f_data = js.call("sr",j_fdata) # sY9u74F/amMJPfWSxqBnSCFIWBTU0OYMY3zydpKvpto=
form_data = {
"data": f_data
}
resp = requests.post(url,headers=headers,data=json.dumps(form_data,separators=(',', ':')))
print(resp.text)
data = js.call("mr",resp.text)
print(data)
# {"code":200,"data":[{"status":0,"createdTime":"2024-10-18 09:15:17","updatedTime":"2025-02-06 11:19:26","createdBy":null,"createdName":null,"updatedBy":null,"updatedName":null,"id":"1847083998959865858","name":"2025年亚太橡塑展合肥站","title":null,"organizer":"安徽金诺国际会展服务有限公司","measure":10000.00,"undertaker":"安徽金诺国际会展服务有限公司","ip":null,"holdingForm":"1",
扣的js代码
var CryptoJS = require("crypto-js");
var jt = {};
jt.a = CryptoJS;
var Zt = "$shanghaidianqi$";
var Vt = "2023050814260000";
var sr = function(Xe) {
var ot = jt.a.enc.Utf8.parse(Zt)
, Kt = jt.a.enc.Utf8.parse(Vt)
, kt = jt.a.AES.encrypt(Xe, ot, {
iv: Kt,
mode: jt.a.mode.CBC,
padding: jt.a.pad.Pkcs7
});
return kt.toString()
}
var mr = function(Xe) {
var ot = jt.a.enc.Utf8.parse(Zt)
, Kt = jt.a.enc.Utf8.parse(Vt)
, kt = jt.a.AES.decrypt(Xe, ot, {
iv: Kt,
mode: jt.a.mode.CBC,
padding: jt.a.pad.Pkcs7
})
, yr = kt.toString(jt.a.enc.Utf8);
return yr.toString()
}
总结
for (; ; )
switch (Jt.prev = Jt.next) { 这是一个异步框架的特征..此处不要再单步调试了.
对每个case打上断点,在case里面可以单步调试
Jt.prev代表上一个case 来源
Jt.next代表下一个case 去哪一个case
Jt.sent代表上一个case的结果