在 192.168.1.110 上开了 Chrome 的 --remote-debugging-port=9222,想让 192.168.1.118 直接访问 http://192.168.1.110:9222。
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="%HOMEPATH%\chrome-profile-stable"
由于 Chrome 默认只在本机回环地址监听(127.0.0.1),最省事又不装 Nginx 的办法是在 192.168.1.110(Windows) 上用系统自带的 netsh portproxy 把外网口转发到本地 127.0.0.1:9222。
方案:用 netsh 暴露 9222(无需 Nginx)
原理:在 192.168.1.110 上监听
0.0.0.0:9222,把流量转发到127.0.0.1:9222(Chrome 实际监听的端口)。微软官方文档说明了netsh interface portproxy的用法。(Microsoft Learn)
- 在 192.168.1.110 上以管理员 PowerShell/命令提示符执行:
:: 1) 添加转发规则(监听所有网卡 9222 -> 回环 9222)
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=9222 connectaddress=127.0.0.1 connectport=9222
:: 2)(可选)限制仅本机 IP 监听
:: netsh interface portproxy add v4tov4 listenaddress=192.168.1.110 listenport=9222 connectaddress=127.0.0.1 connectport=9222
- 允许 Windows 防火墙放行 9222(同样在 192.168.1.110):
netsh advfirewall firewall add rule name="Chrome CDP 9222" dir=in action=allow protocol=TCP localport=9222
- 确认端口已在监听:
netstat -ano | findstr :9222
应能看到 0.0.0.0:9222(或 192.168.1.110:9222)处于 LISTENING。(Windows OS Hub)
- 在 192.168.1.118 上访问测试:
- 打开
http://192.168.1.110:9222/json/version或http://192.168.1.110:9222/json应该能看到 DevTools JSON。
补充:
--remote-debugging-address=0.0.0.0历史上在旧 headless 模式可用,但现在官方正收紧/移除此路径,稳定性与安全性都不建议依赖;因此推荐用系统转发或代理。(Stack Overflow)
常见问题
-
依然连不上?
- 确认 Chrome 的 9222 确实启用(本机访问
http://127.0.0.1:9222/json正常)。 - 重启 “IP Helper” 服务(
iphlpsvc),或重启机器后再试(portproxy 依赖该服务)。(Windows OS Hub) - 检查是否有安全软件/组策略拦截了 9222。
- 确认 Chrome 的 9222 确实启用(本机访问
-
如何取消转发?
netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=9222 netsh advfirewall firewall delete rule name="Chrome CDP 9222"
安全提醒
暴露 CDP(9222)意味着完全控制该浏览器实例,可读写 cookies、标签页、下载文件等;Chrome 正在持续收紧这类能力,公开暴露风险很高。仅在可信局域网使用,并限制访问来源。