巨量指数signature

巨量算数指数的signature签名和返回data的解密。

文章内容过于简单,主要是帮网友解决采集问题,不做太多说明了。

最新的已经更新,更新时间2022/5/31

@


signature生成

在这里插入图片描述
感觉没啥讲的,可以看《抖音网页版signature》,这里的sign和抖音的老版本sign非常像

这里做法比较简单,通过浏览器RPC获取sign值。
因为网友告诉我,想高价出售代码给他的人,仅仅用了RPC来调sign。。。

需要执行的主要代码:

var e={"url":"https://trendinsight.oceanengine.com/api/open/index/get_multi_keyword_hot_trend",
         "method":"POST",
         "data" : '{"keyword_list": ["%s"],"start_date": "%s","end_date": "%s","app_name": "aweme"}'};
 var h = new XMLHttpRequest;h.open(e.method, e.url, true);
 h.setRequestHeader("accept","application/json, text/plain, */*");  
 h.setRequestHeader("content-type","application/json;charset=UTF-8");
 h.send(e.data);
 return h._url

在这里插入图片描述

data解密

刚开始我顺着post的流程找
在这里插入图片描述

在这里插入图片描述

e为字符串"data",t为字符串"base64",r为字符串"utf8"
在这里插入图片描述

this._update 等于 function(e){}
在这里插入图片描述
this._mode.encrypt 等于 function(e,t,r)
在这里插入图片描述
最后的n是解密后的数据
在这里插入图片描述
我本来准备按着这个流程补一遍环境,补着补着400多行了,下班前搞不完。

所以直接找加密算法和加密方式,然后拿python现成的库来还原吧。


在该文件搜 decrypt ,找了不少地方。最后断点找到这里
在这里插入图片描述

断点可以发现是AES-128-cfb加密,继续往下走
在这里插入图片描述
iv = "amlheW91LHFpYW53"
key = 'anN2bXA2NjYsamlh'
segment_size=128
mode=AES.MODE_CFB
在这里插入图片描述


python还原AES

import base64
from Crypto.Cipher import AES

# AES-128
def decrtptlx(String):
    iv = "amlheW91LHFpYW53".encode(encoding='utf-8')
    key = 'anN2bXA2NjYsamlh'.encode(encoding='utf-8')
    cryptor = AES.new(key=key, mode=AES.MODE_CFB, IV=iv, segment_size=128)
    decode = base64.b64decode(String)
    plain_text = cryptor.decrypt(decode)
    print(plain_text)
    return plain_text

更新说明

2022/06/01

经调试发现现在多了signature和xbogus参数,但是不影响我们RPC。
目前通过Promise可以取出异步函数onreadystatechange中的响应内容。

完整代码

上面步骤是最初版的,不想改了,因为流程差不多,代码已经更新。

【温馨提示:此处隐藏内容需要付费订阅后才能查看!】

点赞
  1. Lx Lx说道:
    Google Chrome Windows 10
    此版本已经失效,可检索查看新文章

发表回复