Skip to content

WSL2浏览器自动化:Chrome用户数据持久化+CDP连接修复指南

2026年4月30日

搞自动化发布,最烦的不是写脚本,是每次跑脚本都要重新扫码登录。今天把这个问题的彻底解决方案整理出来。

起因:自动化发布,每次都要扫码

在多平台内容自动化发布场景中(公众号→头条号→知乎→小红书),每次启动Chrome浏览器进行自动化操作,都要重新扫码登录——因为Chrome的用户数据存在/tmp目录下,WSL一重启就没了。

这不是小问题。头条号、知乎这些平台,扫码登录的流程走一遍至少2分钟,如果一天要调试10次,光登录就浪费半小时。

问题排查

第一个发现:Chrome用户数据目录存错了

之前的启动脚本:

bash
chrome.exe \
  --remote-debugging-port=9222 \
  --user-data-dir="/tmp/chrome-opencli" \
  --no-sandbox

/tmp目录的特性是重启清空。每次WSL重启或Chrome被关闭重开,所有Cookie、登录状态、浏览记录都没了,等于永远在用"全新浏览器"。

第二个发现:WSL2 mirrored网络模式的坑

解决存储问题后,又遇到连接问题。在WSL里用curl验证CDP连接,一直超时:

bash
curl -s --max-time 5 http://localhost:9222/json/version
# 卡住...超时

但用PowerShell在Windows端查,端口明明在监听:

powershell
netstat -ano | findstr 9222
# TCP 127.0.0.1:9222 LISTENING 13624

原因: WSL2的mirrored网络模式下,Windows进程绑定的127.0.0.1只能从Windows端访问,WSL的localhost不互通。

第三个发现:同时开了两个Chrome实例

系统里同时跑了两个Chrome调试实例:

  • 一个用的临时目录 /tmp/chrome-debug-toutiao-20260429(旧的,已失效)
  • 一个用的持久目录 D:\chrome-profile-toutiao(新的,正确的)

两个实例都监听9222端口,互相冲突。

解决方案

第一步:把用户数据目录放到Windows磁盘

bash
mkdir -p /mnt/d/chrome-profile-toutiao

这样Chrome的Cookie、登录状态、扩展数据都保存在Windows磁盘上,WSL重启不丢失,Chrome关闭不丢失。

第二步:修改OpenCLI配置

json
{
  "daemon": {
    "port": 19826,
    "host": "0.0.0.0"
  },
  "browser": {
    "path": "/mnt/c/Program Files/Google/Chrome/Application/chrome.exe",
    "type": "chrome",
    "args": [
      "--remote-debugging-port=9222",
      "--no-sandbox",
      "--user-data-dir=D:\\chrome-profile-toutiao"
    ]
  }
}

关键改动:

  • path/usr/bin/chromium-browser改成Windows Chrome路径
  • 去掉--headless=new(需要看到浏览器界面进行自动化操作)
  • user-data-dir用Windows路径

第三步:修改启动脚本

bash
#!/bin/bash
CHROME_PATH="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"
USER_DATA_DIR="D:\\chrome-profile-toutiao"

# 检查是否已有Chrome在调试模式运行
if curl -s http://localhost:9222/json/version > /dev/null 2>&1; then
    echo "✅ Chrome已在调试模式运行"
    exit 0
fi

# 启动Chrome(用户数据持久化在D盘)
"$CHROME_PATH" \
  --remote-debugging-port=9222 \
  --user-data-dir="$USER_DATA_DIR" \
  --no-sandbox \
  --disable-gpu &

第四步:首次登录,永久免扫

用新配置启动Chrome后,只扫一次码登录头条号、知乎等平台。之后无论WSL怎么重启、Chrome怎么关闭重开,登录状态都在。

踩坑记录

现象原因解决
WSL2 curl访问Windows localhost超时curl一直卡住mirrored模式下Windows 127.0.0.1不可见通过PowerShell从Windows端验证
多个Chrome实例冲突两个进程都监听9222每次用不同user-data-dir启动启动前检查端口,已占用就复用
Hermes browser_navigate不连接现有Chrome无法复用已登录会话启动的是Playwright自带Chromium通过CDP协议直接操作Windows Chrome
CDP WebSocket无法从WSL连接连接超时WebSocket URL中localhost不可达用PowerShell的Invoke-WebRequest通过HTTP端点完成

效果对比

项目修复前修复后
登录状态每次重启丢失永久保持
扫码次数每次自动化都要扫码只扫一次
调试效率登录2分钟+操作3分钟直接操作3分钟
用户数据/tmp随时清空D:盘持久存储

不要孤军奋战啦!

加入微信群一起学习交流 AI

与大神一起使用 OpenClaw、Hermes、Claude Code、Seedance 2.0、GPT-Image-2 等

微信公众号

扫码关注微信公众号
私信 "加群",将自动获取微信群二维码

探索 AI 世界,掌握智能未来