Membangun Pintu Masuk Debug Browser Jarak Jauh di Windows
Categories:
Artikel ini menjelaskan cara menjalankan Chrome di host Windows dan menyediakan pintu masuk debugging jarak jauh melalui CDP untuk digunakan oleh klien Linux atau MCP di jaringan lokal. Inti dari solusi ini adalah Chrome hanya mendengarkan 127.0.0.1, dan portproxy memetakannya ke alamat LAN, kemudian firewall membatasi sumber jarak jauh.
Topologi dan Aliran
Gambar berikut menunjukkan aliran port di dalam host Windows, serta cara klien mengaksesnya melalui alamat 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 clientMemulai Chrome
Disarankan untuk menggunakan direktori pengguna yang terpisah dan secara eksplisit menentukan alamat debugging jarak jauh, sehingga Chrome hanya membuka port debugging untuk host lokal. Contoh berikut menggunakan port 9222, silakan sesuaikan dengan kebutuhan Anda.
& "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"
Mengonfigurasi Port Forwarding
Gunakan portproxy untuk memetakan 127.0.0.1:9222 di host lokal ke alamat LAN Windows 192.168.31.2:9222, sehingga klien di jaringan lokal dapat mengaksesnya.
netsh interface portproxy add v4tov4 `
listenaddress=192.168.31.2 listenport=9222 `
connectaddress=127.0.0.1 connectport=9222 `
protocol=tcp
Pastikan aturan sudah aktif, Anda dapat memeriksa konfigurasi forwarding saat ini.
netsh interface portproxy show v4tov4
Mengatur Firewall
Untuk membatasi permukaan eksposur, disarankan untuk hanya mengizinkan klien IP tertentu mengakses port tersebut. Contoh berikut mengizinkan koneksi dari 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
Memverifikasi Koneksi
Jika baik host lokal maupun alamat LAN dapat mengembalikan /json/version, maka koneksi dapat digunakan. Langkah ini juga dapat membantu mengidentifikasi apakah masalahnya ada pada Chrome, portproxy, atau firewall.
curl http://127.0.0.1:9222/json/version
curl http://192.168.31.2:9222/json/version
Gambar berikut menunjukkan proses forwarding permintaan verifikasi di antara komponen-komponen tersebut.
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: JSONMengakses MCP
Setelah port diekspos, MCP hanya perlu menunjuk ke alamat LAN. Contoh berikut menggunakan chrome-devtools-mcp untuk terhubung ke 192.168.31.2:9222.
{
"chrome-devtools": {
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@latest",
"--browser-url=http://192.168.31.2:9222"
]
}
}
Membersihkan dan Memulihkan
Aturan portproxy bersifat permanen, jadi jika tidak lagi digunakan, hapus pemetaan dan hapus aturan firewall untuk menghindari paparan port debugging secara tidak sengaja.
netsh interface portproxy delete v4tov4 listenaddress=192.168.31.2 listenport=9222 protocol=tcp
Jika Anda mengganti port atau IP, Anda perlu menyesuaikan parameter Chrome, aturan portproxy, aturan firewall, dan konfigurasi MCP secara bersamaan, jika tidak koneksi akan tidak konsisten.
Port debugging jarak jauh memiliki kemampuan kontrol browser yang lengkap, tidak boleh diekspos ke internet publik, dan tidak disarankan untuk diaktifkan dalam jangka panjang di lingkungan produksi. Jika harus digunakan di jaringan yang berbeda, pertimbangkan VPN atau terowongan zero-trust, dan pertahankan prinsip minimalisasi hak akses dan permukaan eksposur.