ruyiJS 是一个由 Python 控制的 JavaScript 运行环境。它使用 Firefox 组件,提供持续保存状态的 Context、DOM 与网络 API。当前文档限定 Windows x64,且明确没有浏览器窗口、完整页面布局和渲染。它适合研究脚本执行后的结果;需要检查网页实际外观时,应选择具有渲染能力的工具。依据见官方仓库。
浏览器自动化的需求往往更广。在一条本地 AI Agent 的 Reddit 讨论中,kvyb 提出的需求包括复杂 JavaScript 页面、认证、翻页和表单。它说明了任务为什么需要区分层次,并不是 ruyiJS 的使用评价。后文会介绍 Tabbit Browser 如何承接需要真实浏览器和现有登录状态的任务。
本文于 2026 年 10 月 28 日核对公开文档,未安装测试 ruyiJS,也没有进行反爬或性能测试。PyPI 0.1.0 发布于 10 月 22 日,GitHub 仓库创建于 10 月 26 日,不能把仓库创建时间写成首次发布。调研时 README 与当前 PyPI 页面显示 0.1.6。
关键结论
ruyiJS 提供 Python 控制的脚本与 Web API 环境,不是完整的可视化 Firefox。
README 将 SpiderMonkey、Necko 分别作为 JavaScript 和网络组件;Firefox 158 的版本描述来自项目方,本文未独立审计。
先检查 Windows x64 与 Python 3.10+ 的部署要求,再评估功能。
持续状态、离线资源和逻辑时钟适合构造脚本回放,但仍要验证实际脚本兼容性。
按需要的结果选择工具:计算值、渲染页面或经人工复核的浏览器任务。
ruyiJS 能力速览
| 维度 | 官方文档描述 | 需要注意 |
|---|---|---|
| 宿主 | Windows x64、Python 3.10+ | 未公布原生 macOS、Linux 安装支持 |
| JavaScript | SpiderMonkey,Context 内状态持续 | 不能推导为完整 Firefox 兼容 |
| 网络 | Necko、fetch/XHR、独立代理 | 请求依赖网络和目标站响应 |
| 页面环境 | DOM 与有边界的 Web API 子系统 | 有 API 不等于有完整布局和渲染 |
| 回放 | put_resource()、逻辑时钟、日志 | 需保存输入并显式推进调度 |
| UI 验证 | 没有完整渲染器 | 截图和视觉断言应使用渲染浏览器 |
来源:README。JavaScript 引擎与渲染引擎的区别,可参考浏览器引擎说明。
Context 实际负责什么
文档架构是 Python → 独立 Context 进程 → SpiderMonkey、Web API 与 Necko。同一 Context 中,多次 eval() 可以访问之前留下的变量和函数。Python 可以传入数据、调用函数,再拿回结果。
因此,验收问题也不同。UI 测试关心按钮是否可见、是否能点击;ruyiJS 工作流可能只关心脚本加载后某个函数的返回值。Agent 浏览器说明讨论了额外的规划与交互层。没有证据表明安装 ruyiJS 就会得到一个 LLM 任务规划器。
README 列出 DOM、Canvas 相关 API、Workers 和 iframe。这些是子系统范围,不能据此承诺与完整浏览器行为相同。脚本能查询 DOM,不代表运行时会计算页面实际布局。
从离线小例子开始
在文档支持的 Windows x64 环境中,先建立独立 Python 环境,再安装固定版本:
python -m venv .venv
.venv\Scripts\activate
python -m pip install ruyijs==0.1.6这些命令依据文档整理,不是本文的安装日志。执行前核对 PyPI 当前要求。先用不联网的运算验证 Python 与 JavaScript 通路:
from ruyijs import Context
with Context() as context:
context.eval("let count = 40")
print(context.eval("count += 2"))文档预期输出为 42。再加载自己提供的 HTML 与脚本资源:
from ruyijs import Context
with Context() as context:
context.put_resource("https://example.test/app.js", "window.answer = 42")
context.load_page("https://example.test/", '''
<script src="/app.js"></script><p id="message">hello</p>
''')
print(context.eval("document.querySelector('#message').textContent"))
print(context.eval("answer"))0.1.0 文档给出这一模式,预期分别为 hello、42。load_page(url, html) 接收基础地址和 HTML,相对资源按该地址解析;它与当前 README 中单独列出的顶层导航 navigate(url) 不同。
状态、时钟和请求需要显式处理
在首个页面脚本执行前调用 context.configure_fingerprint(profile),提交 Navigator、Screen、视口、时区等配置。配置存在不代表站点一定接受这套环境。
同一 Context 会保留状态。需要干净环境时重新创建 Context。PyPI 文档说明,活跃的 JSObject、JSFunction 引用随所属 Context 关闭而失效。
定时任务由宿主推进。逻辑时钟示例通过 advance(10) 推进计时器;系统时钟模式可能实际等待。网络 Promise 不能只调用一次短暂推进就认定完成,应设置明确条件、截止时间并处理错误。
put_resource() 适合提供固定响应、构造离线样本。完整回放仍依赖完整输入;保存 HTML、脚本版本、配置和预期结果。net_log() 有助于区分网络请求失败和脚本错误,网页兼容性排查也强调分层定位。
先用局限筛选工具
需要元素几何位置、截图或视觉回归时,缺少渲染就是决定性限制。设置 viewport 配置不会新增渲染器。
平台也是前置条件。更新日志中的 Wine 导航修复,不能扩大解释为原生 Linux 支持。本文调研环境为 macOS,没有执行受支持平台上的安装验证。
仓库列出的反爬示例是维护者演示,不是独立基准,也不能保证后续站点响应。本文没有成功率、速度或内存对比。星数同样不能证明可靠性。
仓库声明 MPL-2.0,README 另外提出再分发和商业使用前联系作者的礼貌请求。集成前阅读当前 LICENSE 和项目声明,本文不替具体部署作授权判断。
用 Tabbit 完成真实网页任务
假设任务是打开多个资料页,利用现有登录状态阅读,然后返回带来源链接的对比表。需要交付的是可核对的资料整理。Tabbit 国内版 v1.13 更新日志明确公布 CLI 集成,可让 Codex、Cursor、Workbuddy 等 Code Agent 操作浏览器,并共享用户登录状态。
完成当前客户端所需的集成配置后,可以给 Agent 以下只读指令。这是建议用法,没有声称本文完成了这次运行:
在 Tabbit 中打开我提供的文档页面。
比较支持平台、安装要求和页面渲染能力。
每条结论附来源 URL 和页面可见的版本或日期。
缺失信息写未知。不要提交表单或修改账号设置。
Tabbit 工作流文章提供更多案例,产品说明介绍其定位。使用仍需集成配置、站点访问权限和结果复核。引用的更新日志对应国内桌面版,国际版和手机端应分别检查支持情况。
登录复用也不等于免维护。在一条 Firefox 自动化讨论中,Deep_Ad1959 提到失效会话和偶发同意弹窗导致任务不稳定。这是一般自动化经验,不是 Tabbit 或 ruyiJS 测试。浏览器配置文件说明可帮助界定会话数据。
Tabbit 的浏览器操控不等于 ruyiJS 的 Python API。本文没有证据证明 Tabbit 内嵌 ruyiJS、提供相同指纹配置或运行其挑战示例。ruyiJS 的隔离进程也不会自动继承 Tabbit 窗口中的登录和标签页。
按需要的结果选择
| 任务 | 起点 | 验收标准 |
|---|---|---|
| Windows 上执行已知脚本 | 用离线样本评估 ruyiJS | 输出正确、时序明确、输入可复现 |
| HTTP 接口已经返回所需数据 | 保留现有 HTTP 客户端 | 响应正确,无需增加浏览器运行时 |
| 截图和响应式布局测试 | 完整渲染浏览器工具 | 像素、位置与交互断言 |
| 在已有登录中整理网页 | 已配置的浏览器工作流,如受支持的 Tabbit 集成 | 来源链接、正确会话和人工复核 |
| 无人值守跨平台服务 | 先评估平台与运维 | 支持的宿主、恢复、监控和任务测试 |
浏览器选择指南从重复任务出发。尝试新流程时,也可以先作为第二浏览器使用。
结论很具体:ruyiJS 值得作为受支持平台上的脚本执行与回放候选,但尚不能作为渲染式 UI 自动化的通用替代。先用一个自有样本和已知结果验证。若需求是由人监督的真实网页操作,再按实际任务评估 Tabbit 集成,并检查返回的来源。
常见问题
ruyiJS 是什么?
ruyiJS 是使用 Firefox 组件的 Python JavaScript 运行库,提供独立进程中的 Context 与 Web API。文档支持 Windows x64,没有完整页面布局和渲染能力。
ruyiJS 首次发布是什么时候?
PyPI 0.1.0 发布于 2026 年 10 月 22 日,GitHub 仓库创建于 10 月 26 日。仓库创建时间不是软件包首发时间。10 月 28 日调研时 README 与 PyPI 显示 0.1.6。
ruyiJS 支持 macOS 和 Linux 吗?
官方安装要求是 Windows x64 与 64 位 Python 3.10 或更高版本。更新日志中的 Wine 修复不等于原生 Linux 或 macOS 支持。本文未进行跨平台安装测试。
ruyiJS 能代替 Playwright 做截图和 UI 测试吗?
文档明确不提供完整页面布局和渲染。需要截图、视觉回归或依赖元素位置的点击时,应选择具有渲染能力的浏览器工具。DOM 查询和视觉验证是不同任务。
ruyiJS 能自动通过所有反爬系统吗?
目前没有支持普遍成功保证的证据。仓库提供指定示例,且说明线上结果受网络与站点响应影响。本文未运行这些示例,也未测量成功率。
Tabbit 与 ruyiJS 有什么区别?
Tabbit 是面向用户的 AI 浏览器,国内版 v1.13 文档公布了让 Code Agent 操作浏览器并共享登录状态的 CLI 集成。它不是 ruyiJS Python API 或内嵌 Firefox 组件的替代实现。区域和客户端支持需要分别确认。