Konfigurowanie zdalnego punktu wejścia do debugowania przeglądarki w systemie Windows
Categories:
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 clientUruchomienie 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: JSONIntegracja 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.