Membangun Pintu Masuk Debug Browser Jarak Jauh di Windows

Di Windows, gunakan port debugging jarak jauh Chrome dan port forwarding untuk menyediakan pintu masuk debugging browser yang terkontrol bagi jaringan lokal.

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 client

Memulai 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: JSON

Mengakses 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.