Настройка удаленного интерфейса отладки браузера в Windows

Настройка удаленного интерфейса отладки браузера в Windows через порт отладки Chrome и перенаправление портов для подключения клиентов в локальной сети с контролем доступа.

В этой статье описывается, как запустить Chrome на Windows и предоставить удаленный интерфейс отладки через CDP для подключения клиентов в локальной сети или MCP. Основная идея решения: Chrome слушает только 127.0.0.1, portproxy перенаправляет его на LAN-адрес, а доступ ограничивается через брандмауэр.

Топология и направление трафика

На схеме ниже показано направление трафика портов внутри хоста Windows и как клиенты в локальной сети подключаются.

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

Запуск Chrome

Рекомендуется использовать отдельный каталог профиля и явно указать адрес удаленной отладки, чтобы Chrome открывал порт отладки только для локального хоста. Ниже приведен пример с портом 9222 — подставьте нужный порт.

& "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"

Настройка перенаправления портов

Используйте portproxy для перенаправления 127.0.0.1:9222 на LAN-адрес Windows 192.168.31.2:9222, чтобы клиенты в локальной сети могли получить доступ.

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

Убедитесь, что правило добавлено. Проверьте текущую конфигурацию перенаправления.

netsh interface portproxy show v4tov4

Настройка брандмауэра

Чтобы ограничить поверхность атаки, рекомендуется разрешать доступ к порту только с указанных IP-адресов клиентов. Ниже пример, разрешающий подключения с 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

Проверка подключения

Когда оба адреса (локальный и LAN) возвращают /json/version, это означает, что путь работает. Это помогает быстро выявить проблему: Chrome, portproxy или брандмауэр.

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

На схеме ниже показан процесс перенаправления запросов проверки между компонентами.

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

Подключение к MCP

После того, как порт открыт, MCP просто указывает на LAN-адрес. Ниже пример прямого подключения chrome-devtools-mcp к 192.168.31.2:9222.

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

Очистка и восстановление

Правила portproxy сохраняются постоянно. Если вы больше не используете их, удалите перенаправление и правило брандмауэра, чтобы избежать случайного раскрытия порта отладки.

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

Если вы меняете порт или IP, одновременно обновите параметры Chrome, правило portproxy, правило брандмауэра и конфигурацию MCP, иначе подключение не будет работать.

Порт удаленной отладки предоставляет полный контроль над браузером. Не следует открывать его в интернете и не рекомендуется постоянно включать в производственной среде. Если требуется доступ через сеть, предпочтительнее использовать VPN или туннели с нулевым доверием, соблюдая принцип наименьших привилегий и минимальной поверхности атаки.