Primeiro, escolha o modo de navegador correto
Opção 1: CDP remoto direto do WSL2 para o Windows
Use um perfil de navegador remoto que aponte do WSL2 para um endpoint CDP do Chrome no Windows. Escolha essa opção quando o Gateway permanecer dentro do WSL2, o Chrome for executado no Windows e o controle do navegador precisar atravessar a fronteira entre WSL2 e Windows.Opção 2: Chrome MCP local ao host
Use o driverexisting-session (perfil user) somente quando o Gateway for executado
no mesmo host que o Chrome, você quiser o estado local do navegador com sessão iniciada, não
precisar de transporte do navegador entre hosts e não precisar de responsebody,
exportação para PDF, interceptação de downloads ou ações em lote (os perfis do Chrome MCP não
oferecem suporte a esses recursos).
Para Gateway no WSL2 + Chrome no Windows, use CDP remoto direto. O Chrome MCP é
local ao host, não uma ponte entre WSL2 e Windows.
Arquitetura funcional
- O WSL2 executa o Gateway em
127.0.0.1:18789 - O Windows abre a interface de controle em um navegador normal em
http://127.0.0.1:18789/ - O Chrome no Windows expõe um endpoint CDP na porta
9222 - O WSL2 consegue acessar esse endpoint CDP do Windows
- O OpenClaw aponta um perfil de navegador para o endereço acessível pelo WSL2
Regra essencial para a interface de controle
Quando a interface for aberta pelo Windows, use o localhost do Windows, a menos que você tenha uma configuração HTTPS deliberada:Valide em camadas
Siga de cima para baixo; não pule etapas. Corrigir uma camada ainda pode deixar visível outro erro de uma camada posterior.Camada 1: verifique se o Chrome está disponibilizando CDP no Windows
Diagnostique IPv4 e IPv6 antes de alterar o portproxy
O Chromium tenta primeiro associar a depuração remota a127.0.0.1 e só recorre a
[::1] se a associação IPv4 falhar. Uma regra v4tov4 persistente que escute em
127.0.0.1:9222 pode ocupar esse endpoint antes que o Chrome seja iniciado. O Chrome então
recorre a [::1]:9222, enquanto a regra antiga encaminha o tráfego IPv4 de volta para
seu próprio listener e retorna uma resposta vazia.
Verifique os listeners e as regras de proxy reais no Windows, em vez de deduzi-los
pela versão do Chrome:
tasklist /fi "PID eq <PID>" para cada PID retornado por netstat.
-
Se
chrome.exeresponder em127.0.0.1, remova qualquer regra portproxy que também escute em127.0.0.1:9222. Encaminhe somente o endereço do adaptador do Windows acessível pelo WSL2 para127.0.0.1. -
Se
chrome.exeresponder somente em[::1], aponte o listener acessível pelo WSL2 para::1usandov4tov6, em vez de encaminhar para um endereço IPv4 não utilizado:
0.0.0.0, em um endereço da LAN ou em um endereço da tailnet: o CDP concede controle da
sessão do navegador.
Camada 2: verifique se o WSL2 consegue acessar esse endpoint do Windows
No WSL2, teste o endereço exato que você pretende usar emcdpUrl:
/json/versionretorna JSON com metadados de Browser / Protocol-Version/json/listretorna JSON (um array vazio é aceitável se nenhuma página estiver aberta)
Camada 3: configure o perfil de navegador correto
Aponte o OpenClaw para o endereço acessível pelo WSL2:- use o endereço acessível pelo WSL2, não um endereço que só funcione no Windows
- mantenha
attachOnly: truepara navegadores gerenciados externamente cdpUrlpode usarhttp://,https://,ws://ouwss://- use HTTP(S) quando quiser que o OpenClaw descubra
/json/version - use WS(S) somente quando o provedor do navegador fornecer uma URL direta do socket DevTools
- teste a mesma URL com
curlantes de esperar que o OpenClaw funcione
Camada 4: verifique separadamente a camada da interface de controle
Abrahttp://127.0.0.1:18789/ no Windows e verifique:
- se a origem da página corresponde ao esperado por
gateway.controlUi.allowedOrigins - se a autenticação por token ou o emparelhamento está configurado corretamente
- se você não está diagnosticando um problema de autenticação da interface de controle como se fosse um problema do navegador
Camada 5: verifique o controle do navegador de ponta a ponta
No WSL2:- a aba é aberta no Chrome do Windows
browser tabsretorna o destino- as ações posteriores (
snapshot,screenshot,navigate) funcionam no mesmo perfil
Erros comuns que podem induzir ao diagnóstico incorreto
Lista rápida de triagem
- Windows: qual endereço,
127.0.0.1ou[::1], responde em/json/version, e esse listener pertence achrome.exe? - WSL2:
curl http://WINDOWS_HOST_OR_IP:9222/json/versionfunciona? - Configuração do OpenClaw:
browser.profiles.<name>.cdpUrlusa exatamente esse endereço acessível pelo WSL2? - Interface de controle: você está abrindo
http://127.0.0.1:18789/em vez de um IP da LAN? - Você está tentando usar
existing-sessionentre WSL2 e Windows em vez de CDP remoto direto?