Configurando um ponto de depuração de navegador remoto no Windows

Configurar um ponto de depuração de navegador no Windows através do Chrome Remote Debug Port e port forwarding, oferecendo um ponto de depuração de navegador controlável para clientes Linux na LAN.

Este artigo descreve como executar o Chrome em um host Windows e fornecer um ponto de depuração remota via CDP para clientes Linux na LAN ou conexão MCP. O núcleo da solução é que o Chrome só escuta 127.0.0.1, mapeado para o endereço LAN pelo portproxy, e então restringido por firewall para origem remota.

Topologia e fluxo

O diagrama abaixo mostra o fluxo de porta dentro do host Windows e como o cliente acessa via endereço LAN.

flowchart TB
    subgraph Windows
        A[Chrome DevTools 127.0.0.1:9222] --> B[portproxy 192.168.31.2:9222]
        B --> C[Windows Firewall]
    end
    D[Linux Client] -->|CDP| B

    classDef local fill:#2c3e50,stroke:#ecf0f1,stroke-width:2px,color:#ecf0f1
    classDef proxy fill:#3498db,stroke:#2980b9,stroke-width:2px,color:#fff
    classDef firewall fill:#f39c12,stroke:#d35400,stroke-width:2px,color:#fff
    classDef client fill:#27ae60,stroke:#229954,stroke-width:2px,color:#fff

    class A local
    class B proxy
    class C firewall
    class D client

Iniciar Chrome

Recomenda-se usar um diretório de usuário independente e especificar explicitamente o endereço de remote debugging, assim o Chrome só abre a porta de depuração localmente. O exemplo abaixo usa a porta 9222 como exemplo, ajuste conforme necessário.

& "C:\Program Files\Google\Chrome\Application\chrome.exe" `
  --remote-debugging-address=127.0.0.1 `
  --remote-debugging-port=9222 `
  --user-data-dir="$env:TEMP\chrome-profile-mcp"

Configurar port forwarding

Use portproxy para mapear 127.0.0.1:9222 localmente para o endereço LAN 192.168.31.2:9222 do Windows, permitindo que clientes LAN acessem.

netsh interface portproxy add v4tov4 `
  listenaddress=192.168.31.2 listenport=9222 `
  connectaddress=127.0.0.1 connectport=9222 `
  protocol=tcp

Confirme que a regra está ativa, verificando a configuração de encaminhamento atual.

netsh interface portproxy show v4tov4

Configurar firewall

Para limitar a exposição, recomenda-se permitir apenas IPs de cliente específicos. O exemplo abaixo permite conexões de 192.168.31.162.

New-NetFirewallRule `
  -DisplayName "Allow CDP 9222 from Linux" `
  -Direction Inbound `
  -Action Allow `
  -Protocol TCP `
  -LocalPort 9222 `
  -RemoteAddress 192.168.31.162

Verificar conexão

Quando tanto o endereço local quanto o LAN retornam /json/version, a cadeia está disponível. Este passo ajuda a identificar rapidamente se o problema está no Chrome, portproxy ou firewall.

curl http://127.0.0.1:9222/json/version
curl http://192.168.31.2:9222/json/version

O diagrama abaixo mostra o encaminhamento da solicitação de verificação entre os componentes.

sequenceDiagram
    participant Client as Client
    participant Proxy as Portproxy
    participant Chrome as Chrome
    Client->>Proxy: HTTP /json/version
    Proxy->>Chrome: 127.0.0.1:9222
    Chrome-->>Proxy: JSON
    Proxy-->>Client: JSON

Integração MCP

Após expor a porta, o MCP só precisa apontar para o endereço LAN. O exemplo abaixo usa chrome-devtools-mcp apontando para 192.168.31.2:9222.

{
  "chrome-devtools": {
    "command": "npx",
    "args": [
      "-y",
      "chrome-devtools-mcp@latest",
      "--browser-url=http://192.168.31.2:9222"
    ]
  }
}

Limpeza e restauração

As regras portproxy são persistentes; se não for mais usado, remova o mapeamento e a regra de firewall para evitar exposição acidental da porta de depuração.

netsh interface portproxy delete v4tov4 listenaddress=192.168.31.2 listenport=9222 protocol=tcp

Se mudar porta ou IP, ajuste simultaneamente parâmetros do Chrome, regra portproxy, regra de firewall e configuração MCP, caso contrário haverá inconsistência de conexão.

A porta de depuração remota tem controle total do navegador, não deve ser exposta à internet pública nem mantida ativa em produção. Se necessário usar entre redes, prefira VPN ou túnel zero-trust, mantendo mínimos privilégios e exposição.