antispider9 js逆向
网址:https://antispider9.scrape.center/
JavaScript 反爬,核心加密逻辑使用位置移动数组混淆,同时设置格式化保护,适合 AST 分析。
需要注意两点:
1.移动数组混淆
2.格式化保护
调试分析
1.定位到数据url,根据调用链发现 onFetchData 函数
2.断点调试可知 e 是我们需要的token值 ,逆向e 的生成函数,则可以解决问题
3. 函数逆向 获取e
根据观察,生成e 需要 i[“a”] 即 u函数,与固定值 ‘/api/movie’,u函数是关键
u函数
函数有些部分不容易看懂,使用了 位置移动数组混淆;我们可以通过调试,将正常代码逆向还原。需要一点js语法知识。
下图说明了移动数组 n 与 i/t 函数 生成的内容
i/t函数中还设置了格式化保护 搜索 RegExp 可以定位位置
此段代码 扣取下来 到 vscode上 运行会报错;占用内存过大;
但是并不影响我们调试与逆向u函数。i函数,我们可以不关心。
分析得a是我们需要的token值,其过程为:
1.固定值 ‘/api/movie’与时间 r 合成数组n 进行,用",拼接得到数据,“/api/movie,{r}” sha1加密 得到c
2.c与时间r 用","拼接 进行base64数据格式转换得到a
使用python逆向 与得到的a值相同
参考代码
import base64
from hashlib import sha1
import time
t=int(time.time())
# t='1687766174'
s=f'/api/movie,{t}'
sha1_encode=sha1(s.encode("utf-8")).hexdigest()
data=f"{sha1_encode},{t}"
token=a=base64.b64encode(data.encode()).decode()
print(token)