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)

  1. 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
  1. 允许 Windows 防火墙放行 9222(同样在 192.168.1.110):
netsh advfirewall firewall add rule name="Chrome CDP 9222" dir=in action=allow protocol=TCP localport=9222
  1. 确认端口已在监听:
netstat -ano | findstr :9222

应能看到 0.0.0.0:9222(或 192.168.1.110:9222)处于 LISTENING。(Windows OS Hub)

  1. 192.168.1.118 上访问测试:
  • 打开 http://192.168.1.110:9222/json/versionhttp://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。
  • 如何取消转发?

    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 正在持续收紧这类能力,公开暴露风险很高。仅在可信局域网使用,并限制访问来源。