啟動模組: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 自動化專家工作流