cocacola-dev/onlyfans-reverse

GitHub: cocacola-dev/onlyfans-reverse

通过执行而非解析 OnlyFans 混淆脚本来提取 API 请求签名参数,解决目标站点定期重混淆导致提取器频繁失效的问题。

Stars: 0 | Forks: 0

# OnlyFans 逆向 从 OnlyFans 混淆的挑战脚本 (`2313.js`) 中恢复 OnlyFans 的请求签名配置,并针对实时公共 API 进行验证。 每当 OnlyFans 对其脚本重新进行混淆时,签名参数就会发生变化,因此提取器被设计为**运行脚本自身的逻辑**,而不是对其(被故意打乱的)源码进行模式匹配 —— 请参阅 [它如何保持鲁棒性](#how-it-stays-robust)。 ## 工作原理 ``` mod.py ──fetch──▶ _2313.js ──node extract_config.js──▶ result.json ──▶ signing params │ ▲ └── 24h cache: reuse result.json if fresh ───────────────┘ ``` | 文件 | 作用 | | --- | --- | | `mod.py` | 驱动程序。获取实时的 `2313.js`,进行缓存,并调用提取器。 | | `extract_config.js` | 逆向器。反混淆脚本并写入 `result.json`。Node.js 环境。 | | `test_sign.py` | 对发送到**公共** OF endpoint 的请求进行签名,并检查其是否被接受 (`200`)。 | | `result.json` | 输出。包含 `staticParam`、`start`、`end`、`checksumIndexes`、`checksumConstant`。在运行时生成。 | ### 签名算法 ``` payload = staticParam + "\n" + time_ms + "\n" + path + "\n" + user_id hash = sha1(payload).hexdigest() checksum = abs( sum(hash[i] for i in checksumIndexes) + checksumConstant ) sign = f"{start}:{hash}:{checksum:x}:{end}" ``` ## 环境要求 - **Python 3.9+** - 你的 `PATH` 中的 **Node.js**(供 `extract_config.js` 使用) ## 设置 ``` python -m venv .venv # Windows: .\.venv\Scripts\activate # Unix: source .venv/bin/activate pip install -r requirements.txt ``` ## 用法 ``` # 获取实时脚本并生成 result.json (复用 <24小时 的缓存): python mod.py # 强制全新提取: # (先删除 result.json,然后运行 mod.py) # 直接在任意已保存的脚本上运行提取器: node extract_config.js # 验证 result.json 是否生成被接受的签名: python test_sign.py ``` ## 它如何保持鲁棒性 OnlyFans 会定期对其 `2313.js` 重新运行混淆器。实际上,这只会**重命名标识符**并**重新排序 decoder-call 的参数**(例如 `i(n-744, W)` 变为 `i(W- -290, n)`)—— 这是同一个使用了新随机种子的混淆器。任何硬编码变量名或参数顺序的提取器在每次重新混淆后都会失效。 `extract_config.js` 完全避免了这种情况: - 它**引导启动脚本自带的字符串解码器**并**执行**它,而不是手动重新推导解码后的字符串。 - 它通过**大括号匹配结构**来提取所需的代码片段,而不是通过匹配特定的压缩名称。 - 它将 checksum 重建为一个**实时函数**,并通过**黑盒探测**(有限差分法)来恢复索引和常量 —— 而不是在源码中计算 token。 - 然后,它针对数百个随机输入,在站点自身的 checksum 上**自验证**恢复出的参数,并且如果出现任何不匹配,它都会**拒绝输出** `result.json`。 结果是:重命名和重新排序都能直接正常运行。唯一会破坏它的因素是真正全新的反自动化措施(例如环境/DOM/`toString` 陷阱),在这种情况下,自检机制会明确报错并停止,而不是写出一个损坏的配置。 ## 免责声明 本项目仅用于**教育和研究目的** —— 旨在了解客户端的请求签名 / 反爬虫混淆。它仅读取公开可用的数据,不会绕过身份验证、处理凭证或进行大规模抓取。 使用它可能违反 OnlyFans 的服务条款;您需对如何使用它自行承担责任。按“原样”提供,不提供任何担保。本项目与 OnlyFans 无关,也未获得其认可。 ## 许可证 [MIT](LICENSE)
标签:API 接口, GNU通用公共许可证, MITM代理, Node.js, Python, 云资产清单, 反混淆, 数字取证, 无后门, 自动化脚本, 自定义脚本, 逆向工具, 逆向工程