---
summary: "本地与远程控制、节点浏览器代理和托管 CDP 提供程序"
title: "远程和托管浏览器"
read_when:
- "浏览器与网关运行在不同的机器上"
- "您正在附加到 Browserless、Browserbase 或 Notte"
- "您需要接受的 CDP URL 形状"
---
## 本地控制与远程控制
- **本地控制(默认):**网关启动环回控制服务并可以启动本地浏览器。无目标操作可以启动它(例如,`open`、`navigate` 或 `openclaw browser start`)。通过 `targetId`、选项卡 ID 或标签命名选项卡的操作永远不会启动已停止的浏览器,因为新浏览器无法包含该选项卡;启动浏览器或打开新选项卡,然后选择当前目标。
- **远程控制(节点主机):**运行节点主机(参见[节点](/nodes)用于配对和[节点主机CLI](/cli/node)为了`openclaw node run`)在有浏览器的机器上;网关将浏览器操作代理给它。
- **Remote CDP:** 设置 `browser.profiles..cdpUrl`(或 `browser.cdpUrl`)以附加到基于 Chromium- 的远程浏览器。在这种情况下,OpenClaw 将不会启动本地浏览器。
- 对于环回上外部管理的 CDP 服务(例如发布到 `127.0.0.1` 的 Docker 中的无浏览器),还设置 `attachOnly: true`。没有 `attachOnly` 的环回 CDP 被视为本地 OpenClaw- 托管浏览器配置文件。
- `headless` 只影响 OpenClaw 启动的本地托管配置文件。它不会重启或更改现有会话或远程 CDP 浏览器。
- `executablePath` 遵循相同的本地托管配置文件规则。在正在运行的本地托管配置文件上更改它会将该配置文件标记为 restart/reconcile,以便下次启动时使用新的二进制文件。
停止行为会因配置文件模式而不同:
- 本地托管配置文件:`openclaw browser stop` 会停止 OpenClaw 启动的浏览器进程
- 仅 attach 和远程 CDP 配置文件:`openclaw browser stop` 关闭活动控制会话并释放 Playwright/CDP 模拟覆盖(视口、配色方案、区域设置、时区、离线模式和类似状态),即使 OpenClaw 没有启动浏览器进程
远程 CDP URL 可以包含身份验证:
- 查询令牌(e.g.、`https://provider.example?token=`)
- HTTP 基本身份验证(e.g.、`https://user:pass@provider.example`)
OpenClaw 在调用 `/json/*` 端点以及连接 CDP WebSocket 时都会保留认证信息。请优先使用环境变量或机密管理器来管理令牌,而不是将其提交到配置文件中。
## Node 浏览器代理(零配置默认)
如果您在具有浏览器的计算机上运行 **node 主机**,则当网关主机没有本地浏览器功能时,OpenClaw 可以自动将浏览器工具调用路由到该节点。自动路由更喜欢主机,包括已安装可执行文件的已停止的托管浏览器。显式 `target="node"`、`node` 选择器或 `gateway.nodes.browser.node` 会覆盖该首选项; `target="host"` 始终保留在主机上。
即使未安装托管浏览器可执行文件,所选主机配置文件也拥有现有会话、扩展、仅附加和远程 CDP 连接。启动失败、无效的可执行设置、权限错误和页面操作失败均保留在该所有者身上; OpenClaw 不会在另一台机器上重播它们。仅在所选节点处理请求之前,才允许从所选节点自动进行主机回退。一旦操作到达节点,其后续快照或设置将保留在该节点上,而不是切换浏览器。
当未选择网关或节点路由时,独立运行(例如 `openclaw agent exec`)使用主机浏览器。他们不需要网关凭据来进行本地浏览器控制。沙箱路由和主机控制限制仍然适用。要从独立运行中通过本地网关发现浏览器节点,请设置 `gateway.nodes.browser.mode="auto"`;仅当本地功能不可用时才运行发现。显式节点目标或引脚、远程网关配置或 `OPENCLAW_GATEWAY_URL` 也使节点发现保持启用状态。显式节点目标和引脚保留连接和身份验证错误。
注意:
- 节点主机通过一个 **代理命令** 暴露其本地浏览器控制服务器。
- 配置文件来自节点自身的 `browser.profiles` 配置(与本地相同)。
- 代理命令从不允许持久配置文件突变(`create-profile`、`delete-profile`、`reset-profile`),无论`allowProfiles`如何;直接在节点上进行这些更改。
- `nodeHost.browserProxy.allowProfiles` 是可选的。对于 legacy/default 行为,将其留空:所有配置的配置文件仍然可以通过代理访问。
- 如果你设置了 `nodeHost.browserProxy.allowProfiles`,OpenClaw 会将其视为最小权限边界,仅限制代理可目标指向的配置文件名称。
- Requests 在准备工作时保留其选择的配置文件。节点在浏览器操作之前(包括启动或上传准备之后)重新检查代理和配置文件访问。
- 如果你不想启用它,可以禁用:
- 在节点上:`nodeHost.browserProxy.enabled=false`
- 在网关上:`gateway.nodes.browser.mode="off"`(也接受 `"auto"` 以首选主机并回退到单个连接的浏览器节点,或 `"manual"` 以要求显式节点选择或配置的引脚)
## Browserless(托管远程 CDP)
[Browserless](https://browserless.io) 是托管的 Chromium 服务,它通过 HTTPS 和 WebSocket 公开 CDP 连接 URL。 OpenClaw 可以使用任一形式,但对于远程浏览器配置文件,最简单的选项是来自 Browserless 连接文档的直接 WebSocket URL。
示例:
```json5
{
browser: {
enabled: true,
defaultProfile: "browserless",
profiles: {
browserless: {
cdpUrl: "wss://production-sfo.browserless.io?token=",
},
},
},
}
```
注意:
- 将 `` 替换为你真实的 Browserless 令牌。
- 选择与你的 Browserless 账户匹配的区域端点(参见其文档)。
- 如果 Browserless 提供的是 HTTPS 基础 URL,你可以将其转换为 `wss://` 以进行直接 CDP 连接,或者保留 HTTPS URL 并让 OpenClaw 发现 `/json/version`。
### 同一主机上的 Browserless Docker
当 Browserless 由 Docker 自托管且 OpenClaw 运行在主机上时,将 Browserless 视为外部托管的 CDP 服务:
```json5
{
browser: {
enabled: true,
defaultProfile: "browserless",
profiles: {
browserless: {
cdpUrl: "ws://127.0.0.1:3000",
attachOnly: true,
},
},
},
}
```
`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 提供商
某些托管浏览器服务公开 **direct 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//` 或 `wss://...`,路径为 `/devtools/browser|page|worker|shared_worker|service_worker/`。 OpenClaw 通过 WebSocket 握手直接连接,并完全跳过 `/json/version`。
- **裸 WebSocket 根** - `ws://host[:port]` 或 `wss://host[:port]`,无 `/devtools/...` 路径(e.g.) [无浏览器](https://browserless.io)、[浏览器库](https://www.browserbase.com))。 OpenClaw 首先尝试 HTTP `/json/version` 发现(将方案标准化为 `http`/`https`);如果发现返回 `webSocketDebuggerUrl`,则使用它,否则 OpenClaw 会退回到裸根处的直接 WebSocket 握手。如果通告的 WebSocket 端点拒绝 CDP 握手,但配置的裸根接受它,则 OpenClaw 也会回退到该根。这使得指向本地 Chrome 的裸 `ws://` 仍然可以连接,因为 Chrome 只接受来自 `/json/version` 的特定每个目标路径上的 WebSocket 升级,而托管提供程序在其发现端点通告短期的时仍然可以使用其根 WebSocket 端点URL 不适用于 Playwright CDP。
`openclaw browser doctor` 使用相同的发现优先、WebSocket- 回退逻辑作为运行时附加,因此连接成功的裸根 URL 不会被诊断报告为无法访问。
### 浏览器库
[Browserbase](https://www.browserbase.com) 是一个用于运行无头浏览器的云平台,内置 CAPTCHA 解决、隐身模式和住宅代理。
```json5
{
browser: {
enabled: true,
defaultProfile: "browserbase",
profiles: {
browserbase: {
cdpUrl: "wss://connect.browserbase.com?apiKey=",
},
},
},
}
```
注意:
- [注册](https://www.browserbase.com/sign-up)并从 [概览面板](https://www.browserbase.com/overview)复制你的 **API 密钥**。
- 将 `` 替换为你真实的 Browserbase API 密钥。
- Browserbase 会在 WebSocket 连接时自动创建浏览器会话,因此无需手动创建会话步骤。
- 查看 [定价](https://www.browserbase.com/pricing) 以了解当前免费套餐限制和付费方案。
- 查看 [Browserbase 文档](https://docs.browserbase.com) 获取完整的 API 参考、SDK 指南和集成示例。
### 浏览器使用
[Browser Use](https://browser-use.com) 通过其 CDP WebSocket 端点提供托管云浏览器。
```json5
{
browser: {
enabled: true,
defaultProfile: "browser-use",
profiles: {
"browser-use": {
cdpUrl: "wss://connect.browser-use.com?apiKey=&proxyCountryCode=us",
},
},
},
}
```
注意:
- [注册](https://cloud.browser-use.com)并从[设置-> API Keys](https://cloud.browser-use.com/settings?tab=api-keys)复制您的API密钥。
- 将 `` 替换为您的真实浏览器使用 API 密钥。
- 可选查询参数包括用于持久浏览器配置文件的 `profileId`、用于特定于国家/地区的路由的 `proxyCountryCode` 以及用于以分钟为单位的会话持续时间(最多 240)的 `timeout`。
- 请参阅 [ 浏览器使用 OpenClaw 指南 ](https://docs.browser-use.com/cloud/tutorials/integrations/openclaw) 了解更多示例和提供程序选项。
### 注释
[Notte](https://www.notte.cc) 是一个用于运行无头浏览器的云平台,具有内置隐形、住宅代理和 CDP-native WebSocket 网关。
```json5
{
browser: {
enabled: true,
defaultProfile: "notte",
profiles: {
notte: {
cdpUrl: "wss://us-prod.notte.cc/sessions/connect?token=",
},
},
},
}
```
注意:
- [注册](https://console.notte.cc)并从控制台设置页面复制你的 **API 密钥**。
- 将 `` 替换为你真实的 Notte API 密钥。
- Notte 会在 WebSocket 连接时自动创建浏览器会话,因此无需手动创建会话步骤。会话会在 WebSocket 断开时销毁。
- 查看 [定价](https://www.notte.cc/#pricing) 以了解当前免费套餐限制和付费方案。
- 查看 [Notte 文档](https://docs.notte.cc) 获取完整的 API 参考、SDK 指南和集成示例。