Módulo de inicialização: Chrome + Relay + Playwright
Arquitetura
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')
Etapa A: Iniciar Chrome (Windows)
# Primeiro, mate todos os processos antigos do Chrome
taskkill /F /IM chrome.exe
# Inicie o Chrome com porta de depuração
cmd.exe /c start "" "C:\Program Files\Google\Chrome\Application\chrome.exe" \
--remote-debugging-port=9222 \
--user-data-dir="C:\Users\[Seu nome de usuário Windows]\Desktop\chrome-debug"
⚠️ Deve-se usar um --user-data-dir independente (como chrome-debug); o perfil padrão não permite a vinculação à porta 9222.
Etapa B: Iniciar Relay2 (Windows)
O Relay2.exe deve ser executado automaticamente na inicialização do Windows:
C:\Users\[Seu nome de usuário Windows]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\hermes-gateway.vbs
Inicialização manual: clique duas vezes para executar Relay2.exe.
Etapa C: Iniciar Relay WSL
cd ~/.hermes/scripts && python3 chrome_relay.py &
Etapa D: Verificar o link
# Verificar o relay WSL
curl -s http://127.0.0.1:19223/json | head -5
# Deve retornar um JSON com a lista de abas do Chrome
Etapa E: Conexão 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
# Verificar as abas já abertas
Verificação de login
Login no Dianxiaomi
Navegue até o Dianxiaomi → verifique se já está logado (procure pelo nome de usuário [Seu nome de usuário Dianxiaomi]):
document.body.innerText.includes('[Seu nome de usuário Dianxiaomi]')
Se não estiver logado, faça login via QR code: canto superior direito do Dianxiaomi → escaneie o código.
Login na 1688
Verifique o status de login na 1688: abra qualquer página de produto na 1688 → veja se há um botão "Login".
document.body.innerText.includes('Login')
Se não estiver logado, faça login manualmente (o captcha da 1688 não pode ser automatizado).
Recuperação de falhas
Regra de ouro ao reconectar após perda de conexão com Gateway
Erro fatal: Chamar browser_navigate diretamente criará uma nova aba, perdendo dados já preenchidos.
Passos corretos:
1. browser_cdp → Target.getTargets # Listar todas as abas
2. Encontrar a aba de edição do Dianxiaomi (title="店小秘--编辑速卖通产品")
3. Runtime.evaluate para ler o estado da página (título/hash/bodyText)
4. Confirmar qual aba possui dados preenchidos
5. Target.closeTarget fechar abas em branco/duplicadas
6. Target.activateTarget ativar a aba correta
7. Neste ponto, browser_snapshot deve mostrar os dados preenchidos
Falha total da cadeia
# No lado WSL
pkill -f chrome_relay.py
cd ~/.hermes/scripts && python3 chrome_relay.py &
# No lado Windows (manual ou acionado do WSL)
taskkill /F /IM chrome.exe
# Reiniciar o Chrome (Etapa A)
Autor: SouthernSpark | Xiaohongshu @SouthernSpark | Fluxo de trabalho de especialista em automação de IA