雪重 Python Developer 知识 汗水 灵感 机遇
2021年8月14日   spider js逆向

入门-某度指数解密方法

最近某度指数更新了数据请求接口以及http->https,目前解密方法还和19年一样

1.抓包分析

image-20210814231230481

data那行为加密的数据

image-20210814231415144

网页上我们能看到每天的指数明文值

也就是说接口返回数据后,一定经过js解密后渲染,最终呈现了明文指数值

2.定位

全局搜搜搜接口返回数据的字段名称"userIndexes",会在main js中找到这样一段代码

(t.userIndexes) && t.userIndexes.forEach(function(t, i) { var a = [] , r = [] , o = []; e && (a = H.a.decrypt(e.data, t.all.data).split(","),

已经很明显了,和接口返回的数据字段一一对应,“userIndexes”,“all”,“data”,关键就在decrypt这个方法里

decrypt: function(t, e) { if (t) { // 解密逻辑 return r.join("") } }

e就是接口返回数据的加密部分,t的值来自于接口ptbk?uniqid=***,uniqid来于自加密数据的接口

3.python实现解密方法

def decrypt_func(key, data):
    a = key
    i = data
    n = {}
    s = []
    for o in range(len(a)//2):
        n[a[o]] = a[len(a)//2 + o]
    for r in range(len(data)):
        s.append(n[i[r]])
    dd = ''.join(s).split(',')
    return dd