Chrome 远程调试不适用于 IP

Posted

技术标签:

【中文标题】Chrome 远程调试不适用于 IP【英文标题】:Chrome remote debugging doesn't work with IP 【发布时间】:2011-10-13 05:28:09 【问题描述】:

我正在尝试使用 chrome 中的远程调试选项远程调试 chrome 实例:

chrome.exe --remote-debugging-port=1337

如谷歌页面所述:http://code.google.com/chrome/devtools/docs/remote-debugging.html

问题是当我尝试使用 IP 访问它时它不起作用,而使用 localhost:1337 测试它确实起作用。

有什么想法吗?

【问题讨论】:

端口在windows上打开了吗?如果没有,您必须为此端口添加 Windows 防火墙规则! webkit.org/blog/1620/webkit-remote-debugging 【参考方案1】:

您可以使用 netcat 创建简单的 TCP 代理:

EXTERNAL_PORT=1338
CHROME_DEBUG_PORT=1337 # This is the port specified with --remote-debugging-port

nc -l -p $EXTERNAL_PORT -c "nc 127.0.0.1 $CHROME_DEBUG_PORT"

【讨论】:

【参考方案2】:

    启动无头服务器

    chrome.exe --remote-debugging-port=9222
    

    在 windows 上设置端口转发

    netsh interface portproxy add v4tov4^
        listenport=9222 listenaddress=0.0.0.0^
        connectaddress=127.0.0.1 connectport=9222 
    

【讨论】:

在 Windows 上,这与向 Windows 防火墙添加入站规则结合使用效果很好,无需安装任何额外的端口转发实用程序。有关完整说明,请参阅我的答案... 请注意,line continuation character 是 (^) 对应于 cmd.exe(正如我在上面添加的),但反引号 (`) 对应于 PowerShell。 如果你尝试这个,Chome 会报错:Host header is specified and is not an IP address or localhost.【参考方案3】:

最近的 Chrome 版本支持命令行开关“--remote-debugging-address”,因此不再需要上面列出的解决方法。

这里是描述: "使用给定地址而不是默认环回来接受远程调试连接。应该与 --remote-debugging-port 一起使用。注意远程调试协议不执行任何身份验证,因此暴露它过于广泛可能会带来安全风险。"

【讨论】:

你知道这个怎么用吗?我尝试了各种方法,但无法远程访问调试工具。它是否要求远程客户端IP?还是它要求一个可以解析到我的机器的 DNS 名称? @Sean256 你明白了吗?无论我使用什么咒语,我都无法做到这一点.. @MarcusStade 我没有。从那以后,我求助于创建一个 ssh 隧道。它必须被打破。 我在 Docker 容器下运行 Chrome 并将 --remote-debugging-address=0.0.0.0 添加到命令行允许我从外部连接。简单的测试方法是检查版本页面:localhost:9222/json/version ***.com/questions/40538197/… 声明这只适用于无头模式。【参考方案4】:

您可以设置 SSH 隧道以进行远程调试。在源机器上执行:

ssh -L 0.0.0.0:9223:localhost:9222 localhost -N 

然后在另一台机器上点Chrome浏览器到http://source-machine-ip:9223

【讨论】:

谢谢!那对我来说效果很好。我从来没有设法为此使用 netcat。 谢谢,正是我需要的,第二次(8 月 15 日引用),让两个 GNU/Linux 机器聊天以进行远程调试。 也可以使用-R标志进行远程端口转发 它在最新版本中不起作用。 Chrome 正在返回空响应。【参考方案5】:

在 Windows 8 上运行 Chrome 远程调试主机时,以下内容对我有用。

    向 Windows 防火墙添加入站规则 搜索“Windows 防火墙”并选择“Windows 防火墙”结果 在“Windows 防火墙”控制面板窗口左侧,单击“高级设置”。这将打开“具有高级安全性的 Windows 防火墙”。 在左侧的树形视图中,点击“入站规则” 在最右侧,点击“新建规则...” 选择“端口”(单击下一步) 选择TCP并将“特定本地端口”设置为9222(点击下一步) 选择“允许连接”(单击下一步) 根据您的需要选择配置文件访问权限(域、私有、公共)(单击下一步) 给它起一个名字,比如Chrome Remote Debugging (9222)(点击完成) 关注user3445047's instructions on port forwarding:

在 Windows 主机上运行 Chrome:

chrome.exe --remote-debugging-port=9222

在 Windows 主机上设置端口转发:

打开一个cmd 窗口。您必须“以管理员身份运行”。

在 cmd 窗口中输入以下内容:

netsh
interface
portproxy
add v4tov4 listenport=9222 connectaddress=127.0.0.1

在客户端上,导航到http://THE_HOST_IP_ADDRESS:9222,您应该会看到一个“可检查页面”列表。

【讨论】:

【参考方案6】:

与另一台计算机共享调试会话的最简单方法是使用socat。 例如,如果您在端口 1337 上启用了远程调试协议,使用

chromium --remote-debugging-port=1337

然后,你可以使用socat创建隧道,

socat tcp-listen:5656,fork tcp:localhost:1337

完成此操作后,任何人都可以访问http://<YOUR_IP_OR_HOSTNAME>:5656/并立即使用调试器。

完成后,按 Ctrl + C 终止 socat,从而停止隧道。 如果前面的代码不起作用,请检查防火墙(例如iptables)是否阻止访问。如果防火墙正常,请检查 IP 地址或主机名是否正确。要查看流量是否正确转发/隧道,请访问 http://localhost:5656/ 并验证是否有 Webkit 调试器实例正在运行。

【讨论】:

当我尝试使用除localhost 之外的其他主机名访问它时,我得到Host header is specified and is not an IP address or localhost 如果您的服务器可以通过 IPV6 和 IPV4 访问,我建议使用 IP 而不是主机名。 (起初对我不起作用,因为 socat 在 IPV4 上运行,而 chrome 正在尝试 IPV6)【参考方案7】:

我认为 Chrome 不接受来自本地主机外部的连接(出于安全原因)。 我建议您必须在 Chrome 所在的同一主机上构建小型代理。

【讨论】:

因为他们是为移动设备创建的,您可以从桌面而不是智能手机进行调试 推荐什么资源来创建代理?我想在大多数情况下,这比它的价值更麻烦,但在过去的几个月里,我曾多次想过这个问题。 对不起,克里斯,我在这里没有建议。我为自己从头开始编写 Java,您可能也可以。我知道某些“nc”(netcat)实用程序已经支持代理(不是openbsd)。 我可以推荐 Charles Web 调试代理。 已解决:在不安装任何第三方软件的情况下查看我在 Windows 上的完整解决方案的答案。

以上是关于Chrome 远程调试不适用于 IP的主要内容,如果未能解决你的问题,请参考以下文章

USB 调试不适用于 MK809V Android 棒

用于 Android 远程调试的 Google Chrome -“localhost:9222”不可用

使用chrome远程调试设备及调试模拟器设备

chrome 远程调试

Chrome 远程调试 - 获取页面通知

[转] 在安卓设备上使用 Chrome 远程调试功能