API浏览器控制 API
如需进行设置、配置和故障排除,请参阅 Browser。
本页面是本地控制 HTTP API、openclaw browser
CLI 以及脚本模式(快照、引用、等待、调试流程)的参考文档。
控制 API(可选)
Section titled “控制 API(可选)”仅适用于本地集成,Gateway(网关) 公开了一个小型回环 HTTP API:
- 状态/启动/停止:
GET /、POST /start、POST /stop - 标签页:
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId - 快照/截图:
GET /snapshot,POST /screenshot - 操作:
POST /navigate,POST /act - 钩子:
POST /hooks/file-chooser,POST /hooks/dialog - 下载:
POST /download、POST /wait/download - 权限:
POST /permissions/grant - 调试:
GET /console、POST /pdf - 调试:
GET /errors、GET /requests、POST /trace/start、POST /trace/stop、POST /highlight - 网络:
POST /response/body - 状态:
GET /cookies,POST /cookies/set,POST /cookies/clear - 状态:
GET /storage/:kind,POST /storage/:kind/set,POST /storage/:kind/clear - 设置:
POST /set/offline、POST /set/headers、POST /set/credentials、POST /set/geolocation、POST /set/media、POST /set/timezone、POST /set/locale、POST /set/device
所有端点都接受 ?profile=<name>。POST /start?headless=trueOpenClaw 请求针对本地托管配置文件的一次性无头启动,而不更改持久化的浏览器配置;仅附加、远程 CDP 和现有会话配置文件会拒绝该覆盖,因为 OpenClaw 不会启动这些浏览器进程。
如果配置了共享密钥网关身份验证,浏览器 HTTP 路由也需要身份验证:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>或使用该密码进行 HTTP Basic 认证
注意:
- 此独立回环浏览器 API 不使用受信任代理或 Tailscale Serve 身份标头。
- 如果
gateway.auth.mode是none或trusted-proxy,这些回环浏览器路由不会继承那些承载身份的模式;请将它们保持为仅限回环访问。
/act 错误约定
Section titled “/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):该操作不支持现有会话配置文件。
其他运行时故障仍可能返回 { "error": "<message>" } 而不带 code 字段。
Playwright 要求
Section titled “Playwright 要求”某些功能(导航/操作/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)
仍然需要 Playwright 的部分:
navigateact- 依赖 Playwright 原生 AI 快照格式的 AI 快照
- CSS 选择器元素截图 (
--element) - 完整浏览器 PDF 导出
元素屏幕截图也会拒绝 --full-page;路由返回 fullPage is not supported for element screenshots。
如果看到 Playwright is not available in this gateway build,说明打包的
Gateway(网关) 缺少核心浏览器运行时依赖。请重新安装或更新
OpenClaw,然后重启网关。对于 Docker,还请按照下文所示安装 Chromium
浏览器二进制文件。
Docker Playwright 安装
Section titled “Docker Playwright 安装”如果您的 Gateway(网关) 在 Docker 中运行,请避免 Gateway(网关)Dockernpx playwrightnpm(npm 覆盖冲突)。
对于自定义镜像,请将 Chromium 预构建到镜像中:
OPENCLAW_INSTALL_BROWSER=1 ./scripts/docker/setup.sh对于现有镜像,改为通过随附的 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 或绑定挂载进行持久化。OpenClaw 会自动检测 Linux 上已持久化的
Chromium。请参阅 Docker。
工作原理(内部)
Section titled “工作原理(内部)”一个小型回环控制服务器接受 HTTP 请求,并通过 CDP 连接到基于 Chromium 的浏览器。高级操作(点击/输入/快照/PDF)通过 CDP 之上的 Playwright 进行;当 Playwright 缺失时,仅支持非 Playwright 操作。在底层本地/远程浏览器和配置文件自由切换的同时,代理看到的始终是一个稳定的接口。
CLI 快速参考
Section titled “CLI 快速参考”所有命令都接受 --browser-profile <name> 以针对特定的配置文件,并接受 --json 以获取机器可读的输出。
基础:状态、标签页、打开/聚焦/关闭
openclaw browser statusopenclaw browser startopenclaw browser start --headless # one-shot local managed headless launchopenclaw browser stop # also clears emulation on attach-only/remote CDPopenclaw browser tabsopenclaw browser tab # shortcut for current tabopenclaw browser tab newopenclaw browser tab select 2openclaw browser tab close 2openclaw browser open https://example.comopenclaw browser focus abcd1234openclaw browser close abcd1234检查:截图、快照、控制台、错误、请求
openclaw browser screenshotopenclaw browser screenshot --full-pageopenclaw browser screenshot --ref 12 # or --ref e12openclaw browser screenshot --labelsopenclaw browser snapshotopenclaw browser snapshot --format aria --limit 200openclaw browser snapshot --interactive --compact --depth 6openclaw browser snapshot --efficientopenclaw browser snapshot --labelsopenclaw browser snapshot --urlsopenclaw browser snapshot --selector "#main" --interactiveopenclaw browser snapshot --frame "iframe#main" --interactiveopenclaw browser console --level erroropenclaw browser errors --clearopenclaw browser requests --filter api --clearopenclaw browser pdfopenclaw browser responsebody "**/api" --max-chars 5000操作:navigate、click、type、drag、wait、evaluate
openclaw browser navigate https://example.comopenclaw browser resize 1280 720openclaw browser click 12 --double # or e12 for role refsopenclaw browser click-coords 120 340 # viewport coordinatesopenclaw browser type 23 "hello" --submitopenclaw browser press Enteropenclaw browser hover 44openclaw browser scrollintoview e12openclaw browser drag 10 11openclaw browser select 9 OptionA OptionBopenclaw browser download e12 report.pdfopenclaw browser waitfordownload report.pdfopenclaw browser upload /tmp/openclaw/uploads/file.pdfopenclaw browser fill --fields '[{"ref":"1","type":"text","value":"Ada"}]'openclaw browser dialog --acceptopenclaw browser dialog --dismiss --dialog-id d1openclaw browser wait --text "Done"openclaw browser wait "#main" --url "**/dash" --load networkidle --fn "window.ready===true"openclaw browser evaluate --fn '(el) => el.textContent' --ref 7openclaw browser evaluate --timeout-ms 30000 --fn 'async () => { await window.ready; return true; }'openclaw browser highlight e12openclaw browser trace startopenclaw browser trace stop状态:cookies、storage、offline、headers、geo、device
openclaw browser cookiesopenclaw browser cookies set session abc123 --url "https://example.com"openclaw browser cookies clearopenclaw browser storage local getopenclaw browser storage local set theme darkopenclaw browser storage session clearopenclaw browser set offline onopenclaw browser set headers --headers-json '{"X-Debug":"1"}'openclaw browser set credentials user pass # --clear to removeopenclaw browser set geo 37.7749 -122.4194 --origin "https://example.com"openclaw browser set media darkopenclaw browser set timezone America/New_Yorkopenclaw browser set locale en-USopenclaw browser set device "iPhone 14"备注:
upload和dialog是准备(arming)调用;在触发选择器/对话框的点击/按压操作之前运行它们。如果某个操作打开了模态框,该操作响应将包含blockedByDialog和browserState.dialogs.pending;传递该dialogId以直接响应。在 OpenClaw 之外处理的对话框将显示在browserState.dialogs.recent下。click/type/etc 需要来自snapshot的ref(数字12、角色引用e12或可操作的 ARIA 引用ax12)。出于意图,操作不支持 CSS 选择器。当可见视口位置是唯一可靠的目标时,请使用click-coords。- 下载、跟踪和上传路径被限制在 OpenClaw 临时根目录:
/tmp/openclaw{,/downloads,/uploads}(回退:${os.tmpdir()}/openclaw/...)。 upload也可以通过--input-ref或--element直接设置文件输入。
当 OpenClaw 能够证明被替换的标签页(例如相同的 URL,或表单提交后单个旧标签页变为单个新标签页)时,稳定的标签页 ID 和标签可以在 Chromium 原始目标替换中保留下来。原始目标 ID 仍然是不稳定的;在脚本中优先使用 suggestedTargetId 中的 tabs。
快照标志概览:
--format ai(Playwright 的默认选项):带有数字引用(aria-ref="<n>")的 AI 快照。--format aria:带有axN引用的无障碍树。当 Playwright 可用时,OpenClaw 会将带有后端 DOM ID 的引用绑定到活动页面,以便后续操作可以使用它们;否则,将输出视为仅用于检查。--efficient(或--mode efficient):紧凑型角色快照预设。设置browser.snapshotDefaults.mode: "efficient"可将其设为默认值(请参阅 Gateway(网关) configuration)。--interactive、--compact、--depth、--selector强制生成带有ref=e12引用的角色快照。--frame "<iframe>"将角色快照的范围限定在 iframe 内。--labels添加一个仅视口的屏幕截图,并覆盖引用标签(打印MEDIA:<path>)。--urls将发现的链接目标附加到 AI 快照中。
OpenClaw 支持两种“快照”样式:
-
AI 快照(数字引用):
openclaw browser snapshot(默认;--format ai)- 输出:包含数字引用的文本快照。
- 操作:
openclaw browser click 12、openclaw browser type 23 "hello"。 - 在内部,引用通过 Playwright 的
aria-ref进行解析。
-
角色快照(类似
e12的角色引用):openclaw browser snapshot --interactive(或--compact、--depth、--selector、--frame)- 输出:带有
[ref=e12](以及可选的[nth=1])的基于角色的列表/树。 - 操作:
openclaw browser click e12、openclaw browser highlight e12。 - 在内部,ref 通过
getByRole(...)解析(对于重复项则加上nth())。 - 添加
--labels以包含带有叠加e12标签的视口截图。 - 当链接文本有歧义且代理需要具体的导航目标时,添加
--urls。
- 输出:带有
-
ARIA 快照(类似
ax12的 ARIA refs):openclaw browser snapshot --format aria- 输出:作为结构化节点的可访问性树。
- 操作:当快照路径可以通过 Playwright 和 Chrome 后端 DOM ID 绑定 ref 时,
openclaw browser click ax12有效。
-
如果 Playwright 不可用,ARIA 快照对于检查仍然有用,但 refs 可能无法执行。当您需要操作 refs 时,请使用
--format ai或--interactive重新快照。 -
raw-CDP 回退路径的 Docker 验证:
pnpm test:docker:browser-cdp-snapshot启动带有 CDP 的 Chromium,运行browser doctor --deep,并验证角色快照包含链接 URL、光标提升的可点击元素以及 iframe 元数据。
Ref 行为:
- Refs 在导航之间不稳定;如果操作失败,请重新运行
snapshot并使用新的 ref。 - 当能够证明替换选项卡时,
/act会在操作触发的替换后返回当前的原始targetId。对于后续命令,请继续使用稳定的选项卡 ID/标签。 - 如果角色快照是使用
--frame获取的,则角色 refs 的作用域限定在该 iframe,直到下一次角色快照。 - 未知或过时的
axNrefs 会快速失败,而不是回退到 Playwright 的aria-ref选择器。发生这种情况时,请在同一选项卡上运行新的快照。
等待增强功能
Section titled “等待增强功能”您可以等待的不仅仅是时间/文本:
- 等待 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当操作失败时(例如“不可见”、“严格模式违规”、“被覆盖”):
openclaw browser snapshot --interactive- 使用
click <ref>/type <ref>(在交互模式下首选角色 refs) - 如果仍然失败:
openclaw browser highlight <ref>以查看 Playwright 正在以什么为目标 - 如果页面表现异常:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- 进行深度调试:记录跟踪:
openclaw browser trace start- 复现问题
openclaw browser trace stop(打印TRACE:<path>)
JSON 输出
Section titled “JSON 输出”--json 用于脚本编写和结构化工具。
示例:
openclaw browser status --jsonopenclaw browser snapshot --interactive --jsonopenclaw browser requests --filter api --jsonopenclaw browser cookies --jsonJSON 中的角色快照包含 refs 加上一个小 stats 块(行/字符/引用/交互式),以便工具可以推断负载大小和密度。
状态和环境控制项
Section titled “状态和环境控制项”这些对于“让网站表现得像 X”的工作流非常有用:
- Cookies:
cookies、cookies set、cookies clear - 存储:
storage local|session get|set|clear - 离线:
set offline on|off - Headers:
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 evaluate和wait --fn在页面上下文中执行任意 JavaScript。提示注入可以操纵 此行为。如果不需要,可以使用browser.evaluateEnabled=false将其禁用。- 当页面端函数
可能需要比默认评估超时更长的时间时,请使用
openclaw browser evaluate --timeout-ms <ms>。 - 有关登录和反机器人说明(X/Twitter 等),请参阅 Browser login + X/Twitter posting。
- 请保持 Gateway(网关)/节点主机的私密性(仅限回环或 tailnet)。
- 远程 CDP 端点功能强大;请对其进行隧道传输和保护。
严格模式示例(默认阻止私有/内部目标):
{ browser: { ssrfPolicy: { dangerouslyAllowPrivateNetwork: false, hostnameAllowlist: ["*.example.com", "example.com"], allowedHostnames: ["localhost"], // optional exact allow }, },}- Browser - 概述、配置、配置文件、安全性
- Browser login - 登录站点
- Browser Linux 故障排除
- Browser WSL2 故障排除