python爬虫之js逆向(三)

目标网站 http://webapi.cninfo.com.cn/overview.html#/home

python爬虫之js逆向(三)_第1张图片
首先 ,请求是post请求,没有data参数,试了一下直接复制请求头去发送post请求不对。然后看到mcode这个参数,是是加密的,ctrl+shift+r 全局搜索mcode这个参数,找到红框里面的调用方法继续研究。肯定是这个方法生成的mecode

python爬虫之js逆向(三)_第2张图片

python爬虫之js逆向(三)_第3张图片

这就是生成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)))

大功告成

你可能感兴趣的:(python,python)