从外部设备使用 Chromium 远程调试

Posted

技术标签:

【中文标题】从外部设备使用 Chromium 远程调试【英文标题】:Using Chromium Remote Debugging from External Device 【发布时间】:2013-09-01 14:36:36 【问题描述】:

Chrome 可以运行以支持remote debugging,方法是通过命令行使用提示符(例如chrome.exe --remote-debugging-port=9222 --user-data-dir=C:/foo)启动它。这经常使用to debug on android or ios 在桌面设备上使用浏览器,但我想调试在桌面 PC 上运行的 chrome。从同一台机器上的“客户端浏览器”可以调用 localhost:9222 并查看服务器浏览器,调用 localhost:9222/json 将导致在“服务器浏览器”中打开的选项卡的 json 表示。这工作得很好。

但是,当我尝试通过调用 [local IP]:9222 或 [local IP]:9222/json(本地 IP 是服务器浏览器的 IP)来使用同一 (wifi) 网络中的另一台设备时,我得到一个连接超时。是否可以以这种方式使用远程调试?启动浏览器时是否需要其他开关?

编辑我发现了一些使用前向 tcp 来调试移动设备,但有not seem to be such a switch for chrome。

编辑 2 这似乎与here 和here 的问题有点重复,但是到目前为止,我还没有得到那里提供的解决方案。

所以,显然这归结为将端口转发到 localhost:9222。但是,至少在 Windows 机器上,我对 SSH 隧道没有运气。有没有其他方法可以在机器上转发?

【问题讨论】:

【参考方案1】:

您可以通过添加参数来实现相同的行为 --remote-debugging-address=[YOUR_EXTERNAL_IP_ADDRESS] 与 here 报告的一样,除了 Chrome 本身之外没有任何其他软件。

【讨论】:

现在应该标记为正确答案。完美运行。 它的工作!另一个重要的事情是,如果你得到空白的控制台页面,你可能应该在 chrome 的网站设置中允许不安全的内容(点击地址栏上的小锁图标)源 - developers.google.com/cast/docs/debugging/remote_debugger 在 chrome 和 chromium 中对我不起作用(试图绕过 google-chrome 在 X 上不起作用,因为版本 77)Unbunti 18.04 remote-debugging-address 仅适用于无头模式。非常不幸,因为我想使用此功能的唯一原因是查看本地计算机上的测试。【参考方案2】:

正如您所提到的,解决方案是转发端口9222。您可以在下面找到适用于 Linux 和 Windows 的方法。

Linux

在启动 chrome 之后

chrome --remote-debugging-port=9222

转发端口

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

通过这种方式,您可以使用 Chrome 浏览器从端口 9223 上的外部设备访问调试界面。

窗口

如this answer 中所见,在 Windows(在 7,8 上测试)上,在没有第三方应用程序的情况下进行端口转发的最简单方法是通过 netsh

我创建了一个包含以下内容的批处理文件。它必须以管理员身份运行,并且之前没有打开过 chrome 窗口:

netsh interface portproxy delete v4tov4 listenport=9222 listenaddress=0.0.0.0
start /b cmd /c call "\program files\google\chrome\application\chrome.exe" -remote-debugging-port=9222
timeout 5
netsh interface portproxy add v4tov4 listenport=9222 connectaddress=127.0.0.1 connectport=9222 listenaddress=0.0.0.0

这样您就可以通过端口9222从外部设备访问调试接口。

还要确保没有防火墙阻止相应的端口。

【讨论】:

在 Linux 上,在 ssh 命令之后,我在控制台端得到了channel 1: open failed: connect failed: Connection refused,在远程浏览器上得到了site not found【参考方案3】:

我已经成功地在 Windows 7 中使用 RInetD 轻松进行端口转发,尝试了这个,它就像一个魅力,从 Mac/Ubuntu 中的 Chrome 外部调试 Windows 中的 Chrome 浏览器。

您可以从以下网址下载rinetd:

http://www.boutell.com/rinetd/

解压文件,创建一个任意名字的空文件(我用的是rinetd.conf),内容如下:

0.0.0.0 9223 127.0.0.1 9222

在 Windows 控制台中运行它:

rinetd.exe -c rinetd.conf

瞧!

【讨论】:

以上是关于从外部设备使用 Chromium 远程调试的主要内容,如果未能解决你的问题,请参考以下文章

远程调试 Android 设备使用入门

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

转: Android 设备的远程调试入门

从 Visual Studio 调试远程设备(PDA、ARM)上的 winMobile 应用程序

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

Windows Embedded 中的远程调试