10

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

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

编辑我发现一些使用 forward tcp 来调试移动设备,但似乎没有这样的 chrome 开关

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

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

4

3 回答 3

13

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

Linux

启动 chrome 后

chrome --remote-debugging-port=9222

转发端口

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

这样,您可以使用Chrome浏览器从端口9223上的外部设备访问调试接口。

视窗

本答案所示,在 Windows(在 7,8 上测试)上,在没有 3rd 方应用程序的情况下进行端口转发的最简单方法是通过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上的外部设备访问调试接口。

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

于 2014-08-18T15:17:30.177 回答
7

您可以通过添加此处--remote-debugging-address=[YOUR_EXTERNAL_IP_ADDRESS]报告的参数来实现相同的行为 ,而不需要除 Chrome 本身之外的任何其他软件。

于 2017-06-01T13:57:51.633 回答
2

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

您可以从以下位置下载 rinetd:

http://www.botell.com/rinetd/

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

0.0.0.0 9223 127.0.0.1 9222

在 Windows 控制台中运行它:

rinetd.exe -c rinetd.conf

瞧!

于 2013-12-05T23:25:57.763 回答