Konfigurowanie zdalnego punktu wejścia do debugowania przeglądarki w systemie Windows

Skonfiguruj zdalny punkt wejścia do debugowania przeglądarki w systemie Windows za pomocą CDP i przekierowania portów, umożliwiający kontrolowany dostęp z sieci LAN.

W tym artykule opisano, jak uruchomić Chrome w systemie Windows i udostępnić zdalny punkt wejścia do debugowania za pomocą CDP, dostępny dla klientów Linux lub MCP w sieci LAN. Kluczową zasadą tego rozwiązania jest to, że Chrome nasłuchuje tylko na 127.0.0.1, a portproxy mapuje go na adres LAN, a następnie zapora systemu Windows ogranicza zdalne źródła.

Topologia i przepływ

Na poniższym diagramie przedstawiono przepływ portów wewnętrznych w systemie Windows oraz sposób, w jaki klient może uzyskać dostęp przez adres 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

Uruchomienie Chrome

Zaleca się użycie oddzielnego katalogu użytkownika i jawne określenie adresu debugowania zdalnego, co sprawia, że Chrome udostępnia port debugowania tylko lokalnie. Poniższy przykład używa portu 9222 — dostosuj go do własnych potrzeb.

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

Konfiguracja przekierowania portów

Użyj portproxy, aby zamapować 127.0.0.1:9222 na adres LAN systemu Windows 192.168.31.2:9222, dzięki czemu klienci w sieci LAN będą mogli uzyskać dostęp.

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

Upewnij się, że reguła została zastosowana — możesz sprawdzić bieżące ustawienia przekierowania.

netsh interface portproxy show v4tov4

Konfiguracja zapory

Aby ograniczyć obszar ekspozycji, zaleca się zezwolenie na dostęp do tego portu tylko z określonych adresów IP klientów. Poniższy przykład zezwala na połączenia z 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

Weryfikacja połączenia

Gdy zarówno adres lokalny, jak i LAN zwracają /json/version, oznacza to, że łącze jest dostępne. Ten krok również pomaga szybko zidentyfikować, czy problem dotyczy Chrome, portproxy czy zapory.

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

Na poniższym diagramie przedstawiono przepływ żądań weryfikacyjnych między poszczególnymi komponentami.

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

Integracja z MCP

Po udostępnieniu portu MCP wystarczy wskazać adres LAN. Poniższy przykład bezpośrednio wykorzystuje chrome-devtools-mcp do połączenia z 192.168.31.2:9222.

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

Czyszczenie i przywracanie

Reguły portproxy są trwałe — jeśli nie są już używane, należy usunąć mapowanie i usunąć regułę zapory, aby uniknąć przypadkowego udostępnienia portu debugowania.

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

Jeśli zmienisz port lub IP, musisz również dostosować parametry Chrome, reguły portproxy, reguły zapory oraz konfigurację MCP — w przeciwnym razie wystąpią niezgodności połączeń.

Port debugowania zdalnego ma pełną kontrolę nad przeglądarką — nie należy go udostępniać w Internecie ani długoterminowo włączać w środowiskach produkcyjnych. Jeśli konieczne jest użycie go w sieciach zewnętrznych, należy najpierw rozważyć VPN lub tunele zero-trust z minimalnymi uprawnieniami i minimalnym obszarem ekspozycji.