cutetailbud/ff-ruyijs
开发工具用 Python 调用 Firefox 原版 SpiderMonkey 与 Necko 引擎执行站点 JavaScript,无需窗口和渲染器。
ruyiJS 是 Firefox 的 SpiderMonkey JS 引擎与 Necko 网络栈的 Python 绑定,提供一个无窗口的 JavaScript 执行环境,用来从 Python 运行站点脚本、离线重放抓取流程并检查网络行为。它面向纯 HTTP 客户端无法拿到结果的场景:页面脚本必须真正执行,才能得到签名、令牌或完成挑战。
工作方式的变化
Python 代码打开一个 Context(独立进程,内含 JS 引擎、DOM 与网络栈),然后调用 context.eval()。变量和函数在同一 Context 内跨调用保留;JS 函数可以返回为可调用对象,Python 函数也能暴露给页面脚本。load_page() 按传入的基准 URL 解析相对地址;页面内的 fetch/XHR 走 Necko,支持 HTTP/1.1、2、3。逻辑时钟可让定时器确定性推进,put_resource() 则可在完全无网络的情况下重放已捕获的流程。完整接口见功能说明。
引擎层面的差异
作者强调 JS 引擎和 TLS 栈是 Mozilla 原版而非模拟:SpiderMonkey(Firefox 159)执行页面脚本,TLS ClientHello 由 NSS 库生成,因此线上指纹与 Firefox 一致。README 还称传输层可在 Firefox 100–159 的 TLS 配置间切换,得到不同的 JA3/JA4 指纹。这些是作者陈述;包内示例覆盖 Akamai、DataDome 和 CreepJS 流程,但 README 也说明实际结果取决于当前网络条件和站点当下的响应。
要求与边界
- 仅支持 Windows x64,Python 3.10+(测试到 3.14);文档明确 macOS 和 Linux 尚不支持。wheel 已内置原生运行时,无需另外下载浏览器;见安装说明。
- 没有窗口、页面布局和渲染,是分析与自动化环境,不是可视化浏览器。
- README 的限制部分提醒,使用时应遵守目标站点条款和适用法律。许可证为源码可见而非 OSI 开源:个人学习和研究免费,分发修改版必须开源,商业使用需作者书面授权。商业部署前请先阅读许可证。
仓库创建于 2026-10-28,且文档目前只支持 Windows,因此非 Windows 团队应首先确认平台支持。
本文由 AI 根据项目 README 生成,更新于 2026年10月29日,以项目官方文档为准。