1. python部分:
# -*- coding:utf-8 -*-
# @Time : 2024/4/14 17:57
# @Author : 快乐的小猴子
# @Version :
# @Function :
import requests
import json
import subprocess
from functools import partial # 专门用来固定参数的
subprocess.Popen = partial(subprocess.Popen, encoding = "utf-8")
import execjs
with open('建设库.js', 'r', encoding='utf-8') as f:
json_data = f.read()
context = execjs.compile(json_data)
res = context.call('main')
url = 'https://capi.jiansheku.com/nationzj/jskBid/page'
headers = {
"Content-Type": "application/json",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Referer": "https://www.jiansheku.com/",
"Sign": res['Sign'],
"Timestamp": str(res['Timestamp'])
}
# print(headers)
# exit()
data = {
"page": {
"page": 1,
"limit": 20,
"field": ""
},
"jskBidQueryDto": {
"province": "",
"city": "",
"county": "",
"tenderStage": "",
"tenderingManner": "",
"queryScope": "",
"projectType": "",
"subjectMatter": "",
"source": "",
"phonePoint": ""
},
"keyword": "",
"keywordNot": ""
}
resp = requests.get(url, headers=headers, data=json.dumps(data, separators=(',', ':')))
print(resp.json())
2. JavaScript部分:
let crypto = require('crypto');
function do_md5(e) {
return crypto.createHash('md5').update(e.toString()).digest('hex');
}
var f = (new Date).getTime();
var data = {
"page": {
"page": 1,
"limit": 20,
"field": ""
},
"jskBidQueryDto": {
"province": "",
"city": "",
"county": "",
"tenderStage": "",
"tenderingManner": "",
"queryScope": "",
"projectType": "",
"subjectMatter": "",
"source": "",
"phonePoint": ""
},
"keyword": "",
"keywordNot": ""
};
var ku = function e(t) {
var n;
if (Array.isArray(t)) {
for (var r in n = new Array,
t) {
var o = t[r];
for (var i in o)
null == o[i] ? delete t[r][i] : Array.isArray(t[r][i]) && e(t[r][i])
}
return n = t,
JSON.stringify(n).replace(/^(\s|")+|(\s|")+$/g, "")
}
return n = t && t.constructor === Object ? JSON.stringify(t) : t
};
var Ou = function(e) {
var t = new Array
, n = 0;
for (var i in e)
t[n] = i,
n++;
return t.sort()
};
var Cu = function(e) {
var t = Ou(e)
, n = "";
for (var i in t) {
var r = ku(e[t[i]]);
null != r && "" != r.toString() && (n += t[i] + "=" + r + "&")
}
return n
};
var Su = function(e, t, time) {
var n = t + e + time;
return n = do_md5(n)
};
function main() {
var sign = (param = data,
time = f,
t = Cu(param),
Su("ghaepVf6IhcHmgnk4NCTXLApxQkBcvh1", Su("mwMlWOdyM7OXbjzQPulT1ndRZIAjShDB", Su("ZuSj0gwgsKXP4fTEz55oAG2q2p1SVGKK", t, time), time), time));
return {'Sign': sign, 'Timestamp': f,}
};
// console.log(main());
执行结果截图: