在 Windows 上搭建远程浏览器调试入口
Categories:
本文说明如何在 Windows 主机上运行 Chrome 并通过 CDP 提供远程调试入口, 供局域网内的 Linux 客户端或 MCP 连接使用. 方案核心是 Chrome 仅监听 127.0.0.1, 由 portproxy 映射到 LAN 地址, 再通过防火墙限制远端来源.
拓扑与流向
下图展示了端口在 Windows 主机内部的流向, 以及客户端如何通过 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
启动 Chrome
建议使用独立的用户目录, 并显式指定 remote debugging 地址, 这样 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 映射到 Windows 的 LAN 地址 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 或零信任隧道, 并保持最小权限和最小暴露面.