通過30/30 項機器人偵測測試的隱形 Chromium。 更換一行 import 即可從 Playwright 遷移,爬蟲在 Cloudflare Turnstile 與 reCAPTCHA v3 環境下以正常瀏覽器身分運行。
CloakBrowser 是一顆自行編譯的 Chromium binary,
外覆一層輕薄的 Python/JavaScript 包裝,提供與 Playwright
完全相同的 API。所有機器人指紋識別特徵,包括
navigator.webdriver、Canvas 雜湊、WebGL renderer、
AudioContext、字體列舉、TLS ja3/ja4、HTTP/2 設定,
均直接編譯進二進位檔,而非透過 JavaScript 注入或啟動參數覆蓋。
偵測系統看到的是一個正常 Chromium,因為它就是正常 Chromium。
不存在可被識破的 JS 補丁,無 CDP 洩漏,UA 中也不含 HeadlessChrome 字串。
playwright-stealth、
undetected-chromedriver、puppeteer-extra 均依賴 JS 注入或 flag 調整。
每次 Chrome 更新都可能破壞它們,反機器人系統甚至能識別補丁本身的存在。
CloakBrowser 直接改寫原始碼,從根源消除這條偵測路線。
常見選擇,包括 playwright-stealth、
undetected-chromedriver、Camoufox,
各自在 2025 前後遇到瓶頸:JS 注入易被識破、Chrome 更新破壞補丁,
Camoufox 則被反機器人廠商針對性反編譯後於 2025/03 停止維護。CloakBrowser
定位為 Camoufox 的替代方案,引擎為市佔約 70% 的 Chromium,
而非市佔約 2% 的 Firefox。
| 項目 | Playwright | playwright-stealth | UC Driver | Camoufox | CloakBrowser |
|---|---|---|---|---|---|
| reCAPTCHA v3 | 0.1 | 0.3–0.5 | 0.3–0.7 | 0.7–0.9 | 0.9 |
| Cloudflare Turnstile | 失敗 | 有時 | 有時 | 通過 | 通過 |
| 補丁層級 | 無 | JS 注入 | Config 補丁 | C++(Firefox) | C++(Chromium) |
| Chrome 更新後 | — | 經常壞 | 經常壞 | 可用 | 可用 |
| 維護狀態 | 活躍 | 停滯 | 停滯 | 2025/03 停更 | 活躍 |
| 引擎 | Chromium | Chromium | Chrome | Firefox | Chromium |
| Playwright 原生 API | 是 | 是 | 否(Selenium) | 否 | 是 |
安裝後第一次執行時,binary(約 200 MB)會自動下載並快取到
~/.cloakbrowser。完全不需要先跑
playwright install chromium。CloakBrowser
內附自己的 Chromium binary。
# Python pip install cloakbrowser # Node.js(Playwright 或 Puppeteer 二選一) npm install cloakbrowser playwright-core npm install cloakbrowser puppeteer-core # Linux 需要的系統函式庫 playwright install-deps chromium
from cloakbrowser import launch browser = launch() # 預設 headless page = browser.new_page() page.goto("https://protected-site.com") # 不再被擋 print(page.title()) browser.close()
- from playwright.sync_api import sync_playwright - pw = sync_playwright().start() - browser = pw.chromium.launch() + from cloakbrowser import launch + browser = launch() # 後面的程式完全不動 page = browser.new_page() page.goto("https://example.com")
API 介面保持精簡。其作用是將正確的旗標傳遞給 Chromium binary,
並回傳標準的 Playwright Browser 物件。
from cloakbrowser import launch, launch_async, launch_context, launch_persistent_context # 1. 同步、headless browser = launch() # 2. 帶 proxy(住宅級代理建議) browser = launch(proxy="http://user:pass@proxy:8080") # 3. headful(用 Xvfb 在無 GUI 的 Linux 伺服器上跑) browser = launch(headless=False) # 4. 非同步 async def main(): browser = await launch_async() page = await browser.new_page() await page.goto("https://example.com") await browser.close() # 5. 一次給好 UA/viewport/locale/時區 context = launch_context( user_agent="Mozilla/5.0 ...", viewport={"width": 1920, "height": 1080}, locale="zh-TW", timezone="Asia/Taipei", ) # 6. 帶 cookie/localStorage 的持久 profile context = launch_persistent_context(user_data_dir="./profile-a")
from cloakbrowser import binary_info, clear_cache, ensure_binary print(binary_info()) # 檢查 binary 版本與安裝狀態 clear_cache() # 強制重新下載 ensure_binary() # Docker build 時預先抓 binary,容器啟動即用
指紋種子、人類化行為、session 隔離是影響偵測繞過成效的三項主要配置。
# 固定種子 → 同一台「裝置」反覆登入 # 隨機種子 → 每次都是新裝置 browser = launch(args=["--fingerprint=12345"]) # 強制平台(Linux 機器偽裝成 Windows) browser = launch(args=[ "--fingerprint-platform=windows", "--fingerprint-gpu-vendor=NVIDIA Corporation", ])
# humanize=True 自動加入:滑鼠 bezier 曲線移動、打字節奏、隨機 idle browser = launch( humanize=True, human_config={ "mistype_chance": 0.1, # 10% 機率打錯然後 backspace "typing_delay": 50, # 平均 50ms / 字 "idle_between_actions": True, }, )
# 開啟 web UI 來管理 N 個 profile,每個獨立 fingerprint + proxy docker run -p 8080:8080 -v cloakprofiles:/data cloakhq/cloakbrowser-manager # 開 http://localhost:8080 → 建立 profile → Launch → 完成
AI agent 框架需要可登入、可點擊的瀏覽器執行層。 CloakBrowser 已整合至 browser-use、Crawl4AI、 Scrapling、Stagehand、 LangChain,並可作為 Claude Computer Use 的執行載體。
整合有兩種模式:由框架直接啟動 binary,或以 CDP 連線至已執行中的 CloakBrowser 實例。
# 適用 Selenium、Stagehand、undetected-chromedriver from cloakbrowser.download import ensure_binary from cloakbrowser.config import get_default_stealth_args binary_path = ensure_binary() # 沒下載就自動下載 stealth_args = get_default_stealth_args() # 所有指紋旗標 # 把上面兩個塞給你框架的 launch options
# 適用 browser-use、Crawl4AI、Scrapling from cloakbrowser import launch_async browser = await launch_async(args=["--remote-debugging-port=9242"]) # 你的 AI agent 框架連到 http://127.0.0.1:9242 # 隱形指紋自動生效;只有 humanize 需要包裝層額外注入
以下整理自 r/webscraping 及 Camoufox 後續討論,適用於原始碼級隱形瀏覽器的配置實務。
同一 IP 每次呈現不同裝置指紋,評分系統會將其標記為高風險。固定 --fingerprint=N 搭配持久化 cookie,可使 reCAPTCHA v3 分數上升 0.1–0.2(依 r/webscraping 討論回報)。
指紋隱形效果再好,IP 信譽低仍會被攔截。Cloudflare 在 2026 大量採用 IP 信譽評分,datacenter IP 幾乎一律觸發 Turnstile managed challenge。
headless 模式存在特定偵測向量。在無 GUI 環境中使用 Xvfb :99 -screen 0 1920x1080x24 & 搭配 export DISPLAY=:99,再以 headless=False 啟動,可規避部分 headless 偵測。
部分網站會偵測空白歷史記錄的 session(incognito 特徵)。為每個帳號指定獨立的 user_data_dir、代理與固定 seed,可降低跨帳號連帶封禁的機率。
uvicorn[standard] 預設使用 uvloop,會導致 subprocess pipe hang。在 FastAPI 環境中使用 CloakBrowser 時,請改用 uvicorn --loop asyncio。
部分網站對「無 cookie 的 HTTP/2 首次連線」一律發出 challenge,這在所有 Chromium 均會發生。對策:先以低敏感頁面建立 cookie,再訪問目標頁面。
偵測系統會評估滑鼠軌跡與打字節奏。指紋完整但操作行為機械化,仍可能被 DataDome 等系統識別。
Camoufox 被反編譯後,反機器人廠商建立了對應的流量特徵標記。使用 Chromium-based 工具並隨機化 UA 與 viewport 範圍,可降低被建立專屬特徵檔案的風險。
付費 CAPTCHA solver 是隱身設定不當時的補救措施。配置正確時,CAPTCHA 不應被觸發。出現 Turnstile managed challenge 時,應重新檢查 IP 與指紋配置,而非依賴 2captcha 等解題服務。
CloakBrowser 內附自己的 binary,執行 playwright install chromium 只會額外下載一份用不到的官方 Chromium(約 200 MB)。Linux 環境只需執行 playwright install-deps chromium 安裝系統函式庫。
CloakBrowser 適用於需要高擬真瀏覽器行為,且不依賴商業代管服務(月費 $49–$299)的自托管場景。
CloakBrowser 本身只是一個瀏覽器,安裝與使用合法,與安裝 Chrome 或 Firefox 相同。使用者對自身的操作行為負責,包括違反目標網站 ToS、繞過 DRM、未授權存取等,均與工具本身無關。專案 README 明確不背書任何違反 ToS 的行為。
Camoufox 修補 Firefox,CloakBrowser 修補 Chromium。差異有三:(1) Chromium 市佔約 70%,Firefox 只有 2%,後者大量流量本身就突兀;(2) Chromium 的 TLS ja3/ja4/Akamai 指紋與真實 Chrome 一致,更難辨識;(3) Camoufox 於 2025/03 停止維護,且開源被反機器人廠商針對性反編譯;CloakBrowser 持續更新。
有可能。原始碼層補丁比 config-level 補丁更難偵測,但並非不可突破。專案持續監控偵測系統的更新。使用者端的對策:固定 seed、完整的 cookie 管理、住宅代理、適度的行為人類化,可降低整體被偵測機率。
目前 Linux x86_64 已正式發布,macOS arm64(Apple Silicon)與 macOS Intel 為「即將推出」,Windows 列為計畫中。如果是生產環境,建議優先以 Linux 容器化部署。
可以。直接 launch(proxy="http://user:pass@host:port"),也支援 SOCKS5(包含 QUIC/HTTP3 over UDP ASSOCIATE)。建議使用住宅代理或行動代理;機房 IP 在 2026 已幾乎不可用。
部分網站對無 cookie 的 HTTP/2 首次連線一律發出 challenge,這在所有 Chromium 均會發生,與 CloakBrowser 無關。解法:先以低敏感頁面建立 cookie,再訪問主要目標頁面。
專案內附 Dockerfile,且建議在 build 階段呼叫 ensure_binary() 預先下載 binary(約 200 MB),讓容器啟動時間最短。注意:用 uvloop 的 web framework(如 uvicorn[standard])需改成 --loop asyncio。
本工具的目的是讓「合法的自動化」不被誤判為攻擊。它不適合也不該用於:未授權的個資抓取、繞過付費內容、騷擾、廣告詐騙、規避法律調查。請務必先閱讀目標網站的 ToS 與 robots.txt,並評估你所在司法管轄的爬蟲相關判例(台灣以民法侵權與營業秘密法為主要參考)。