收起左侧

飞牛OpenClaw连接docker中的浏览器

1
回复
88
查看
[ 复制链接 ]

1

主题

8

回帖

0

牛值

江湖小虾

OpenClaw 浏览器配置指南

欢迎交流讨论,目前应用商店的浏览器版本可能不支持,这里提供一个我的部署,web页面https端口3001

services:
  chromium:
    image: linuxserver/chromium:latest
    container_name: chromium
    network_mode: host
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - LC_ALL=zh_CN.UTF-8
      - CHROME_CLI=https://www.baidu.com --no-sandbox --disable-gpu --remote-debugging-address=0.0.0.0 --remote-debugging-port=9222
    volumes:
      - ./config:/config
    shm_size: "2gb"
    restart: unless-stopped

架构概览

本部署环境(fnOS):

fnOS 主机
**── OpenClaw Gateway(端口 34480)
**   **── Control UI(Web 管理面板)
**── linuxserver/chromium Docker 容器(host 网络模式)
    **── Chrome DevTools Protocol(端口 9222)
        ↕ localhost 直通
  • Chromium Docker 容器使用 host 网络模式,与 fnOS 共享网络命名空间
  • Gateway 和 Chromium 在同一台机器上,通过 localhost 通信

两种浏览器连接模式

模式一:Chrome MCP(existing-session

适用场景: 连接你正在使用的 Chrome 浏览器,复用登录态。

原理: OpenClaw 通过官方 Chrome DevTools MCP 协议,连接本机正在运行的 Chrome 进程。每次连接时 Chrome 会弹出确认框,需要用户点击「允许」。

配置方式:

{
  "browser": {
    "profiles": {
      "user": {
        "driver": "existing-session",
        "attachOnly": true,
        "color": "#00AA00"
      }
    }
  }
}

关键规则:

  • 必须设置 driver: "existing-session"
  • 不能设置 cdpUrl(它通过 Chrome MCP 自动发现)
  • Chrome 版本必须 ≥ 144
  • 需要在 Chrome 中开启远程调试(chrome://inspect/#remote-debugging
  • 仅限同机使用(Gateway 和 Chrome 必须在同一台机器上)

支持的功能:

  • ✅ 打开/切换/关闭标签页
  • ✅ 截图(页面 + 元素)
  • ✅ 快照 snapshot
  • ✅ 点击/输入/表单操作
  • ✅ 导航
  • ✅ JavaScript evaluate
  • ✅ Cookie / Storage 操作
  • ✅ 设备模拟(iPhone 等)
  • ❌ PDF 导出
  • ❌ 文件下载拦截
  • wait --load networkidle

模式二:Raw CDP(远程调试协议)

适用场景: 连接远程或容器化的浏览器,支持跨机器、自动化场景。

原理: 直接通过 Chrome DevTools Protocol 连接浏览器的调试端口。不需要用户确认,连接即可控制。

配置方式:

{
  "browser": {
    "enabled": true,
    "defaultProfile": "chromium",
    "profiles": {
      "chromium": {
        "cdpUrl": "http://127.0.0.1:9222",
        "attachOnly": true,
        "color": "#00AA00"
      }
    }
  }
}

关键规则:

  • 必须设置 cdpUrl(浏览器 CDP 端口地址)
  • 不能设置 driver: "existing-session"
  • 不要求同机,只要网络通就行
  • 无确认弹窗,连接即可控制

支持的功能:

  • ✅ 打开/切换/关闭标签页
  • ✅ 截图(页面 + 元素)
  • ✅ 快照 snapshot
  • ✅ 点击/输入/表单操作
  • ✅ 导航
  • ✅ JavaScript evaluate
  • ✅ Cookie / Storage 操作
  • ✅ 设备模拟(iPhone 等)
  • PDF 导出
  • 文件下载拦截
  • wait --load networkidle

Raw CDP 功能比 Chrome MCP 更全,是自动化场景的首选。


模式对比总结

特性 Chrome MCP Raw CDP
连接确认 需要用户点「允许」 无确认,直接控制
适用距离 仅同机 同机/跨机均可
配置字段 driver: "existing-session" cdpUrl: "http://..."
PDF 导出
下载拦截
networkidle wait
安全性 高(每次确认) 低(谁连谁控制)
适合场景 需要登录态的日常浏览 自动化、容器化浏览器

当前配置

采用 Raw CDP 模式,连接 fnOS 上的 linuxserver/chromium Docker 容器。

{
  "browser": {
    "enabled": true,
    "defaultProfile": "chromium",
    "profiles": {
      "chromium": {
        "cdpUrl": "http://127.0.0.1:9222",
        "attachOnly": true,
        "color": "#00AA00"
      }
    }
  }
}

为什么选 Raw CDP 而不是 Chrome MCP

linuxserver/chromium 是 Docker 容器内的浏览器,不是用户正在交互的桌面浏览器。Chrome MCP 的 existing-session 模式需要在本机桌面环境中运行 Chrome 并手动确认,容器内没有桌面环境,无法使用。


连接过程详解

1. 启动 Chromium 容器

linuxserver/chromium 镜像默认开启远程调试端口:

# Docker Compose 或 docker run 时,确保端口映射或 host 网络
docker run --network host linuxserver/chromium:latest

Chromium 启动参数中包含 --remote-debugging-port=9222

2. 验证 CDP 端口可用

curl http://127.0.0.1:9222/json/version

正常返回:

{
  "Browser": "Chrome/146.0.7680.164",
  "Protocol-Version": "1.3",
  "webSocketDebuggerUrl": "ws://127.0.0.1:9222/devtools/browser/..."
}

3. 配置 OpenClaw

编辑 ~/.openclaw/openclaw.json,添加 browser 配置(见上方)。

4. 重启 Gateway

# 方式一:发送 SIGUSR1 信号
kill -10 $(pgrep openclaw-gateway)

# 方式二:通过 Gateway 工具重启(需要已配对)
openclaw gateway restart

5. 设备配对(首次)

Agent 首次连接 Gateway 时需要设备配对。两种方式:

  • Control UI: 在 Web 管理面板上点击「批准」
  • 命令行: openclaw devices approve <请求ID>

查看待批准请求:

openclaw devices list

6. 使用浏览器

Agent 可通过 browser 工具操作 Chromium:

  • browser open https://example.com — 打开网页
  • browser snapshot — 获取页面快照(AI 可读的结构化内容)
  • browser screenshot — 截图
  • browser click <ref> — 点击元素
  • browser type <ref> "text" — 输入文字
  • browser navigate https://other.com — 导航到新页面

安全注意事项

  1. 9222 端**露风险: Raw CDP 模式下,任何能访问 9222 端口的程序都能控制浏览器。确保该端口不对外网开放。
  2. host 网络模式: Docker 使用 host 网络时,9222 直接绑定在 fnOS 主机上,需确认防火墙规则。
  3. dangerouslyDisableDeviceAuth 当前配置中此选项为 true,意味着 Control UI 不弹配对确认。如果需要更高安全性,改为 false
  4. attachOnly: true 表示 OpenClaw 不会主动启动浏览器,只连接已有实例,避免意外创建新的浏览器进程。

WSL2 + Windows 跨机场景参考

如果 Gateway 运行在 WSL2,Chrome 运行在 Windows 上,架构类似但需要额外步骤:

  1. Windows 上启动 Chrome:chrome.exe --remote-debugging-port=9222
  2. Windows 上验证:curl http://127.0.0.1:9222/json/version
  3. WSL2 上验证能连到 Windows:curl http://WINDOWS_IP:9222/json/version
  4. 配置 cdpUrl 使用 WSL2 能访问到的 Windows 地址

关键原则: 先在本地验证 CDP 端口可用,再从远端验证网络通达,最后配置 OpenClaw。


文档整理于 2026-03-28

收藏
送赞 1
分享

1

主题

8

回帖

0

牛值

江湖小虾

5 小时前 楼主 显示全部楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则