启动模块:Chrome + Relay + Playwright
架构
Windows Chrome (--remote-debugging-port=9222)
↕ Relay2.exe (0.0.0.0:9255 → 127.0.0.1:9222)
Windows IP (172.24.48.1:9255)
↕ WSL chrome_relay.py (127.0.0.1:19223 → 172.24.48.1:9255)
↕ Playwright connect_over_cdp('http://127.0.0.1:19223')
Step A:启动 Chrome(Windows)
# 先杀掉旧 Chrome 进程
taskkill /F /IM chrome.exe
# 启动 Chrome 带调试端口
cmd.exe /c start "" "C:\Program Files\Google\Chrome\Application\chrome.exe" \
--remote-debugging-port=9222 \
--user-data-dir="C:\Users\[你的 Windows 用户名]\Desktop\chrome-debug"
⚠️ 必须使用独立的 --user-data-dir(如 chrome-debug),默认 Profile 无法绑定 9222 端口。
Step B:启动 Relay2(Windows)
Relay2.exe 应在 Windows 启动项中自动运行:
C:\Users\[你的 Windows 用户名]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\hermes-gateway.vbs
手动启动:双击运行 Relay2.exe。
Step C:启动 WSL Relay
cd ~/.hermes/scripts && python3 chrome_relay.py &
Step D:验证链路
# 检查 WSL relay
curl -s http://127.0.0.1:19223/json | head -5
# 应返回 Chrome 标签页列表的 JSON
Step E:Playwright 连接
from playwright.async_api import async_playwright
async with async_playwright() as p:
browser = await p.chromium.connect_over_cdp('http://127.0.0.1:19223')
pages = browser.contexts[0].pages
# 检查已打开的标签页
登录检查
店小秘登录
导航到店小秘 → 检查是否已登录(看页面是否有 [你的店小秘用户名] 用户名):
document.body.innerText.includes('[你的店小秘用户名]')
未登录时使用二维码登录:店小秘右上角 → 扫码登录。
1688 登录
检查 1688 登录状态:打开 1688 任意产品页 → 看是否有“登录”按钮。
document.body.innerText.includes('登录')
未登录时手动登录(1688 验证码无法自动化)。
故障恢复
Gateway 断连后重连铁律
致命错误: 直接调用 browser_navigate 会创建新标签页,丢失已填数据。
正确步骤:
1. browser_cdp → Target.getTargets # 列出所有标签页
2. 找到店小秘编辑页(title="店小秘--编辑速卖通产品")
3. Runtime.evaluate 读取页面状态(标题/hash/bodyText)
4. 确认哪个标签页有已填数据
5. Target.closeTarget 关闭空白/重复标签页
6. Target.activateTarget 激活正确标签页
7. 此时 browser_snapshot 应显示已填数据
全链挂了
# WSL 端
pkill -f chrome_relay.py
cd ~/.hermes/scripts && python3 chrome_relay.py &
# Windows 端(需手动或从 WSL 触发)
taskkill /F /IM chrome.exe
# 重新启动 Chrome(Step A)
作者:南方星火 SouthernSpark | 小红书 @南方星火 SouthernSpark | AI 自动化专家工作流