python爬蟲之js逆向(三)

進擊的醜胖發表於2020-01-06

目標網站 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)))

大功告成

相關文章