OpenClaw 浏览器配置完整教程 - 解决 WSL2 自启动失败问题
静态神器:web_fetch 内置工具
原理机制 - 获取 URL 并提取可读内容
详细见 openclaw中文站官方解释
![[Pasted image 20260414120119.png]]
- 纯 HTTP 请求:发送 GET 请求(不执行 JavaScript),用 Chrome-like UA 模拟正常浏览器
- SSRF 防护:默认阻止私有/内网主机,每一步重定向都重新检查
- 正文提取:用 Readability 算法从 HTML 中提取主体内容,去除导航、广告等干扰
- 格式转换:输出转换为干净的 Markdown 或纯文本
- 回退机制:提取失败且配置了 Firecrawl 时,自动回退到 Firecrawl API
- 缓存:相同 URL 结果缓存 15 分钟,减少重复请求
使用场景
✅ 适合:静态网页、文章、文档、API 数据获取
❌ 不适合:JavaScript 动态渲染页面、需要登录的页面、交互操作
总结:轻量快速获取静态网页正文,动态内容请用 browser/agent-browser。
通过 Chrome DevTools MCP 连接现有会话
检查状态
1 | openclaw browser --browser-profile user status |
running: true 则成功。
在浏览器中打开并批准远程调试
地址:chrome://inspect/#remote-debugging
![[Pasted image 20260414122323.png]]
实际操作示例
![[Pasted image 20260414122458.png]]
适用场景
这种方式非常适合:
- 需要登录才能访问的网站
- JavaScript 动态渲染页面
- 人机验证(你点击验证,AI 提取内容)
- 多种反爬机制
OpenClaw 独立控制专用浏览器(openclaw 配置文件)
前置步骤
安装浏览器可以参考这两篇教程:
启动
1 | openclaw browser --browser-profile openclaw start |
检查浏览器状态
Q:如果遇到自动启动报错,应该怎么办?
可以使用无头模式(不显示窗口),或者 WSLg 显示窗口,手动启动。
踩坑总结:WSL2 + systemd 环境下 OpenClaw 自启动失败解决方法——额这是小龙虾总结的,仅供参考
问题现象
openclaw browser --profile openclaw start一直报Chrome CDP websocket not reachable after start- 手动启动 Chrome 能成功,curl 能拿到 CDP 信息,但 OpenClaw 还是连不上
根本原因
WSL2 中 openclaw-gateway 由 systemd 管理,systemd 服务不会继承你终端的 DISPLAY 环境变量,即使你 echo $DISPLAY 显示 :0,systemd 启动的 Gateway 还是拿不到,Chrome 启动还是找不到 X 服务器,即使开了 headless: true 也会失败。
解决方法
- 创建 systemd 服务配置,添加
DISPLAY=:0环境变量
1 | sudo systemctl edit --force --full openclaw-gateway.service |
填入以下内容:
1 | [Unit] |
- 重载配置并重启
1 | sudo systemctl daemon-reload |
- 测试启动
1 | openclaw browser --browser-profile openclaw start |
现在应该就能显示 running: true 了 ✅
如果自动启动失败,可以手动启动浏览器,OpenClaw 通过 CDP 连接
1 | /usr/bin/google-chrome-stable --headless --no-sandbox --disable-gpu --remote-debugging-port=18800 --user-data-dir=/tmp/chrome-openclaw |
参数说明:
| 参数 | 作用 | 是否必须 |
|---|---|---|
--headless |
无头模式运行,不显示窗口 | ✅ 必须 |
--no-sandbox |
WSL2 root 运行必须加,否则权限错误 | ✅ 必须 |
--disable-gpu |
禁用 GPU 加速 | ✅ 建议 |
--remote-debugging-port |
CDP 调试端口 | ✅ 必须 |
--user-data-dir |
独立临时用户数据目录,避免和日常 Chrome 冲突 | ✅ 必须 |
最后检查状态
1 | openclaw browser --browser-profile openclaw status |
running: true 则成功。
总结
推荐优先使用第二种方式(连接现有会话),适合需要登录、人机验证的场景,踩坑更少。
如果需要完全自动化无人值守,再用第三种方式,按照上文修改 systemd 配置就能解决问题。