Tabbit部落格

ruyiJS:Python 執行與自動化限制

了解 ruyiJS 的 Context API、Windows 安裝條件、腳本重播與渲染限制,並判斷何時適合使用 Tabbit 的真實瀏覽器工作流程。

本文目錄
  1. 重要結論
  2. ruyiJS 能力一覽
  3. Context 實際負責什麼
  4. 從離線範例開始
  5. 明確管理狀態、時鐘與請求
  6. 先用限制篩選工具
  7. 用 Tabbit 處理真實網頁任務
  8. 依交付結果選擇

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 提供腳本與 Web API 環境,並非完整的視覺化 Firefox。

  • README 將 SpiderMonkey、Necko 列為 JavaScript 與網路元件;Firefox 158 的說法來自專案方,本文未獨立稽核。

  • 先確認 Windows x64 與 Python 3.10+ 部署條件。

  • 持續狀態、離線資源與邏輯時鐘適合建立腳本重播,但仍須測試實際相容性。

  • 選擇工具前,先確定交付的是計算值、渲染畫面,還是經人員複核的瀏覽器任務。

ruyiJS 能力一覽

面向官方文件內容邊界
宿主Windows x64、Python 3.10+未公布原生 macOS、Linux 安裝支援
JavaScriptSpiderMonkey,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 要求。先測試不需網路的基本運算:

from ruyijs import Context

with Context() as context:
    context.eval("let count = 40")
    print(context.eval("count += 2"))

文件預期結果為 42。接著以自己提供的 HTML 和資源測試 DOM:

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。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 操作瀏覽器並共用使用者登入狀態。

先完成客戶端要求的整合,再提供範圍清楚的唯讀指令。以下是建議用法,不表示本文執行過這項任務:

在 Tabbit 開啟我提供的文件頁面。
比較支援平台、安裝要求與頁面渲染能力。
每項結論附來源 URL 與可見版本或日期。
資料缺漏標示未知。不要送出表單或變更帳號設定。
既有 Tabbit 與 WorkBuddy 工作流程圖片,左側為瀏覽器,右側為指令與執行輸出
專案既有 CLI 工作流程素材,並非本文 ruyiJS 實測或計時證據。

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 元件的替代實作。不同地區與客戶端需分別確認。

下一步

讓 Tabbit 與你並肩工作。

跨分頁調研、自動化重複的瀏覽器工作,讓每一處上下文都觸手可及。