OpenClaw
Windows Chrome 连接 Ubuntu OpenClaw
1. 目标
让 Ubuntu 上的 OpenClaw 调用 局域网内 Windows 机器上的 Chrome 浏览器。
最终采用的是:
•Windows 上运行 Chrome
•Chrome 本地开启 CDP 调试端口
•Windows 用 portproxy 暴露一个局域网可访问端口
•Ubuntu 上的 OpenClaw 通过browser.profiles.remote.cdpUrl连接这个端口
2. 最终可用架构
Plain Text
Ubuntu OpenClaw
-> http://windows 局域网IP:13333
-> Windows portproxy
-> 127.0.0.1:9222
-> Chrome DevTools Protocol
-> Windows Chrome
说明:
•9222:Chrome 本机 CDP 调试端口
•13333:Windows 对局域网开放的转发端口
3. 关键结论
3.1 不能直接用 existing-session/user 跨机器
如果是:
•Ubuntu 跑 OpenClaw
•Windows 跑 Chrome
那么应该使用 remote CDP,而不是 profile=“user” / existing-session。
existing-session 更适合同一台机器上 OpenClaw 直接附着本机浏览器。
3.2 Chrome 本机先测通,再谈 OpenClaw
前提:新建一个chrome profile目录,例如:C:\chrome-openclaw-profile
这方案的好处
第一次你手动登录网站
登录态 / cookie 会保存在 C:\chrome-openclaw-profile
以后 OpenClaw 连的还是这个 profile
既有 cookie,又不污染你日常主浏览器
说白了,就是给 OpenClaw 单独养一只“有记忆的浏览器”。
第一步不是配 OpenClaw,而是先验证 Windows 上的 Chrome 调试端口本身工作正常。
启动 Chrome 测试实例:
PowerShell
Start-Process -FilePath "C:\Program Files\Google\Chrome\Application\chrome.exe" -ArgumentList "--remote-debugging-port=9222","--remote-debugging-address=0.0.0.0","--user-data-dir=C:\chrome-openclaw-profile","about:blank"
验证本机接口:
PowerShell
curl.exe http://127.0.0.1:9222/json/version
curl.exe http://127.0.0.1:9222/json/list
正常时:
•/json/version 返回 JSON,包含 webSocketDebuggerUrl
•/json/list 返回标签页列表
4. 踩到的坑
4.1 端口 9222 被 Windows 的 portproxy 抢占
当时 netstat -ano | findstr :9222 显示监听 PID 对应的是:
•svchost.exe
•服务名:iphlpsvc
PowerShell
netsh interface portproxy show all
看到:
Plain Text
0.0.0.0 9222 127.0.0.1 9222
这会导致:
•Chrome 虽然带了 --remote-debugging-port=9222
•但真正监听 9222 的不是 Chrome,而是 Windows 端口代理层
•所以访问 /json/version 得到异常结果或空回复
4.2 为什么之前会返回奇怪结果
因为访问到的不是 Chrome 的 CDP 服务,而是被 portproxy 接管后的端口。
这是一个很阴的坑:
•端口看起来开了
•但不是你以为的那个程序在监听
5. 正确做法:让 Chrome 用 9222,本地监听;让 Windows 暴露 13333
最终采用:
•Chrome:监听 127.0.0.1:9222
•Windows portproxy:监听 0.0.0.0:13333,转发到 127.0.0.1:9222
5.1 启动 Chrome
PowerShell
taskkill /F /IM chrome.exe
Start-Process -FilePath "C:\Program Files\Google\Chrome\Application\chrome.exe" -ArgumentList "--remote-debugging-port=9222","--remote-debugging-address=0.0.0.0","--user-data-dir=C:\chrome-openclaw-profile","about:blank"
说明:
•--remote-debugging-port=9222:开启 CDP 调试端口
•--user-data-dir=...:使用专用的
•about:blank:提供初始页,便于测试 /json/list
5.2 添加 Windows 端口转发
管理员 PowerShell:
PowerShell
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=13333 connectaddress=127.0.0.1 connectport=9222
查看:
PowerShell
netsh interface portproxy show all
应看到:
Plain Text
0.0.0.0 13333 127.0.0.1 9222
5.3 放行 Windows 防火墙
PowerShell
New-NetFirewallRule -DisplayName "Chrome CDP 13333" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 13333 -Profile Private
后来发现还不够,因为实际网络配置文件不一定命中 Private。
最终修正为:
PowerShell
Set-NetFirewallRule -DisplayName "Chrome CDP 13333" -Profile Any
这一步之后,Ubuntu 才能真正访问到 Windows 的 13333。
6. 验证步骤
6.1 Windows 本机验证
PowerShell
curl http://windows 局域网IP:13333/json/version
curl http://windows 局域网IP:13333/json/list
返回正常 JSON,
说明:
•13333 -> 9222 转发成功
•防火墙已允许本机访问这个入口
6.2 Ubuntu 验证
Bash
curl http://windows 局域网IP:13333/json/version
curl http://windows 局域网IP:13333/json/list
最初失败,原因是
Windows 防火墙规则只对 Private 生效。修改为 Any 后恢复正常。
7. OpenClaw 最终配置
Ubuntu 的
~/.openclaw/openclaw.json中,Browser 配置最终改为:
JSON
"browser": {
"enabled": true,
"attachOnly": true,
"defaultProfile": "remote",
"profiles": {
"remote": {
"cdpUrl": "http://windows 局域网IP:13333",
"attachOnly": true,
"color": "#00AA00"
},
"openclaw": {
"cdpPort": 18800,
"color": "#FF4500"
}
}
}
8. 重启与验证 OpenClaw
重启:
Bash
openclaw gateway restart
验证:
Bash
openclaw browser --browser-profile remote status
openclaw browser --browser-profile remote tabs
openclaw browser --browser-profile remote snapshot
结果:
•status 成功,说明 OpenClaw 已连上远程 Chrome
•tabs 成功,能看到 about:blank
•snapshot 空白是正常的,因为页面本身就是空白页
9. 常见坑总结
坑 1:9222 被旧的 portproxy 占用
排查方法:
PowerShell
netstat -ano | findstr :9222
tasklist /FI "PID eq <PID>"
tasklist /svc /FI "PID eq <PID>"
netsh interface portproxy show all
坑 2:以为端口开了就是 Chrome 在监听
不一定。要看对应 PID 是不是 chrome.exe。
坑 3:防火墙规则只放了 Private
如果当前网络配置不是 Private,Ubuntu 还是访问不了。
坑 4:about:blank 上做 snapshot 结果是空的
这是正常现象,不是失败。
10. 现在怎么用
打开网页:
Bash
openclaw browser --browser-profile remote open https://www.baidu.com
查看标签页:
Bash
openclaw browser --browser-profile remote tabs
获取交互快照:
Bash
openclaw browser --browser-profile remote snapshot --interactive
截图:
Bash
openclaw browser --browser-profile remote screenshot
11. 最终结论
今天这套链路已经打通:
•Ubuntu 上的 OpenClaw
•成功连接局域网内 Windows 的 Chrome
•可以读取标签页、打开网页、做 snapshot、后续可做 click/type/screenshot
一句话概括:
这次不是 OpenClaw 坏,也不是 Chrome 坏,核心是 Windows 历史 portproxy + 防火墙配置文件命中问题。
12. 后续建议
1.Windows 上保留当前 13333 -> 9222 的转发结构,不要再直接把 9222 裸暴露出去。
2.真正使用前,先保持这个测试 Chrome 实例开着。
3.后续可以再练一遍完整实战:
○open
○snapshot --interactive
○click / type
○screenshot
4.如果以后换了 Windows IP,需要同步修改 OpenClaw 中的 cdpUrl。
更多推荐
所有评论(0)