目标网站 http://webapi.cninfo.com.cn/overview.html#/home
首先 ,请求是post请求,没有data参数,试了一下直接复制请求头去发送post请求不对。然后看到mcode这个参数,是是加密的,ctrl+shift+r 全局搜索mcode这个参数,找到红框里面的调用方法继续研究。肯定是这个方法生成的mecode
这就是生成mcode的函数 直接拿下来复制到js文件。
生成js文件
function missjson(input) {
var keyStr = "ABCDEFGHIJKLMNOP" + "QRSTUVWXYZabcdef" + "ghijklmnopqrstuv" + "wxyz0123456789+/" + "=";
var output = "";
var chr1, chr2, chr3 = "";
var enc1, enc2, enc3, enc4 = "";
var i = 0;
do {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2)
+ keyStr.charAt(enc3) + keyStr.charAt(enc4);
chr1 = chr2 = chr3 = "";
enc1 = enc2 = enc3 = enc4 = "";
} while (i < input.length);
return output;
}
python调用js文件
import execjs
import js2py
# 执行本地的js
def get_js():
# f = open("D:/WorkSpace/MyWorkSpace/jsdemo/js/des_rsa.js",'r',encoding='UTF-8')
f = open("time_a.js", 'r', encoding='UTF-8')
line = f.readline()
htmlstr = ''
while line:
htmlstr = htmlstr + line
line = f.readline()
return htmlstr
jsstr = get_js()
ctx = execjs.compile(jsstr)
a = math.floor(time.time() / 1000)
time=js2py.eval_js('Math.floor(new Date().getTime()/1000)')
print(ctx.call("missjson",'{a}'.format(a=time)))
大功告成