OpenClaw 浏览器配置完整教程 - 解决 WSL2 自启动失败问题

静态神器:web_fetch 内置工具

原理机制 - 获取 URL 并提取可读内容

详细见 openclaw中文站官方解释

![[Pasted image 20260414120119.png]]

  1. 纯 HTTP 请求:发送 GET 请求(不执行 JavaScript),用 Chrome-like UA 模拟正常浏览器
  2. SSRF 防护:默认阻止私有/内网主机,每一步重定向都重新检查
  3. 正文提取:用 Readability 算法从 HTML 中提取主体内容,去除导航、广告等干扰
  4. 格式转换:输出转换为干净的 Markdown 或纯文本
  5. 回退机制:提取失败且配置了 Firecrawl 时,自动回退到 Firecrawl API
  6. 缓存:相同 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 也会失败。

解决方法

  1. 创建 systemd 服务配置,添加 DISPLAY=:0 环境变量
1
sudo systemctl edit --force --full openclaw-gateway.service

填入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=OpenClaw Gateway
After=network.target

[Service]
Type=simple
User=xm
Environment=DISPLAY=:0
ExecStart=/usr/bin/openclaw gateway start
WorkingDirectory=%h
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
  1. 重载配置并重启
1
2
sudo systemctl daemon-reload
sudo systemctl restart openclaw-gateway.service
  1. 测试启动
1
2
openclaw browser --browser-profile openclaw start
openclaw browser --browser-profile openclaw status

现在应该就能显示 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 配置就能解决问题。