30MB Rust無頭瀏覽器Obscura:擊敗Chrome、真實V8引擎與CDP全相容,AI代理與爬蟲的隱形利器

Obscura:開源界的黑馬

圖片

在AI代理和大規模網頁抓取時代,傳統的Headless Chrome顯得越來越笨重:超過200MB的記憶體用量、300MB以上的程式體積、啟動緩慢、瀏覽器指紋特徵明顯,反爬蟲能力幾乎為零。

GitHub開源專案 h4ckf0r0day/obscura 徹底改變了遊戲規則。這款以純Rust打造的輕量級無頭瀏覽器引擎,專為AI代理自動化與網頁抓取而生。單一執行檔、無需Chrome、無需Node.js、無任何外部依賴,能夠真實執行V8 JavaScript、完整支援Chrome DevTools協定 (CDP),可直接作為Puppeteer和Playwright的無縫替代品。

專案核心指標:

● 記憶體用量:僅30MB(Chrome 200MB以上)

● 執行檔大小:僅70MB(Chrome 300MB以上)

● 頁面載入:85毫秒(Chrome 約500毫秒)

● 啟動速度:瞬間啟動(Chrome 約2秒)

● 內建反追蹤偵測與3520個追蹤器域名封鎖

一、Obscura核心功能全覽

Obscura提供三大核心能力

1. CLI命令列工具(obscura 執行檔)

obscura fetch <URL>:單頁抓取,支援真實JS渲染、自訂eval、等待條件、selector等待、輸出HTML/Text/Links。

obscura scrape <URL...>:多網址並行抓取(透過--concurrency控制),支援統一的eval與JSON/Text輸出。

obscura serve:啟動CDP WebSocket伺服器,作為Puppeteer/Playwright的後端。

2. 隱身模式(--stealth 或 cargo build --features stealth)

指紋隨機化:每次連線階段隨機化GPU、螢幕、Canvas、音訊、電池等指紋資訊。

真實Chrome模擬:navigator.userAgentData 使用 Chrome 145 高熵值;event.isTrusted=true;隱藏內部屬性;Function.prototype.toString() 返回 [native code];navigator.webdriver=undefined。

追蹤器封鎖:自動封鎖3520個分析、廣告、遙測、指紋辨識域名,相關指令碼完全不載入。

--stealth 標誌同時啟用反偵測與追蹤器封鎖。

3. Chrome DevTools協定 (CDP) 全面相容

○ 支援 Puppeteer-core 和 playwright-core 透過 ws://127.0.0.1:9222 直接連線。

○ 已實作的Domain與關鍵方法(官方明確列出):

Target:createTarget、closeTarget、attachToTarget、createBrowserContext、disposeBrowserContext

Page:navigate、getFrameTree、addScriptToEvaluateOnNewDocument、lifecycleEvents

Runtime:evaluate、callFunctionOn、getProperties、addBinding

DOM:getDocument、querySelector、querySelectorAll、getOuterHTML、resolveNode

Network:enable、setCookies、getCookies、setExtraHTTPHeaders、setUserAgentOverride

Fetch:enable、continueRequest、fulfillRequest、failRequest(即時請求攔截)

Storage:get/set/delete Cookies

Input:dispatchMouseEvent、dispatchKeyEvent

LP:getMarkdown(DOM轉Markdown)

額外實用功能:

● 支援 --proxy(HTTP/SOCKS5)

● --obey-robots(遵守robots.txt)

● --wait-until(load / domcontentloaded / networkidle0)

● --workers(多行程平行處理)

● 表單提交、登入、302重新導向、Cookie維持全部原生支援(真實瀏覽器行為)

二、安裝方法

1. 預編譯執行檔(推薦,最快速)

從 Releases 頁面下載最新版(https://github.com/h4ckf0r0day/obscura/releases):

# Linux x86_64
curl -LO https://github.com/h4ckf0r0day/obscura/releases/latest/download/obscura-x86_64-linux.tar.gz
tar xzf obscura-x86_64-linux.tar.gz
chmod +x obscura

# macOS Apple Silicon
curl -LO https://github.com/h4ckf0r0day/obscura/releases/latest/download/obscura-aarch64-macos.tar.gz
tar xzf obscura-aarch64-macos.tar.gz

# macOS Intel
curl -LO https://github.com/h4ckf0r0day/obscura/releases/latest/download/obscura-x86_64-macos.tar.gz
tar xzf obscura-x86_64-macos.tar.gz

# Windows:下載 .zip 解壓縮即可

2. 從原始碼安裝(支援Stealth特性)

git clone https://github.com/h4ckf0r0day/obscura.git
cd obscura
# 一般建置
cargo build --release
# 包含Stealth模式(強烈建議)
cargo build --release --features stealth

要求:Rust 1.75以上版本(使用rustup安裝)。首次建置約需5分鐘(V8從原始碼編譯,後續快取)。

執行檔路徑位於 target/release/obscura

三、使用方式

CLI核心命令(完整參數表來自專案)

obscura serve --port 9222 [--stealth] [--proxy <URL>] [--workers N] [--obey-robots]

obscura fetch <URL> [--dump html|text|links] [--eval "JS"] [--wait-until load|domcontentloaded|networkidle0] [--selector "css"] [--stealth]

obscura scrape <URL1> <URL2>... [--concurrency 10] [--eval "JS"] [--format json|text] [--stealth]

Puppeteer整合範例(完整可執行)

import puppeteer from 'puppeteer-core';
const browser = await puppeteer.connect({ browserWSEndpoint: 'ws://127.0.0.1:9222/devtools/browser' });
const page = await browser.newPage();
await page.goto('https://news.ycombinator.com');
// 真實JS執行、Cookie、登入全部支援

Playwright範例同理,使用 chromium.connectOverCDP({ endpointURL: 'ws://127.0.0.1:9222' })

表單登入、動態內容等待、即時Fetch攔截等情境,皆可在專案README中找到完整示範。

四、技術原理與架構

Obscura採用Cargo Workspace多crate架構,高度模組化、非同步驅動,是實現極致輕量與高效能的核心原因。

1. 整體架構

workspace:共6個crates — obscura-dom、obscura-net、obscura-js、obscura-browser、obscura-cdp、obscura-cli。

● 核心依賴:

tokio:全非同步執行時

reqwest:HTTP客戶端(cookies、gzip/brotli/deflate、native-tls)

deno_core 0.350(obscura-js):真實V8引擎整合(建置依賴也依賴deno_core)

html5ever + markup5ever + selectors + cssparser + servo_arc(obscura-dom):Servo風格的高效能HTML/CSS/DOM解析器

tokio-tungstenite(obscura-cdp):WebSocket CDP伺服器

wreq + wreq-util(obscura-net stealth feature):進階網路請求控制與追蹤器封鎖

2. 各crate核心職責

obscura-dom:使用html5ever解析HTML,selectors進行CSS查詢,實作輕量級DOM樹。

obscura-js:透過deno_core建構V8執行時,支援module_loader、runtime、ops自訂操作。每個Page擁有獨立JS上下文,實現真實JavaScript執行(非模擬)。

obscura-net:reqwest核心網路層,stealth feature啟用wreq以實現域名級追蹤器封鎖(3520個域名)與請求偽裝。

obscura-browser:核心膠水層,暴露Page、BrowserContext、LifecycleState。負責協調DOM、JS與Net,實現頁面生命週期(navigate、wait-until、evaluate)。

obscura-cdp:實作Chrome DevTools協定全套方法,透過WebSocket暴露給Puppeteer/Playwright。支援Fetch攔截、Input事件等。

obscura-cli:clap驅動的命令列入口,呼叫browser和cdp實現fetch/scrape/serve。

3. 關鍵實作原理

真實JS執行:deno_core直接嵌入V8,無需完整Chromium渲染引擎,極大降低記憶體和體積。

Stealth實作:編譯時feature切換,執行時在BrowserContext中進行per-session隨機化、navigator屬性覆寫、事件偽裝,加上網路層域名黑名單攔截。

極致效能:無Blink渲染引擎、無多餘桌面功能、純Rust零成本抽象搭配Tokio非同步與Servo解析器,實現瞬間啟動與低記憶體用量。

CDP相容:完全複用Chrome協定語義,確保Puppeteer/Playwright零修改接入。

原始碼中 obscura-browser/src/lib.rs 僅暴露page/context/lifecycle三個模組,體現極簡設計哲學。

Obscura是為AI代理與大規模抓取量身打造的Rust原生引擎。透過模組化crate、deno_core V8、Servo DOM和reqwest,實現了遠超傳統Headless Chrome的效能與隱蔽性。

無論是建構AI自主代理、做大規模資料採集,或是低資源耗用的反爬蟲方案,Obscura都是目前最務實的選擇。

相關文章推薦

分享網址
AINews·AI 新聞聚合平台
© 2026 AINews. All rights reserved.