跳轉到主要內容

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

如需設定、組態與疑難排解,請參閱 Browser。 本頁是本機控制 HTTP API、openclaw browser CLI 與腳本模式(快照、ref、等待、偵錯流程)的參考。

控制 API(選用)

僅供本機整合使用,Gateway 會公開一個小型 loopback HTTP API:
  • 狀態/啟動/停止:GET /POST /startPOST /stop
  • 分頁:GET /tabsPOST /tabs/openPOST /tabs/focusDELETE /tabs/:targetId
  • 快照/螢幕截圖:GET /snapshotPOST /screenshot
  • 動作:POST /navigatePOST /act
  • Hook:POST /hooks/file-chooserPOST /hooks/dialog
  • 下載:POST /downloadPOST /wait/download
  • 權限:POST /permissions/grant
  • 偵錯:GET /consolePOST /pdf
  • 偵錯:GET /errorsGET /requestsPOST /trace/startPOST /trace/stopPOST /highlight
  • 網路:POST /response/body
  • 狀態:GET /cookiesPOST /cookies/setPOST /cookies/clear
  • 狀態:GET /storage/:kindPOST /storage/:kind/setPOST /storage/:kind/clear
  • 設定:POST /set/offlinePOST /set/headersPOST /set/credentialsPOST /set/geolocationPOST /set/mediaPOST /set/timezonePOST /set/localePOST /set/device
所有端點都接受 ?profile=<name>POST /start?headless=true 會請求 一次性的無頭啟動,供本機受管理設定檔使用,且不會變更持久化的 瀏覽器組態;僅附加、遠端 CDP,以及現有工作階段設定檔會拒絕 該覆寫,因為 OpenClaw 不會啟動那些瀏覽器程序。 如果已設定共享密鑰 Gateway 驗證,瀏覽器 HTTP 路由也需要驗證:
  • Authorization: Bearer <gateway token>
  • x-openclaw-password: <gateway password> 或使用該密碼的 HTTP Basic 驗證
注意:
  • 這個獨立的 loopback 瀏覽器 API 不會取用 trusted-proxy 或 Tailscale Serve 身分標頭。
  • 如果 gateway.auth.modenonetrusted-proxy,這些 loopback 瀏覽器 路由不會繼承那些承載身分的模式;請保持它們僅限 loopback。

/act 錯誤合約

POST /act 會針對路由層級驗證與 政策失敗使用結構化錯誤回應:
{ "error": "<message>", "code": "ACT_*" }
目前的 code 值:
  • ACT_KIND_REQUIRED(HTTP 400):kind 缺失或無法辨識。
  • ACT_INVALID_REQUEST(HTTP 400):動作酬載未通過正規化或驗證。
  • ACT_SELECTOR_UNSUPPORTED(HTTP 400):selector 用於不支援的動作種類。
  • ACT_EVALUATE_DISABLED(HTTP 403):evaluate(或 wait --fn)已由組態停用。
  • ACT_TARGET_ID_MISMATCH(HTTP 403):頂層或批次的 targetId 與請求目標衝突。
  • ACT_EXISTING_SESSION_UNSUPPORTED(HTTP 501):現有工作階段設定檔不支援此動作。
其他執行階段失敗仍可能傳回沒有 code 欄位的 { "error": "<message>" }

Playwright 需求

部分功能(navigate/act/AI 快照/角色快照、元素螢幕截圖、 PDF)需要 Playwright。如果未安裝 Playwright,這些端點會傳回 清楚的 501 錯誤。 沒有 Playwright 時仍可運作的項目:
  • ARIA 快照
  • 可用每個分頁 CDP WebSocket 時的角色樣式無障礙快照(--interactive--compact--depth--efficient)。這是檢查與 ref 探索的 後援;Playwright 仍是主要 動作引擎。
  • 可用每個分頁 CDP WebSocket 時,受管理 openclaw 瀏覽器的頁面螢幕截圖
  • existing-session / Chrome MCP 設定檔的頁面螢幕截圖
  • 來自快照輸出的 existing-session 以 ref 為基礎的螢幕截圖(--ref
仍需要 Playwright 的項目:
  • navigate
  • act
  • 依賴 Playwright 原生 AI 快照格式的 AI 快照
  • CSS 選擇器元素螢幕截圖(--element
  • 完整瀏覽器 PDF 匯出
元素螢幕截圖也會拒絕 --full-page;該路由會傳回 fullPage is not supported for element screenshots 如果你看到 Playwright is not available in this gateway build,請修復 隨附瀏覽器 Plugin 的執行階段相依性,讓 playwright-core 已安裝, 然後重新啟動 Gateway。對於封裝安裝,請執行 openclaw doctor --fix。 對於 Docker,還要依下方所示安裝 Chromium 瀏覽器二進位檔。

Docker Playwright 安裝

如果你的 Gateway 在 Docker 中執行,請避免使用 npx playwright(npm 覆寫衝突)。 請改用隨附的 CLI:
docker compose run --rm openclaw-cli \
  node /app/node_modules/playwright-core/cli.js install chromium
若要持久化瀏覽器下載,請設定 PLAYWRIGHT_BROWSERS_PATH(例如 /home/node/.cache/ms-playwright),並確保 /home/node 透過 OPENCLAW_HOME_VOLUME 或 bind mount 持久化。請參閱 Docker

運作方式(內部)

一個小型 loopback 控制伺服器會接受 HTTP 請求,並透過 CDP 連線到以 Chromium 為基礎的瀏覽器。進階動作(點擊/輸入/快照/PDF)會透過 CDP 之上的 Playwright 執行;當 Playwright 缺失時,只有非 Playwright 作業可用。代理會看到一個穩定介面,而本機/遠端瀏覽器與設定檔可在底層自由切換。

CLI 快速參考

所有命令都接受 --browser-profile <name> 以指定特定設定檔,並接受 --json 以輸出機器可讀格式。
openclaw browser status
openclaw browser start
openclaw browser start --headless # one-shot local managed headless launch
openclaw browser stop            # also clears emulation on attach-only/remote CDP
openclaw browser tabs
openclaw browser tab             # shortcut for current tab
openclaw browser tab new
openclaw browser tab select 2
openclaw browser tab close 2
openclaw browser open https://example.com
openclaw browser focus abcd1234
openclaw browser close abcd1234
openclaw browser screenshot
openclaw browser screenshot --full-page
openclaw browser screenshot --ref 12        # or --ref e12
openclaw browser screenshot --labels
openclaw browser snapshot
openclaw browser snapshot --format aria --limit 200
openclaw browser snapshot --interactive --compact --depth 6
openclaw browser snapshot --efficient
openclaw browser snapshot --labels
openclaw browser snapshot --urls
openclaw browser snapshot --selector "#main" --interactive
openclaw browser snapshot --frame "iframe#main" --interactive
openclaw browser console --level error
openclaw browser errors --clear
openclaw browser requests --filter api --clear
openclaw browser pdf
openclaw browser responsebody "**/api" --max-chars 5000
openclaw browser navigate https://example.com
openclaw browser resize 1280 720
openclaw browser click 12 --double           # or e12 for role refs
openclaw browser click-coords 120 340        # viewport coordinates
openclaw browser type 23 "hello" --submit
openclaw browser press Enter
openclaw browser hover 44
openclaw browser scrollintoview e12
openclaw browser drag 10 11
openclaw browser select 9 OptionA OptionB
openclaw browser download e12 report.pdf
openclaw browser waitfordownload report.pdf
openclaw browser upload /tmp/openclaw/uploads/file.pdf
openclaw browser fill --fields '[{"ref":"1","type":"text","value":"Ada"}]'
openclaw browser dialog --accept
openclaw browser wait --text "Done"
openclaw browser wait "#main" --url "**/dash" --load networkidle --fn "window.ready===true"
openclaw browser evaluate --fn '(el) => el.textContent' --ref 7
openclaw browser highlight e12
openclaw browser trace start
openclaw browser trace stop
注意:
  • uploaddialog預備呼叫;請在觸發選擇器/對話方塊的點擊/按鍵之前執行。
  • click/type/等需要來自 snapshotref(數字 12、角色 ref e12,或可操作的 ARIA ref ax12)。動作刻意不支援 CSS 選擇器。當可見視窗位置是唯一可靠目標時,請使用 click-coords
  • 下載、追蹤與上傳路徑受限於 OpenClaw 暫存根目錄:/tmp/openclaw{,/downloads,/uploads}(後援:${os.tmpdir()}/openclaw/...)。
  • upload 也可以透過 --input-ref--element 直接設定檔案輸入。
當 OpenClaw 能證明替換分頁時,例如相同 URL,或表單提交後單一舊分頁變成 單一新分頁,穩定的分頁 ID 與標籤會在 Chromium 原始目標替換後保留下來。 原始目標 ID 仍不穩定;腳本中請優先使用 tabssuggestedTargetId 快照旗標速覽:
  • --format ai(使用 Playwright 時的預設):帶有數字 ref(aria-ref="<n>")的 AI 快照。
  • --format aria:帶有 axN ref 的無障礙樹。當 Playwright 可用時,OpenClaw 會以後端 DOM ID 將 ref 綁定到即時頁面,讓後續動作可以使用它們;否則請將輸出視為僅供檢查。
  • --efficient(或 --mode efficient):精簡角色快照預設。設定 browser.snapshotDefaults.mode: "efficient" 可讓它成為預設(請參閱 Gateway 組態)。
  • --interactive--compact--depth--selector 會強制產生含 ref=e12 ref 的角色快照。--frame "<iframe>" 會將角色快照範圍限定到 iframe。
  • --labels 會加入僅視窗的螢幕截圖,並覆蓋 ref 標籤(列印 MEDIA:<path>)。
  • --urls 會將探索到的連結目的地附加到 AI 快照。

快照與 ref

OpenClaw 支援兩種「快照」樣式:
  • AI 快照(數字 ref)openclaw browser snapshot(預設;--format ai
    • 輸出:包含數字 ref 的文字快照。
    • 動作:openclaw browser click 12openclaw browser type 23 "hello"
    • 內部會透過 Playwright 的 aria-ref 解析 ref。
  • 角色快照(像 e12 的角色 ref)openclaw browser snapshot --interactive(或 --compact--depth--selector--frame
    • 輸出:帶有 [ref=e12](以及選用 [nth=1])的角色式清單/樹。
    • 動作:openclaw browser click e12openclaw browser highlight e12
    • 內部會透過 getByRole(...)(加上用於重複項目的 nth())解析 ref。
    • 加上 --labels 可包含一張覆蓋 e12 標籤的視窗螢幕截圖。
    • 當連結文字不明確且代理需要具體 導覽目標時,請加上 --urls
  • ARIA 快照(像 ax12 的 ARIA ref)openclaw browser snapshot --format aria
    • 輸出:以結構化節點呈現的無障礙樹。
    • 動作:當快照路徑可以透過 Playwright 與 Chrome 後端 DOM ID 綁定 ref 時,openclaw browser click ax12 可運作。
  • 如果 Playwright 不可用,ARIA 快照仍可用於 檢查,但 ref 可能無法操作。當你需要動作 ref 時,請使用 --format ai--interactive 重新擷取快照。
  • 原始 CDP 後援路徑的 Docker 證明:pnpm test:docker:browser-cdp-snapshot 會啟動帶有 CDP 的 Chromium,執行 browser doctor --deep,並驗證角色 快照包含連結 URL、游標提升的可點擊項目,以及 iframe 中繼資料。
Ref 行為:
  • Ref 在不同導覽之間並不穩定;如果某些操作失敗,請重新執行 snapshot 並使用新的 ref。
  • /act 會在動作觸發替換後,在能證明替換分頁時回傳目前原始的 targetId。後續命令請繼續使用穩定的分頁 id/標籤。
  • 如果角色快照是使用 --frame 擷取,角色 ref 會限定在該 iframe 中,直到下一次角色快照為止。
  • 未知或過期的 axN ref 會快速失敗,而不是落入 Playwright 的 aria-ref 選擇器。發生這種情況時,請在同一個分頁上執行新的快照。

等待增強功能

你可以等待的不只是時間/文字:
  • 等待 URL(支援 Playwright glob):
    • openclaw browser wait --url "**/dash"
  • 等待載入狀態:
    • openclaw browser wait --load networkidle
  • 等待 JS 謂詞:
    • openclaw browser wait --fn "window.ready===true"
  • 等待選擇器變為可見:
    • openclaw browser wait "#main"
這些可以組合使用:
openclaw browser wait "#main" \
  --url "**/dash" \
  --load networkidle \
  --fn "window.ready===true" \
  --timeout-ms 15000

除錯工作流程

當動作失敗時(例如「不可見」、「嚴格模式違規」、「被覆蓋」):
  1. openclaw browser snapshot --interactive
  2. 使用 click <ref> / type <ref>(互動模式中優先使用角色 ref)
  3. 如果仍然失敗:使用 openclaw browser highlight <ref> 查看 Playwright 正在定位的目標
  4. 如果頁面行為異常:
    • openclaw browser errors --clear
    • openclaw browser requests --filter api --clear
  5. 若要深入除錯:錄製追蹤:
    • openclaw browser trace start
    • 重現問題
    • openclaw browser trace stop(列印 TRACE:<path>

JSON 輸出

--json 用於指令碼和結構化工具。 範例:
openclaw browser status --json
openclaw browser snapshot --interactive --json
openclaw browser requests --filter api --json
openclaw browser cookies --json
JSON 中的角色快照包含 refs 以及一小段 stats 區塊(lines/chars/refs/interactive),讓工具能推理酬載大小與密度。

狀態與環境調整項

這些對於「讓網站表現得像 X」的工作流程很有用:
  • Cookie:cookiescookies setcookies clear
  • 儲存空間:storage local|session get|set|clear
  • 離線:set offline on|off
  • 標頭:set headers --headers-json '{"X-Debug":"1"}'(仍支援舊版 set headers --json '{"X-Debug":"1"}'
  • HTTP 基本驗證:set credentials user pass(或 --clear
  • 地理位置:set geo <lat> <lon> --origin "https://example.com"(或 --clear
  • 媒體:set media dark|light|no-preference|none
  • 時區 / 語系:set timezone ...set locale ...
  • 裝置 / 檢視區:
    • set device "iPhone 14"(Playwright 裝置預設值)
    • set viewport 1280 720

安全性與隱私

  • openclaw 瀏覽器設定檔可能包含已登入的工作階段;請將其視為敏感資訊。
  • browser act kind=evaluate / openclaw browser evaluatewait --fn 會在頁面脈絡中執行任意 JavaScript。提示注入可能會引導 這項行為。如果不需要,請用 browser.evaluateEnabled=false 停用。
  • 如需登入與反機器人注意事項(X/Twitter 等),請參閱 瀏覽器登入 + X/Twitter 發文
  • 保持 Gateway/節點主機私密(loopback 或僅限 tailnet)。
  • 遠端 CDP 端點功能強大;請透過隧道連線並加以保護。
嚴格模式範例(預設封鎖私有/內部目的地):
{
  browser: {
    ssrfPolicy: {
      dangerouslyAllowPrivateNetwork: false,
      hostnameAllowlist: ["*.example.com", "example.com"],
      allowedHostnames: ["localhost"], // optional exact allow
    },
  },
}

相關