amotrak/onlyfans-deobfuscator
GitHub: amotrak/onlyfans-deobfuscator
针对 OnlyFans API 签名机制的 TypeScript 反混淆工具,通过 AST 分析自动提取并更新动态签名规则。
Stars: 11 | Forks: 2
# onlyfans-deobfuscator [](https://github.com/amotrak/onlyfans-deobfuscator/actions)
一组 TypeScript 工具,用于对 OnlyFans 用于签名请求的 JavaScript 代码进行反混淆。它基本上允许你拥有所谓的“动态规则”并始终保持更新,而无需使用第三方服务。对于专门对 AST 反混淆感兴趣的人,我在最难的部分添加了注释。经验证,截至 2025-01-23 仍可正常工作。

_反混淆结果 _
## 动机
OnlyFans 使用 API 保护,因此无法简单地使用自动化工具和 curl 重放和修改请求。在所有重要请求(例如登录、获取个人资料信息)中,都使用了 `sign` 标头,这是一个 SHA-1 哈希字符串,在服务器端进行验证,并且是路径/正文/user_id 与时间戳以及盐值和一些额外变换(经过混淆处理)的组合,因此 HTTP 请求仅在几分钟内有效;之后后端将拒绝接受它。
## 入门指南
使用 [dynamic-rules.json](https://github.com/amotrak/onlyfans-deobfuscator/raw/refs/heads/main/dynamic-rules.json),它每 6 小时自动更新一次。
不过,你也可以克隆仓库并按照后续步骤在本地使用此工具:
共有 3 个脚本:
- fetch_script.sh 用于获取混淆的 javascript 到输出目录
- deobfuscator.ts 用于处理混淆代码
- dynamic_rules.ts 用于生成“动态规则”
运行 `npm install`,然后通过运行 `npm run build` 编译 TypeScript。
运行以下命令以获取混淆脚本、对其进行反混淆并生成动态规则:
```
./fetch_script.sh
npm run deobfuscate
npm run dynamic-rules
```
输出将类似于这样:
```
{"end":"678a6046","start":"35748","format":"35748:{}:{:x}:678a6046","prefix":"35748","suffix":"678a6046","static_param":"jFILyC6E4flVnG5Z8MGyXPsmLDfBBcp0","remove_headers":["user_id"],"checksum_indexes":[6,32,10,1,14,9,2,36,4,20,25,34,22,1,9,24,5,33,5,14,28,18,29,7,9,36,3,17,17,32,19,26],"checksum_constant":673}
```
### 第三方库
- [Babel](https://babeljs.io/) 用于遍历和转换 JS AST
- [js-beautify](https://github.com/beautifier/js-beautify)
### 补充
OnlyFans 的混淆是你在现实网站中能见到的难度较低的混淆之一,因此这是学习如何使用 AST 转换对 javascript 进行反混淆的好方法。
以下是一些文章,可以帮助你了解 AST 反混淆的工作原理 https://steakenthusiast.github.io/categories/ 和 https://habr.com/ru/articles/720588/。此外,请阅读官方的 [babel-handbook](https://github.com/jamiebuilds/babel-handbook/),它将使你对可用功能有更深入的了解。
标签:API 安全, AST 抽象语法树, Cutter, IP 地址批量处理, JavaScript 逆向, OnlyFans, SHA-1 加密, TypeScript, Web Scraping, 代码脱壳, 前端安全, 动态规则生成, 反混淆工具, 安全插件, 开源安全工具, 签名算法分析, 网络请求伪造, 自动化攻击, 自动化攻击, 自动化爬虫, 逆向工程平台