Ghostfox

io.github.autokeren由 GitHub 帳號 autokeren 發布v0.9.2更新於 Oct 24, 2026

Self-hosted stealth browser for AI agents: Firefox engine + Rust MCP runtime.

概覽

AI 產生的概覽

一個自架的隱蔽瀏覽器 MCP 伺服器,讓 AI 助理驅動打過補丁的 Firefox 引擎,並使用一致性的偽裝身分。

可以做什麼
Ghostfox 把以 Firefox 為基礎的反偵測引擎與 Rust MCP 執行環境打包在一起,提供工作階段、頁面、驗證碼、網路、除錯、視覺、身分與配方等工具。助理可以建立工作階段、開啟頁面、讀取原生無障礙樹、依參照點擊與輸入,並取得主控台、錯誤與網路資料。預設提供 26 個核心工具,另有 70 個工具的完整層級。工作階段可保存設定檔並記錄證據日誌。
適用情境
當助理需要自動化那些會阻擋一般無頭瀏覽器的網站,或需要讓 Cookie、身分與工作階段留在本機而非託管的隱蔽服務時,值得加入。也適合 Flutter Web 端對端測試,以及排查頁面異常的原因。
執行需求
透過 stdio 在本機執行,僅限桌面端。可經由 PyPI 或 npm 安裝,或執行 Docker 映像;引擎需另外下載或安裝。從原始碼建置需要 Rust 與 Cargo。未宣告帳號、API 金鑰或環境變數;文中提到可選的 GHOSTFOX_HOME 路徑與 GHOSTFOX_TOOLSET=full。可選的視覺模型金鑰並非必要。
安裝前請注意
它是供測試與研究使用的反偵測瀏覽器,README 明確要求不要對未獲授權測試的目標使用。它可以破解驗證碼、攔截與修改網路請求、注入指令碼、上傳檔案,並在本機目錄寫入持久化設定檔與錄製內容。可選的視覺模型金鑰會傳送給你所設定的服務商。目前版本為 alpha。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Ghostfox,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README


AI agents get blocked. Headless Chrome triggers Cloudflare 403s on ~20% of the web, and hosted "stealth browsers" route your agent's cookies, identities and sessions through someone else's cloud.

Ghostfox is the alternative: a complete browser stack you run yourself — a fingerprint-coherent stealth engine plus a Rust MCP runtime, in one repo.

Firefox (MPL-2.0)  └─ Camoufox (anti-detect patches, by daijro)       └─ Ghostfox engine          engine/   — spoofing at the C++ level            └─ Ghostfox runtime     runtime/  — Rust: sessions, identities, MCP
GhostfoxHosted stealth (Browserbase etc.)playwright-mcpAnti-detect suites (Multilogin etc.)
Self-hosted✓✗✓partially
Open source✓✗✓✗
MCP-native✓✓✓✗
Engine-level anti-detect✓ (C++/Firefox)vendor partnerships✗✓ (closed)
Coherent identities + auditor✓✗✗partial
Runtime languageRust—Node—

The moat — why this isn't just another wrapper.

  1. We own the engine. The anti-detect lives in C++ patches inside our own Firefox fork — not in injected JS that detectors can read. Upstream Camoufox has signaled partially-closed patches ahead; wrappers inherit that risk, a fork that owns its engine doesn't.
  2. A living proof corpus. Every claim here has a receipt: bilibili icon-click ×6, hCaptcha on production signups, TikTok OAuth+OTP live, 500/500 identity audits, Docker E2E. Features get copied in a week — verified history can't be.
  3. Agent-native ergonomics. 43 coherent MCP tools, fire-then-verify receipts, evidence recording, and a playbook (AGENTS.md) distilled from real runs. Agents (and their prompts) build habits on this surface — switching costs are real.
  4. Canonical distribution. PyPI, npm, GHCR and the official MCP Registry under one name, with the docs, benchmarks and changelogs to back it. Forks will exist; the verified trunk is here.

Captcha suite — 8 families, solved on-device (v0.6.7+). The runtime ships native MCP solvers with local models — no paid captcha farms, no cloud, no browser rent:

FamilyNative toolHow
GeeTest slide / v4 radarpage_geetest_slidebg-vs-fullbg diff + largest-blob gap detection
GeeTest icon-click (文字点选)page_geetest_clickcustom-trained YOLOv8s + siamese similarity (rten, CPU)
Rotatepage_captcha_rotate24-angle sweep + programmatic verdict
Normal OCRpage_captcha_ocrported ddddocr (CRNN+LSTM, onnxruntime)
hCaptchapage_hcaptchalayout router + 553-model QIN2DIM zoo + optional vision-model ensemble
Cloudflare Turnstile / TikTokcaptcha_solve + behavioral recipesproven playbooks in AGENTS.md §6b–6e

E2E-verified against production sites (not vendor demos): bilibili icon-click ×6 "Verification Succeeded", hCaptcha on real signups (dashboard.hcaptcha.com, dosya.co), TikTok OAuth+OTP live session.

Debug cortex — page tools that tell you WHY (v0.7). Agents stop guessing when a page misbehaves:

  • page_console — every console.log/warn/error since load
  • page_errors — uncaught JS exceptions with stack traces
  • page_network_start/read/body — request/response capture with body fetch

That's the DevTools trio, exposed over MCP.

Multi-model vision (optional). page_vision + page_ocr + page_match_image + page_pixels + page_contrast — wire any vision-capable model (Cloudflare Workers AI, GLM, Qwen, ...) as cross-checks for grid puzzles and layout questions. Keys are optional; the native solvers above run fully local.

Native-sourced observation — page_a11y {"native": true} reads the engine's OWN accessibility tree (Gecko's DocAccessible walk — the ariaSnapshot plumbing), so page scripts cannot tamper with what you see: shadow DOM, iframes and ARIA semantics handled by Gecko itself, richer states (focused/required/checked/expanded/disabled/level). Native refs are observation handles; acting goes through role+name anchors or the JS-walk source.

Eyes for agents — page_a11y. One call returns every visible interactive element with a stable ref, semantic role, accessible name, live value — piercing shadow DOM and same-origin iframes, so web-component UIs (Reddit, modern frameworks) are fully visible. The snapshot also reports login_state (logged-in / logged-out / unknown), page URL and title — agents check session health before acting, not after failing.

Agents act by ref: page_click_ref e38, page_type_ref e21 "text" — no CSS selectors needed. Rich editors (Lexical, Draft, ProseMirror) are handled via editor-native input paths with fire-then-verify receipts. page_wait_for replaces manual sleeps. page_read_ref gives full untruncated values. page_upload_file bypasses native file pickers.

Android personas too — session_create {"platform": "android"} gives portrait screens, Adreno/Mali GPUs, Android font stacks and Firefox-on-Android UAs, all audited like desktop identities (500/500 coherent, see runtime/docs).

One identity, no contradictions. Identities are generated from coherent device presets (platform, screen, GPU, fonts that actually ship together), injected at the engine level, and audited before use — a spoofed browser's worst enemy is itself saying "4 cores on a MacBook".

Quickstart

Pick a distribution:

bash
# Python (Linux x86_64)pip install ghostfoxpython -c "import ghostfox; ghostfox.install_engine(); ghostfox.install_runtime()"
# npm / any MCP hostnpm install -g ghostfox        # or: npx ghostfox install{  "mcpServers": {    "ghostfox": { "command": "npx", "args": ["-y", "ghostfox", "mcp"] }  }}
# Docker (engine + MCP runtime, ubuntu:24.04 base)docker run -i --rm ghcr.io/autokeren/ghostfox:v0.7.2# or one-line install of the binary stack:curl -fsSL https://raw.githubusercontent.com/autokeren/ghostfox/main/install.sh | bash# Windows (PowerShell):powershell -ExecutionPolicy Bypass -Command "irm https://raw.githubusercontent.com/autokeren/ghostfox/main/install.ps1 | iex"

Also listed on the official MCP Registry (io.github.autokeren/ghostfox) — one-click add in registry-aware clients.

From source:

bash
# 1) Get the engine (prebuilt) and unpack it somewhere, e.g. /optunzip ghostfox-<ver>-lin.x86_64.zip -d /opt/ghostfox
# 2) Build the runtimegit clone https://github.com/autokeren/ghostfox.gitcd ghostfox/runtimecargo build --release
json
{  "mcpServers": {    "ghostfox": {      "command": "/path/to/ghostfox/runtime/target/release/ghostfox-mcp",      "env": { "GHOSTFOX_HOME": "/opt/ghostfox" }    }  }}

Then the agent can: session_create → page_open → page_a11y → act by ref.

Portable sessions. session_create accepts profile_dir for persistent profiles: cookies, storage and the identity TOML live together in one place, so a login survives restarts. Migrating a session from another Camoufox-lineage browser? Copy the cookies and match the identity to the origin device (platform, timezone, locale, screen) — a session that suddenly changes identity looks like an impossible login and anti-fraud systems revoke it. Proven flow, see AGENTS.md §8.

Full tool surface (71 tools) — two tiers, one binary:

  • core (default): 26 curated tools — the golden loop (read → act → verify) plus debugging essentials, zero overlapping variants. This is what agents and registry inspectors see out of the box: an efficient, disambiguated surface (each tool's description says when to prefer it).
  • full: all 71 tools — captcha families, pixel/vision tiers, network interception, WebSocket capture/inject/block, identity morph, chrome-mode, Android, page_download (browser-identity media harvesting). Run the server with GHOSTFOX_TOOLSET=full.

The server also publishes instructions (a decision tree agents read before choosing tools) — the disambiguation layer for both tiers.

CategoryTools
Sessionsession_create · session_pages · session_me
Seepage_a11y (semantic + login_state + shadow DOM/iframe) · page_extract (typed, token-efficient a11y filters) · page_snapshot · page_screenshot · page_read_ref (full value) · page_diff (observeDiff: what changed since the last snapshot) · page_mutations (M3: unhookable DOM-change whispers) · page_a11y_events (M3: the a11y tree as a stream — focus/text/state/live-region events, the incremental diff)
Waitpage_wait_for (poll until visible) · page_dismiss_modal · page_wait_stable (render-settled) · page_wait_visual (M3.5: refresh-driver visual stability — the sleep killer)
Actpage_click_ref · page_click_native (trusted a11y-bounds click: scroll-first, DOM-proof coordinates) · page_click_at (raw trusted coords — no a11y resolution) · page_type_ref · page_click · page_type · page_fill · page_press · page_drag · page_move_to · page_upload_file · page_init_script · page_a11y_set_text (AT-native text input — the Flutter route)
Captchacaptcha_solve · page_geetest_slide · page_geetest_click · page_captcha_rotate · page_captcha_ocr · page_hcaptcha · page_captcha_vision (host-VLM reader for warped text captchas)
Network brokerpage_network_intercept (hold every request) · page_network_resume (modify url/method/headers/postData) · page_network_abort (block) · page_network_fulfill (mock the response)
Debugpage_console · page_errors · page_network_start · page_network_read (per-request DNS/TLS/TTFB timing) · page_network_body · page_frame_stats (M3.5: jank detector — frame-cadence stats) · page_timing_report (M3.5: nav-timing + paint) · page_ws_frames (M3: the WebSocket stream — sockets + frames both directions) · page_ws_send (M3: WS injection — client→server message) · page_ws_block (M3: WS blocking — drop frames both directions) · page_ui_audit (M5: visual QA of the rendered UI)
Visionpage_vision · page_ocr · page_match_image · page_pixels (compositor pixels — region/semantic/ref, no toDataURL) · page_contrast
Inspectpage_eval · page_open · page_comment
Harvestpage_download (media through the browser identity — cookies, TLS fingerprint, referer; streams to <session>/downloads/)
Identityidentity_generate · identity_audit · identity_morph (stop→relaunch→swap identity without losing the session)
Body sensepage_proprio (M4: honest body state — focus, selection/caret, scrollers) · page_cookie_events (M4: cookie/session heartbeat — auth-cookie deletion = earliest session-death signal) · session_vitals (M4.5: per-process CPU/memory)
Recipesrecipe_record · recipe_save · recipe_list · recipe_replay (deterministic replay, semantic anchors, strict/lenient escalation)
Evidence & safetysession_evidence · confirm_action

Every mutation returns a receipt — page_fill reports landed_chars, while type_ref fire-then-verifies async editors, so a silent page swap can't eat an edit unnoticed. Sessions can also run headful ({"headful": true}) when humans want to watch the agent work.

Every run records evidence. Each session writes an append-only event log (events.jsonl), full page snapshots and the identity it used under ~/.ghostfox/recordings/ — fetch it any time with session_evidence.

Engine diagnostics. ghostfox-mcp --self-test walks the engine pipeline (detection → spawn → juggler handshake → Browser.enable) and prints a step-by-step report plus the engine's stderr tail on failure — paste the output into an issue when a platform misbehaves.

E2E without emulators: Flutter web + any web app

Android E2E normally means emulators, Appium and a farm of devices. Ghostfox takes the web route: build the Flutter app for the web (flutter build web — same Dart codebase) and drive it with the same senses used against hostile sites:

  • Semantics tree, read natively — Flutter's a11y nodes (roles, labels, bounds) land in page_a11y(native=true) once semantics are enabled (one line in the app: SemanticsBinding.instance.ensureSemantics()).
  • Native clicks — page_click_native fires the Flutter buttons at their trusted a11y coordinates (verified: submit triggers, status renders).
  • Receipts + page_diff + page_mutations + page_wait_stable — the same Act→Observe→Compare evidence loop, no polling guesswork.
  • Visual QA — page_ui_audit judges the rendered UI.

Honest scope: logic/flow/UI = fully covered; final visual parity with real devices (Impeller rendering) and platform channels (sensors, camera) still need a device or emulator pass.

Sponsor

Ghostfox is independent and self-funded. If it saves your team from captcha walls or vibe-code UI bugs, help keep the house open:

Companies: sponsorship + early access to the hosted Visual QA service is open — sponsor the repo or open an issue with the title sponsorship.

Or install in one command (Linux x86_64):

bash
curl -fsSL https://raw.githubusercontent.com/autokeren/ghostfox/main/install.sh | bash

From source end-to-end (build the engine yourself): see engine/README.md — make dir && make build.

Repository layout

runtime/   Rust: ghostfox-{core,fingerprint,mcp,eval}     (MIT OR Apache-2.0)engine/    Browser fork: patches, branding, build system    (MPL-2.0)AGENTS.md  The agent playbook — how AI agents drive Ghostfox like a humanSKILL.md   The compact agent skill — the golden loop + tool map at a glancedocs/JOURNEY.md  The dev-log, todo list and the road ahead (the five senses)

Two directories, two licenses, one product. The runtime speaks Juggler natively — no Node, no Python at runtime.

Using Ghostfox with an AI agent (opencode, Codex, Cursor, Claude Code, ...)? Read AGENTS.md first — it's the distilled playbook from real agent runs: the READ → REASON → DECIDE → ACT loop, self-health (rate limits, drafts, notifications), rich-editor typing, and every known wall with its proven solution.

Why own the engine?

  • Anti-detect that survives inspection. Spoofing happens inside the engine (navigator, screen, WebGL, fonts, WebRTC, timezone, audio) — not in injected JS that detectors can read.
  • No cloud dependency. Your agent's identities and cookies never touch a third-party host.
  • Upstream insurance. engine/ tracks daijro/camoufox as upstream; Ghostfox applies its own branding and can rebase whenever it wants — including if upstream patches go closed-source.

Status

v0.7 — alpha. Verified: identity coherence (500/500), full MCP round-trip E2E (create → open → fill → submit), 8 captcha families E2E on production sites (bilibili, hCaptcha-protected signups, TikTok), debug cortex (console/errors/network), Docker image E2E (session → open → snapshot inside a container), portable sessions across Camoufox-lineage browsers. Distributed via PyPI, npm, Docker (GHCR) and the official MCP Registry. Known limits are tracked in the changelogs under runtime/ and engine/.

Do not use against targets you don't have permission to test. This is a testing / research tool.

Credits

Ghostfox stands on the shoulders of giants — Camoufox (daijro) for the anti-detect patch stack, Mozilla Firefox for the engine, LibreWolf for the patch tooling lineage, and Playwright for the Juggler protocol.

License

來源:README.md,提交 fc9d4ce

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

5
  1. v0.9.2最新Oct 6, 2026
  2. v0.9.1Oct 4, 2026
  3. v0.8.0Sep 28, 2026
  4. v0.7.2Sep 25, 2026
  5. v0.3.1Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分