我在 WSL 里控制 Windows Chrome 的一次实战复盘(OpenClaw)
最近在做一套「WSL 环境下的浏览器自动化」实验,目标很明确: 在 WSL 中运行 OpenClaw ,去控制 Windows 主机上的 Chrome,并完成一次可复现的小任务。
这篇文章只记录我自己从失败到跑通的过程,命令、排错、结果都给出来,方便你按步骤复现。
一、实战目标
这次我用一个很具体的验收标准:
- 从 WSL 发起浏览器控制
- 在 Windows Chrome 打开 B 站搜索页
- 搜索
openclaw - 提取前 10 条视频标题
二、环境说明
我的环境如下(供参考,不要求完全一致):
- Windows 11(已安装 Chrome)
- WSL2(Ubuntu)
- OpenClaw CLI(可正常执行)
- OpenClaw Gateway 已运行
先确认网关状态:
bash
openclaw gateway status
看到 Runtime: running 再继续。
三、核心思路:用 Chrome Relay 连接 Windows Chrome
一开始我尝试过在 WSL 里直接起浏览器,结果很容易遇到 No supported browser found。
后面换成 chrome-relay 方案后,链路稳定很多:
1)在 WSL 安装 Relay 扩展文件
bash
openclaw browser extension install
openclaw browser extension path
2)在 Windows Chrome 加载扩展
打开 chrome://extensions → 开启开发者模式 → 加载已解压扩展。
路径一般类似:
text
\\wsl$\Ubuntu\home\<你的用户名>\.openclaw\browser\chrome-extension
3)在扩展配置里填网关信息
- 网关地址:
ws://127.0.0.1:18789(按实际端口) - Token:你自己的 Gateway token
注意:token 是敏感信息,不要写进公开文章或截图里。
四、先做连通性验证
bash
openclaw browser tabs --browser-profile chrome-relay --json
只要返回了非空 tabs,说明 WSL 与 Windows Chrome 的控制链路已打通。
五、执行任务:打开搜索页并抓前 10 条标题
1)打开 B 站搜索页
bash
openclaw browser open "https://search.bilibili.com/all?keyword=openclaw" --browser-profile chrome-relay --json
2)提取标题
bash
openclaw browser evaluate \
--browser-profile chrome-relay \
--fn '() => {
const sels = [
"h3.bili-video-card__info--tit",
".bili-video-card__info--tit",
"a.title",
"h3"
];
let out = [];
for (const s of sels) {
const arr = [...document.querySelectorAll(s)]
.map(e => e.textContent?.trim())
.filter(Boolean);
if (arr.length) {
out = arr;
break;
}
}
const uniq = [...new Set(out.map(t => t.replace(/\s+/g, " ").trim()))]
.filter(Boolean);
return uniq.slice(0, 10);
}' \
--json
执行后会返回一个字符串数组,即前 10 条标题。
六、我踩过的 3 个坑(以及处理方式)
坑 1:No supported browser found
原因 :在 WSL 里走了本地浏览器启动路径。
处理 :改用 chrome-relay,控制 Windows 里的 Chrome。
坑 2:gateway timeout after 20000ms
原因 :网关连接瞬时抖动或页面切换太快。
处理:
- 先
tabs确认页面存在 - 再执行
open / evaluate - 必要时
openclaw gateway restart
坑 3:tab not found
原因 :目标页刷新或 targetId 变化。
处理 :重新获取 tabs 后再操作,不要复用旧 targetId。
七、复现检查清单
-
openclaw gateway status显示 running - Chrome Relay 扩展已连接
-
tabs --browser-profile chrome-relay返回非空 - 能打开 B 站搜索页
- 能提取前 10 条视频标题
以上都满足,说明这套流程已经跑通。
八、结论
对于「WSL 控制 Windows Chrome」这个场景,chrome-relay 是目前我测试下来最容易复现的一条路径。
如果你也在做跨环境自动化,这套方式值得优先试。
如果你希望,我下一篇可以补:
- 带截图的完整操作版
- 自动重试脚本版(减少 tab 抖动影响)
- 面向新手的一键排错流程图