OpenClaw 可以运行一个由代理控制的专用 Chrome/Brave/Edge/Chromium 配置文件。 它与你的个人浏览器相互隔离,并通过 Gateway 内部的一个小型本地控制服务进行管理(仅限 loopback)。 入门视角:Documentation Index
Fetch the complete documentation index at: https://openclaw.zhcndoc.com/llms.txt
Use this file to discover all available pages before exploring further.
- 把它看作一个独立的、仅供代理使用的浏览器。
openclaw配置文件不会影响你的个人浏览器配置文件。- 代理可以在安全通道中打开标签页、读取页面、点击和输入。
- 内置的
user配置文件通过 Chrome MCP 附加到你真实已登录的 Chrome 会话。
你将获得什么
- 一个名为 openclaw 的独立浏览器配置文件(默认橙色强调色)。
- 确定性的标签页控制(列出/打开/聚焦/关闭)。
- 代理动作(点击/输入/拖拽/选择)、快照、截图、PDF。
- 一个随附的
browser-automation技能,教导代理在启用浏览器插件时使用快照、 稳定标签页、失效引用和手动阻塞恢复循环。 - 可选的多配置文件支持(
openclaw、work、remote、…)。
快速开始
openclaw browser 完全缺失,或者代理提示浏览器工具不可用,请跳到 缺少 browser 命令或工具。
插件控制
默认的browser 工具是一个内置插件。可将其禁用,以替换为另一个注册相同 browser 工具名称的插件:
plugins.entries.browser.enabled 以及 browser.enabled=true。仅禁用插件会将 openclaw browser CLI、browser.request 网关方法、代理工具和控制服务作为一个整体移除;你的 browser.* 配置会保持不变,以便替换使用。
浏览器配置更改需要重启 Gateway,以便插件重新注册其服务。
代理指南
工具配置文件说明:tools.profile: "coding" 包含 web_search 和
web_fetch,但不包含完整的 browser 工具。如果代理或
派生的子代理应使用浏览器自动化,请在配置文件阶段添加 browser:
agents.list[].tools.alsoAllow: ["browser"]。
仅有 tools.subagents.tools.allow: ["browser"] 不够,因为子代理
策略是在配置文件过滤之后应用的。
浏览器插件提供两级代理指导:
browser工具描述包含简洁的常驻契约:选择正确的配置文件、让引用保持在同一标签页中、使用tabId/标签进行标签页定位,并为多步骤工作加载浏览器技能。- 随附的
browser-automation技能包含更长的操作循环: 先检查状态/标签页、为任务标签页加标签、操作前先快照、UI 更改后重新快照、失效引用仅恢复一次,并将登录/2FA/captcha 或摄像头/麦克风阻塞报告为手动操作,而不是猜测。
缺少 browser 命令或工具
如果升级后openclaw browser 变成未知命令、browser.request 缺失,或者代理报告浏览器工具不可用,通常原因是 plugins.allow 列表中未包含 browser,且不存在根级 browser 配置块。请添加它:
browser 块,例如 browser.enabled=true 或 browser.profiles.<name>,会在受限的 plugins.allow 下也激活内置浏览器插件,这与通道配置行为一致。plugins.entries.browser.enabled=true 和 tools.alsoAllow: ["browser"] 本身不能替代 allowlist 成员资格。完全移除 plugins.allow 也会恢复默认行为。
配置文件:openclaw vs user
openclaw:受管理、隔离的浏览器(无需扩展)。user:内置的 Chrome MCP 附加配置文件,用于你的真实已登录 Chrome 会话。
- 默认:使用隔离的
openclaw浏览器。 - 当现有登录会话很重要,且用户在电脑前可以点击/批准任何附加提示时,优先使用
profile="user"。 profile是你想要特定浏览器模式时的显式覆盖项。
browser.defaultProfile: "openclaw"。
配置
浏览器设置位于~/.openclaw/openclaw.json。
端口与可达性
端口与可达性
- 控制服务绑定到 loopback 上一个由
gateway.port派生的端口(默认18791= gateway + 2)。覆盖gateway.port或OPENCLAW_GATEWAY_PORT会在同一族中改变派生端口。 - 本地
openclaw配置文件会自动分配cdpPort/cdpUrl;只有在远程 CDP 时才设置这些值。未设置时,cdpUrl默认为受管理的本地 CDP 端口。 remoteCdpTimeoutMs适用于远程和attachOnlyCDP HTTP 可达性 检查以及打开标签页的 HTTP 请求;remoteCdpHandshakeTimeoutMs适用于 它们的 CDP WebSocket 握手。localLaunchTimeoutMs是本地启动的受管理 Chrome 进程暴露其 CDP HTTP 端点的预算时间。localCdpReadyTimeoutMs是在进程被发现后, CDP websocket 就绪的后续预算时间。 在 Raspberry Pi、低端 VPS 或 Chromium 启动较慢的旧硬件上,请提高这些值。数值必须是正整数,最大为120000ms;无效 的配置值会被拒绝。- 受管理 Chrome 的重复启动/就绪失败会按 配置文件触发熔断。连续多次失败后,OpenClaw 会短暂暂停新的启动 尝试,而不是在每次浏览器工具调用时都生成 Chromium。请修复 启动问题、如果不需要则禁用浏览器,或在修复后重启 Gateway。
- 当调用方未传入
timeoutMs时,actionTimeoutMs是浏览器act请求的默认预算。客户端传输会增加一个小的缓冲窗口,以便长时间等待可以完成,而不会在 HTTP 边界超时。 tabCleanup是针对由主代理浏览器会话打开的标签页的尽力清理。子代理、cron 和 ACP 生命周期清理仍会在会话结束时关闭它们显式跟踪的标签页;主会话会保留活动标签页以便复用,然后在后台关闭空闲或超出数量的跟踪标签页。
SSRF 策略
SSRF 策略
- 浏览器导航和打开标签页在导航前会进行 SSRF 防护,并在最终的
http(s)URL 上尽力再次检查。 - 在严格 SSRF 模式下,远程 CDP 端点发现和
/json/version探测(cdpUrl)也会被检查。 - Gateway/provider 的
HTTP_PROXY、HTTPS_PROXY、ALL_PROXY和NO_PROXY环境变量不会自动代理 OpenClaw 管理的浏览器。受管理 Chrome 默认直接启动,因此 provider 的代理设置不会削弱浏览器的 SSRF 检查。 - 若要为受管理浏览器本身设置代理,请通过
browser.extraArgs显式传递 Chrome 代理标志,例如--proxy-server=...或--proxy-pac-url=...。严格 SSRF 模式会阻止显式的浏览器代理路由,除非明确启用了私有网络浏览器访问。 browser.ssrfPolicy.dangerouslyAllowPrivateNetwork默认关闭;仅在私有网络浏览器访问被明确信任时启用。browser.ssrfPolicy.allowPrivateNetwork仍然作为旧别名受支持。
配置文件行为
配置文件行为
attachOnly: true表示永不启动本地浏览器;仅在已有浏览器正在运行时附加。headless可以在全局或每个本地受管理配置文件上设置。每个配置文件的值会覆盖browser.headless,因此一个本地启动的配置文件可以保持无头,而另一个保持可见。POST /start?headless=true和openclaw browser start --headless会为本地受管理配置文件请求一次性的无头启动,而不会重写browser.headless或配置文件配置。现有会话、仅附加以及远程 CDP 配置文件会拒绝该覆盖,因为 OpenClaw 不会启动这些浏览器进程。- 在没有
DISPLAY或WAYLAND_DISPLAY的 Linux 主机上,当环境或全局/配置文件配置都未显式选择有头模式时,本地受管理配置文件会自动默认无头。openclaw browser status --json会将headlessSource报告为env、profile、config、request、linux-display-fallback或default。 OPENCLAW_BROWSER_HEADLESS=1会强制当前进程的本地受管理启动为无头模式。OPENCLAW_BROWSER_HEADLESS=0会强制普通启动为有头模式,并在没有显示服务器的 Linux 主机上返回可操作的错误;显式的start --headless请求仍会在该次启动中优先生效。executablePath可以在全局或每个本地受管理配置文件上设置。每个配置文件的值会覆盖browser.executablePath,因此不同的受管理配置文件可以启动不同的基于 Chromium 的浏览器。两种形式都接受~作为你的操作系统主目录。color(顶层和每个配置文件)会给浏览器 UI 着色,以便你看出当前活动的是哪个配置文件。- 默认配置文件是
openclaw(受管理的独立模式)。使用defaultProfile: "user"可切换到已登录的用户浏览器。 - 自动检测顺序:如果系统默认浏览器基于 Chromium,则优先使用;否则依次为 Chrome → Brave → Edge → Chromium → Chrome Canary。
driver: "existing-session"使用 Chrome DevTools MCP,而不是原始 CDP。不要为该驱动设置cdpUrl。- 当现有会话配置文件需要附加到非默认的 Chromium 用户配置文件(Brave、Edge 等)时,请设置
browser.profiles.<name>.userDataDir。此路径同样接受~作为你的操作系统主目录。
使用 Brave 或其他基于 Chromium 的浏览器
如果你的 系统默认 浏览器是基于 Chromium 的(Chrome/Brave/Edge 等), OpenClaw 会自动使用它。设置browser.executablePath 可覆盖自动检测。
顶层和按配置文件的 executablePath 值都支持使用 ~
表示你的操作系统主目录:
- macOS
- Windows
- Linux
executablePath 只会影响 OpenClaw
启动的本地托管配置文件。existing-session 配置文件会改为附加到
已经运行的浏览器,而远程 CDP 配置文件则使用 cdpUrl 后面的浏览器。
本地控制 vs 远程控制
- 本地控制(默认): Gateway 启动回环控制服务,并且可以启动本地浏览器。
- 远程控制(node host): 在拥有浏览器的机器上运行 node host;Gateway 将浏览器操作代理到它。
- 远程 CDP: 设置
browser.profiles.<name>.cdpUrl(或browser.cdpUrl)以 附加到远程基于 Chromium 的浏览器。在这种情况下,OpenClaw 不会启动本地浏览器。 - 对于在回环上外部托管的 CDP 服务(例如在 Docker 中发布到
127.0.0.1的 Browserless),也要设置attachOnly: true。没有attachOnly的回环 CDP 会被视为本地的、由 OpenClaw 管理的浏览器配置文件。 headless只影响 OpenClaw 启动的本地托管配置文件。它不会重启或更改 existing-session 或远程 CDP 浏览器。executablePath遵循相同的本地托管配置文件规则。对正在运行的本地托管配置文件更改它,会将该配置文件标记为需要重启/协调,以便 下一次启动使用新的二进制文件。
- 本地托管配置文件:
openclaw browser stop会停止 OpenClaw 启动的浏览器进程 - 仅附加和远程 CDP 配置文件:
openclaw browser stop会关闭当前 控制会话,并释放 Playwright/CDP 模拟覆盖(视口、 颜色方案、语言区域、时区、离线模式及类似状态),即使该浏览器进程并不是由 OpenClaw 启动的
- 查询令牌(例如
https://provider.example?token=<token>) - HTTP Basic 认证(例如
https://user:pass@provider.example)
/json/* 端点以及连接
CDP WebSocket 时都会保留认证信息。请优先使用环境变量或 secrets manager
来管理令牌,而不是将其提交到配置文件中。
Node 浏览器代理(零配置默认)
如果你在拥有浏览器的机器上运行 node host,OpenClaw 可以 自动将浏览器工具调用路由到该节点,而无需任何额外的浏览器配置。 这是远程 Gateway 的默认路径。 说明:- node host 通过 代理命令 暴露其本地浏览器控制服务器。
- 配置文件来自 node 自己的
browser.profiles配置(与本地相同)。 nodeHost.browserProxy.allowProfiles是可选项。保持为空以使用旧版/默认行为:所有已配置的配置文件仍可通过代理访问,包括配置文件的创建/删除路由。- 如果你设置了
nodeHost.browserProxy.allowProfiles,OpenClaw 会将其视为最小权限边界:只有白名单中的配置文件可以被目标化,且代理面上的持久化配置文件创建/删除路由会被阻止。 - 如果你不想使用它,请禁用:
- 在 node 上:
nodeHost.browserProxy.enabled=false - 在 gateway 上:
gateway.nodes.browser.mode="off"
- 在 node 上:
Browserless(托管远程 CDP)
Browserless 是一个托管的 Chromium 服务,通过 HTTPS 和 WebSocket 暴露 CDP 连接 URL。OpenClaw 可以使用任一种形式,但 对于远程浏览器配置文件,最简单的选项是直接使用 Browserless 连接文档中的 WebSocket URL。 示例:- 将
<BROWSERLESS_API_KEY>替换为你真实的 Browserless 令牌。 - 选择与你的 Browserless 账户匹配的区域端点(参见其文档)。
- 如果 Browserless 提供的是 HTTPS 基础 URL,你可以将其转换为
wss://以进行直接 CDP 连接,或者保留 HTTPS URL 并让 OpenClaw 发现/json/version。
同一主机上的 Browserless Docker
当 Browserless 由 Docker 自托管且 OpenClaw 运行在主机上时,将 Browserless 视为外部托管的 CDP 服务:browser.profiles.browserless.cdpUrl 中的地址必须能够从
OpenClaw 进程访问。Browserless 也必须声明一个可访问的匹配端点;
将 Browserless 的 EXTERNAL 设置为与 OpenClaw 可访问的相同 WebSocket 基础地址,例如
ws://127.0.0.1:3000、ws://browserless:3000,或稳定的私有 Docker
网络地址。如果 /json/version 返回的 webSocketDebuggerUrl 指向一个
OpenClaw 无法访问的地址,那么 CDP 的 HTTP 部分看起来可能正常,而 WebSocket
附加仍然会失败。
对于回环上的 Browserless 配置文件,不要让 attachOnly 处于未设置状态。没有
attachOnly 时,OpenClaw 会将回环端口视为本地托管浏览器
配置文件,并可能报告该端口正在使用但并非由 OpenClaw 拥有。
直接 WebSocket CDP 提供商
某些托管浏览器服务暴露的是 直接 WebSocket 端点,而不是 标准的基于 HTTP 的 CDP 发现方式(/json/version)。OpenClaw 接受三种
CDP URL 形式,并会自动选择正确的连接策略:
- HTTP(S) 发现 —
http://host[:port]或https://host[:port]。 OpenClaw 调用/json/version来发现 WebSocket 调试器 URL,然后 连接。没有 WebSocket 回退。 - 直接 WebSocket 端点 —
ws://host[:port]/devtools/<kind>/<id>或wss://...,并带有/devtools/browser|page|worker|shared_worker|service_worker/<id>路径。OpenClaw 会通过 WebSocket 握手直接连接,并完全跳过/json/version。 - 裸 WebSocket 根地址 —
ws://host[:port]或wss://host[:port],且没有/devtools/...路径(例如 Browserless, Browserbase)。OpenClaw 会先尝试 HTTP/json/version发现(将协议标准化为http/https); 如果发现返回了webSocketDebuggerUrl,则使用它,否则 OpenClaw 会回退到在裸根地址上直接进行 WebSocket 握手。如果广告的 WebSocket 端点拒绝 CDP 握手,但配置的裸根地址接受它,OpenClaw 也会回退到该根地址。 这使得指向本地 Chrome 的裸ws://仍然可以连接,因为 Chrome 只接受 来自/json/version的特定目标路径上的 WebSocket 升级,而托管 提供商在其发现端点公告的是一个不适合 Playwright CDP 的短期 URL 时, 仍然可以使用其根 WebSocket 端点。
Browserbase
Browserbase 是一个用于运行 无头浏览器的云平台,内置 CAPTCHA 解决、隐身模式和住宅代理。- 注册并从 概览仪表板 中复制你的 API Key。
- 将
<BROWSERBASE_API_KEY>替换为你真实的 Browserbase API key。 - Browserbase 会在 WebSocket 连接时自动创建浏览器会话,因此无需 手动创建会话步骤。
- 免费层允许一个并发会话和每月一个浏览器小时。 付费计划限制请参见 定价。
- 请参阅 Browserbase 文档 获取完整的 API 参考、SDK 指南和集成示例。
安全性
核心要点:- 浏览器控制仅限回环;访问通过 Gateway 的认证或 node 配对进行。
- 独立的回环浏览器 HTTP API 仅使用 共享密钥认证:
gateway token bearer 认证、
x-openclaw-password,或使用 已配置的 gateway 密码进行 HTTP Basic 认证。 - Tailscale Serve 身份标头和
gateway.auth.mode: "trusted-proxy"不会对该独立回环浏览器 API 进行认证。 - 如果启用了浏览器控制但未配置共享密钥认证,OpenClaw 会在启动时自动生成
gateway.auth.token并将其持久化到配置中。 - 当
gateway.auth.mode已经是password、none或trusted-proxy时,OpenClaw 不会 自动生成该令牌。 - 将 Gateway 和任何 node host 保持在私有网络中(Tailscale);避免公开暴露。
- 将远程 CDP URL/令牌视为密钥;优先使用环境变量或 secrets manager。
- 尽可能优先使用加密端点(HTTPS 或 WSS)和短期令牌。
- 避免将长期有效的令牌直接嵌入配置文件。
配置文件(多浏览器)
OpenClaw 支持多个命名配置文件(路由配置)。配置文件可以是:- openclaw-managed:一个专用的基于 Chromium 的浏览器实例,拥有自己的用户数据目录 + CDP 端口
- remote:一个显式的 CDP URL(在其他地方运行的基于 Chromium 的浏览器)
- existing session:通过 Chrome DevTools MCP 自动连接使用你现有的 Chrome 配置文件
- 如果缺少
openclaw配置文件,会自动创建。 user配置文件是内置的,用于 Chrome MCP existing-session 附加。- existing-session 配置文件除了
user之外都需要显式启用;使用--driver existing-session创建它们。 - 本地 CDP 端口默认从 18800–18899 分配。
- 删除配置文件会把其本地数据目录移动到废纸篓。
?profile=<name>;CLI 使用 --browser-profile。
通过 Chrome DevTools MCP 使用现有会话
OpenClaw 也可以通过官方的 Chrome DevTools MCP 服务器连接到正在运行的基于 Chromium 的浏览器配置文件。这样会复用该浏览器配置文件中已经打开的标签页和登录状态。 官方背景和设置参考: 内置配置文件:user
- 内置的
user配置文件使用 Chrome MCP 自动连接,它会目标指向默认的本地 Google Chrome 配置文件。
userDataDir。
~ 会展开为你的操作系统主目录:
- 打开该浏览器用于远程调试的 inspect 页面。
- 启用远程调试。
- 保持浏览器运行,并在 OpenClaw 连接时批准连接提示。
- Chrome:
chrome://inspect/#remote-debugging - Brave:
brave://inspect/#remote-debugging - Edge:
edge://inspect/#remote-debugging
status显示driver: existing-sessionstatus显示transport: chrome-mcpstatus显示running: truetabs列出你已经打开的浏览器标签页snapshot返回所选实时标签页中的 refs
- 目标基于 Chromium 的浏览器版本是
144+ - 该浏览器的 inspect 页面中已启用远程调试
- 浏览器已显示连接同意提示,并且你已接受
openclaw doctor会迁移旧的基于扩展的浏览器配置,并检查默认自动连接配置文件的本地 Chrome 是否已安装,但它无法替你启用浏览器端的远程调试
- 当你需要用户已登录的浏览器状态时,请使用
profile="user"。 - 如果你使用自定义的现有会话配置文件,请传入那个明确的配置文件名。
- 只有在用户在电脑前可以批准连接提示时,才应选择此模式。
- Gateway 或节点主机可以启动
npx chrome-devtools-mcp@latest --autoConnect
- 这条路径比隔离的
openclaw配置文件风险更高,因为它可以在你已登录的浏览器会话内执行操作。 - OpenClaw 不会为此驱动启动浏览器;它只会附加连接。
- OpenClaw 在这里使用官方 Chrome DevTools MCP 的
--autoConnect流程。如果设置了userDataDir,则会原样传递,以指向该用户数据目录。 - existing-session 可以在所选主机上连接,也可以通过已连接的浏览器节点连接。如果 Chrome 位于其他地方且没有连接浏览器节点,请改用远程 CDP 或节点主机。
自定义 Chrome MCP 启动
当默认的npx chrome-devtools-mcp@latest 流程不符合你的需求时,可以按配置文件覆盖启动的 Chrome DevTools MCP 服务器(离线主机、固定版本、捆绑二进制等):
| 字段 | 作用 |
|---|---|
mcpCommand | 要启动的可执行文件,用它替代 npx。按原样解析;会尊重绝对路径。 |
mcpArgs | 逐字传递给 mcpCommand 的参数数组。替换默认的 chrome-devtools-mcp@latest --autoConnect 参数。 |
cdpUrl 时,OpenClaw 会跳过 --autoConnect 并自动将端点转发给 Chrome MCP:
http(s)://...→--browserUrl <url>(DevTools HTTP 发现端点)。ws(s)://...→--wsEndpoint <url>(直接 CDP WebSocket)。
userDataDir 不能同时使用:当设置了 cdpUrl 时,userDataDir 会在 Chrome MCP 启动时被忽略,因为 Chrome MCP 是附加到端点后面的正在运行浏览器,而不是打开一个配置文件目录。
现有会话功能限制
现有会话功能限制
与受管理的
openclaw 配置文件相比,existing-session 驱动的限制更多:- 截图 — 页面捕获和
--ref元素捕获可用;CSS--element选择器不可用。--full-page不能与--ref或--element组合。页面或基于 ref 的元素截图不需要 Playwright。 - 操作 —
click、type、hover、scrollIntoView、drag和select需要 snapshot refs(不支持 CSS 选择器)。click-coords点击可见视口坐标,不需要 snapshot ref。click仅支持鼠标左键。type不支持slowly=true;请使用fill或press。press不支持delayMs。type、hover、scrollIntoView、drag、select、fill和evaluate不支持每次调用的超时。select只接受单个值。 - 等待 / 上传 / 对话框 —
wait --url支持精确匹配、子串和 glob 模式;不支持wait --load networkidle。上传钩子需要ref或inputRef,一次只能上传一个文件,不支持 CSSelement。对话框钩子不支持超时覆盖。 - 仅受管理模式可用的功能 — 批量操作、PDF 导出、下载拦截和
responsebody仍然需要受管理的浏览器路径。
隔离保证
- 专用用户数据目录:绝不会触碰你的个人浏览器配置文件。
- 专用端口:避免使用
9222,以防与开发工作流冲突。 - 确定性的标签页控制:
tabs会先返回suggestedTargetId,然后返回稳定的tabId句柄,如t1、可选标签以及原始targetId。Agent 应复用suggestedTargetId;原始 ID 仍可用于调试和兼容性。
浏览器选择
在本地启动时,OpenClaw 按以下顺序选择第一个可用的浏览器:- Chrome
- Brave
- Edge
- Chromium
- Chrome Canary
browser.executablePath 覆盖它。
平台:
- macOS:检查
/Applications和~/Applications。 - Linux:检查
/usr/bin、/snap/bin、/opt/google、/opt/brave.com、/usr/lib/chromium和/usr/lib/chromium-browser下常见的 Chrome/Brave/Edge/Chromium 位置。 - Windows:检查常见安装位置。
控制 API(可选)
用于脚本和调试,Gateway 提供一个小型的仅限 loopback 的 HTTP 控制 API,以及对应的openclaw browser CLI(快照、refs、wait 增强、JSON 输出、调试工作流)。完整参考请见
浏览器控制 API。
故障排查
关于 Linux 特定问题(尤其是 snap Chromium),请参见 浏览器故障排查。 关于 WSL2 Gateway + Windows Chrome 分离主机部署,请参见 WSL2 + Windows + 远程 Chrome CDP 故障排查。CDP 启动失败 vs 导航 SSRF 拦截
这两类故障不同,对应的代码路径也不同。- CDP 启动或就绪失败 表示 OpenClaw 无法确认浏览器控制平面是否健康。
- 导航 SSRF 拦截 表示浏览器控制平面是健康的,但某个页面导航目标被策略拒绝。
- CDP 启动或就绪失败:
Chrome CDP websocket for profile "openclaw" is not reachable after startRemote CDP for profile "<name>" is not reachable at <cdpUrl>- 在未配置
attachOnly: true的情况下,若配置了 loopback 外部 CDP 服务,则会出现Port <port> is in use for profile "<name>" but not by openclaw
- 导航 SSRF 拦截:
open、navigate、snapshot 或打开标签页的流程在浏览器/网络策略错误下失败,但start和tabs仍然可用
- 如果
start失败并提示not reachable after start,请先排查 CDP 就绪性。 - 如果
start成功但tabs失败,则控制平面仍不健康。将其视为 CDP 可达性问题,而不是页面导航问题。 - 如果
start和tabs成功,但open或navigate失败,则浏览器控制平面是正常的,失败发生在导航策略或目标页面上。 - 如果
start、tabs和open都成功,则基本的受管理浏览器控制路径是健康的。
- 即使你没有配置
browser.ssrfPolicy,浏览器配置默认也会使用 fail-closed 的 SSRF 策略对象。 - 对于本地 loopback 的
openclaw受管理配置文件,CDP 健康检查会有意跳过对 OpenClaw 自身本地控制平面的浏览器 SSRF 可达性强制检查。 - 导航保护是独立的。
start或tabs成功并不意味着后续的open或navigate目标一定被允许。
- 默认情况下不要放宽浏览器 SSRF 策略。
- 优先使用更窄的主机例外,例如
hostnameAllowlist或allowedHostnames,而不是更宽泛的私有网络访问。 - 仅在明确受信任、且确实需要并已审查过私有网络浏览器访问的环境中使用
dangerouslyAllowPrivateNetwork: true。
Agent 工具 + 控制方式
Agent 只有一个工具用于浏览器自动化:browser— doctor/status/start/stop/tabs/open/focus/close/snapshot/screenshot/navigate/act
browser snapshot返回稳定的 UI 树(AI 或 ARIA)。browser act使用 snapshot 的refID 来点击/输入/拖拽/选择。browser screenshot捕获像素(整页、元素或带标签的 refs)。browser doctor检查 Gateway、插件、配置文件、浏览器和标签页的就绪状态。browser接受:profile用于选择命名的浏览器配置文件(openclaw、chrome,或远程 CDP)。target(sandbox|host|node)用于选择浏览器所在位置。- 在沙箱会话中,
target: "host"需要agents.defaults.sandbox.browser.allowHostControl=true。 - 如果省略
target:沙箱会话默认为sandbox,非沙箱会话默认为host。 - 如果连接了支持浏览器的节点,除非你固定
target="host"或target="node",否则该工具可能会自动路由到该节点。