☰
OpenClaw + Google Chrome(deb)+ WSLg:可视化浏览器自动化与人工接管教程|TaoToken 统一 Key 接入
2026/10/18 19:54:52 网站建设 项目流程

1. 为什么要在 WSL2 里跑可视化浏览器自动化

如果你正在做网页自动化,尤其是登录类、表单类、需要过验证码的场景,纯无头浏览器经常会卡在一个尴尬的地方:脚本跑得好好的,突然弹出一个滑块或者扫码验证,整个流程就断在那里,日志里只有一句超时。这时候你需要的不是更复杂的反检测策略,而是一个能让人直接看到、直接上手点的浏览器窗口。

OpenClaw 配合 Google Chrome(deb 版)加 WSLg,解决的正是这个问题。OpenClaw 负责编排自动化步骤,Chrome 提供真实的 Linux 图形界面,WSLg 把窗口直接投射到 Windows 桌面上。整个链路里,浏览器是 headed 模式运行的,也就是说验证码出现时,你可以像平时用浏览器一样,用鼠标去点、去拖、去扫码,完成之后 Agent 继续往下跑。

这套方案适合几类人:一是做 RPA 但被验证码卡住的开发者;二是需要复用登录态、又不想把账号密码交给纯脚本的团队;三是想在 Windows 上体验 Linux GUI 自动化、又不想装虚拟机的个人。核心检索词就是 OpenClaw、Google Chrome、WSLg、WSL2、CDP 这几个,下面会围绕它们把配置和排障讲透。

我试过在 Ubuntu 24.04 上直接用 apt 装 chromium-browser,结果装出来是个 snap 包装器,CDP 端口时好时坏,调试成本很高。后来换成 Google Chrome 官方 deb,启动行为稳定多了。这篇文章就把这条路径完整走一遍,包括 Chrome 启动参数、OpenClaw 连接配置、人工接管切换,以及一次登录流程的验证。

需要说明的是,本文的 API 通道统一走 TaoToken 的 Key 接入,官网是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end ,后面配置里会用到。整个流程不涉及任何网络加速工具,纯粹是本地 WSL2 + WSLg 的图形链路。

2. TaoToken 统一 Key 的前置准备

在开始配浏览器之前,先把模型通道准备好。OpenClaw 在自动化过程中需要调用模型来做页面理解、步骤决策,如果每个模型都单独配 Key,管理起来很麻烦。TaoToken 的做法是给你一个统一 Key,通过一个 Base URL 转发到不同模型,这样 OpenClaw 的配置里只需要维护一份凭证。

你需要先拿到 Key。打开 https://taotoken.net/api-keys ,登录后创建一个 API Key,复制出来备用。这个 Key 的格式通常是一串以 sk- 开头的字符串,注意不要泄露到公开仓库里。

拿到 Key 之后,OpenClaw 的模型配置里要填三个东西:Base URL、API Key、Model ID。Base URL 用 https://taotoken.net/api ,注意这里不加任何 UTM 参数,保持干净。Model ID 根据你实际要用的模型填,比如 claude 系列或者 gpt 系列,具体以 TaoToken 文档里的模型列表为准,文档地址是 https://taotoken.net/doc 。

如果你用的是 Claude Code 这类工具,配置方式类似,Base URL 和 Key 填同样的值即可。TaoToken 的 Coding Plan 页面 https://taotoken.net/coding-plan 里有针对长期编码场景的说明,如果你打算把 OpenClaw 跑成常驻 Agent,可以看一下那边的额度方案。

这里要强调一点:TaoToken 是统一的 API 接入通道,不是浏览器插件,也不参与浏览器自动化本身。它只负责模型调用这一层。浏览器控制是 OpenClaw 通过 CDP 直接和 Chrome 通信完成的,两者是分开的。把这两层分清楚,后面排障的时候就不会混淆。

配置好 Key 之后,建议先用模型对话页面 https://taotoken.net/chat 发一条消息,确认 Key 本身是通的。如果那边都报 401,就不用往下折腾浏览器了,先解决鉴权问题。

3. 可复制的 Chrome 启动与 OpenClaw 配置

这一节是全文的核心,所有配置都可以直接复制。先确认环境:Windows 11 或支持 WSLg 的 Windows 版本,WSL2 里跑 Ubuntu,示例以 Ubuntu 24.04 为主。OpenClaw 已经安装,openclaw --version能正常输出。

第一步,清理可能存在的 snap Chromium。Ubuntu 24.04 上apt install chromium-browser装的其实是 snap 包装器,沙箱机制会干扰 CDP 的稳定性,建议先卸掉:

snap list | grep -i chromium || true sudo snap remove chromium sudo apt remove -y chromium-browser sudo apt autoremove -y which chromium || true which chromium-browser || true

第二步,安装 Google Chrome 官方 deb:

sudo apt update sudo apt install -y wget ca-certificates gnupg cd /tmp wget -O google-chrome-stable_current_amd64.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo apt install -y ./google-chrome-stable_current_amd64.deb sudo apt -f install -y which google-chrome-stable google-chrome-stable --version

装完后直接运行google-chrome-stable,如果 Windows 桌面上弹出了 Chrome 窗口,说明 WSLg 图形链路是通的。这一步很关键,如果窗口弹不出来,后面 OpenClaw 也拉不起来 headed 浏览器。

第三步,配置 OpenClaw。配置文件通常在~/.openclaw/openclaw.json。这里要同时解决两件事:一是让浏览器以 GUI 模式运行,二是让 systemd 服务能拿到 DISPLAY 等图形环境变量。完整配置如下:

{ "env": { "shellEnv": { "enabled": true, "timeoutMs": 15000 } }, "browser": { "enabled": true, "defaultProfile": "openclaw", "headless": false, "noSandbox": true, "executablePath": "/usr/bin/google-chrome-stable", "profiles": { "openclaw": { "cdpPort": 18800, "color": "#0000FF" } } } }

几个参数解释一下。headless: false是人工接管的前提,必须为 false。executablePath指向 deb 安装后的真实路径,用which google-chrome-stable确认。cdpPort是 CDP 调试端口,OpenClaw 通过它控制浏览器,默认 18800,被占用时可以改。noSandbox在 WSL 环境下建议开启,避免沙箱权限问题。env.shellEnv.enabled是解决 systemd 服务缺 DISPLAY 的关键,它会让 gateway 从交互 shell 导入环境变量。

第四步,同步 token 并重启 gateway。如果你看到Config token differs from service token这类提示,说明配置里的 token 和服务里跑的不一致,需要强制重装再重启:

openclaw gateway install --force openclaw gateway restart

第五步,启动托管浏览器并验证:

openclaw browser --browser-profile openclaw start openclaw browser --browser-profile openclaw open https://example.com

成功的话,Windows 桌面会出现一个 Chrome 窗口,页面被 OpenClaw 打开。这时候你可以手动在窗口里操作,也可以让 Agent 继续控制,两者共用同一个实例和登录态。

如果中文显示成方块,补一下字体:

sudo apt update sudo apt install -y fonts-noto-cjk fonts-noto-color-emoji fontconfig fc-cache -f -v

4. 验证请求与人工接管流程实测

配置完成后,用一次真实的登录流程来验证整条链路。这里以一个需要扫码验证的站点为例,步骤可以套用到你自己的场景。

先让 OpenClaw 打开目标登录页:

openclaw browser --browser-profile openclaw open https://your-target-site.com/login

然后在 OpenClaw 的 Agent 指令里描述任务,比如“填写用户名密码并提交,如果出现验证码就停下来等待人工”。Agent 会通过 CDP 操作页面,你能在 WSLg 窗口里实时看到光标移动、输入框被填充。

关键点在验证码出现的那一刻。Agent 检测到验证码元素后,会进入等待态,不再继续操作。这时候你直接在那个 Chrome 窗口里用鼠标完成扫码或滑块。因为浏览器是 headed 的,窗口就是真实的 Chrome,扫码用的是你本机摄像头或者手机,没有任何额外障碍。

验证通过后,告诉 Agent 继续。它会重新读取页面状态,接着走后续流程。整个过程中,登录态保存在 OpenClaw 托管的 profile 里,下次再跑同一个任务,如果站点还认这个 session,就不用重复登录。

验证成功的标志有三个:一是 WSLg 窗口里能看到完整页面渲染;二是 Agent 的日志里能看到 CDP 连接正常、页面元素被定位;三是人工接管后 Agent 能继续执行而不是报错退出。三个都满足,说明 OpenClaw + Chrome + WSLg 这条链路是通的。

这里补充一个实用技巧:如果你要跑多个站点,可以给每个站点配不同的 profile,改cdpPort和color区分。这样登录态互不干扰,窗口颜色也能帮你快速识别是哪个任务。

模型调用这一层,OpenClaw 会走你在 TaoToken 配好的 Base URL 和 Key。如果 Agent 在页面理解阶段报模型错误,先去 https://taotoken.net/chat 确认 Key 有效,再检查 OpenClaw 里的模型配置。浏览器层和模型层分开排查,效率会高很多。

5. 常见报错排查对照

这一节列几个真实会遇到的报错,以及对应的处理方式。

Missing X server or $DISPLAY

表现是启动浏览器时报Missing X server or $DISPLAY,平台初始化失败。先在交互终端里确认环境变量:

echo "DISPLAY=$DISPLAY" echo "WAYLAND_DISPLAY=$WAYLAND_DISPLAY" echo "XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR" ls -la /tmp/.X11-unix

如果这几个变量都不为空,但服务里还是报这个错,说明 systemd 服务没继承到。除了在openclaw.json里启用env.shellEnv,还可以直接写一份环境文件:

cat > ~/.openclaw/.env <<'EOF' DISPLAY=:0 WAYLAND_DISPLAY=wayland-0 XDG_RUNTIME_DIR=/run/user/1000 EOF

然后同步重启:

openclaw gateway install --force openclaw gateway restart

Failed to start Chrome CDP on port 18800

这个报错通常是两个原因:端口被占用,或者浏览器本身没起来。先查端口:

ss -lntp | grep 18800

如果被占用,改openclaw.json里的cdpPort,比如换成 18801,然后重启 gateway。如果是浏览器没起来,多半还是 DISPLAY 问题,回到上一条排查。另外确认executablePath指向的是 deb 安装的 Chrome,不是 snap 残留。

401 鉴权失败

如果 Agent 在调用模型时报 401,说明 TaoToken 的 Key 有问题。检查 Key 是否复制完整、是否过期,Base URL 是否是https://taotoken.net/api。可以先用模型对话页面验证 Key,再去 https://taotoken.net/api-keys 重新生成一个。

reading choices 相关报错

这类报错通常出现在模型返回格式不符合预期时。检查 Model ID 是否填对,有些模型对输入格式有要求。如果换了模型就好,说明是模型兼容性问题,不是浏览器链路问题。

OAuth 或登录态失效

如果站点用的是 OAuth,人工接管完成授权后,Agent 需要重新读取页面。确保 Agent 的等待逻辑是轮询页面状态,而不是固定 sleep。固定 sleep 容易在授权慢的时候提前继续,导致后续步骤失败。

中文显示方块

前面提过,装fonts-noto-cjk和fonts-noto-color-emoji,然后fc-cache -f -v。装完重启浏览器实例。

排查的时候记住一个原则:先确认 WSLg 能弹窗,再确认 OpenClaw 能连 CDP,最后确认模型通道正常。三层分开验证,比一上来就怀疑整个链路要快得多。

6. 长期运行与接入建议

如果你打算把这套方案跑成常驻的自动化服务,有几个点值得注意。

浏览器实例不要频繁重启。OpenClaw 托管的 profile 会保存登录态,频繁重启会丢失 session,导致每次都要重新人工接管。让 gateway 常驻,浏览器按需 start,任务结束后不要急着 kill。

CDP 端口建议固定,不要每次随机。固定端口方便你在外部工具里直接连上去调试,比如用 Chrome DevTools 协议手动发指令。如果多任务并行,用不同端口和 profile 隔离。

模型通道方面,长期跑的话建议用 TaoToken 的 Coding Plan,额度更稳定。接入文档在 https://taotoken.net/doc ,里面有 Base URL、Key、Model ID 的完整说明。需要管理多个 Key 的时候,控制台 https://taotoken.net/console 可以统一查看。

人工接管的触发条件要设计好。不要等 Agent 报错才停下来,而是在指令里明确“遇到验证码元素就等待”。这样 Agent 会主动进入等待态,而不是尝试绕过验证导致账号风险。

最后,Chrome 的启动参数可以通过 OpenClaw 的 profile 扩展。如果你需要额外的命令行参数,比如指定 user-data-dir 或者禁用某些特性,可以在 profile 配置里加 args 数组。具体字段以 OpenClaw 文档为准,改完记得重启 gateway 让配置生效。

整套流程跑顺之后,你会发现可视化自动化的价值在于“可控”。Agent 做重复劳动,人处理需要判断的环节,两者在同一个浏览器窗口里无缝切换。这比纯无头方案更适合真实业务场景。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询