从另一台机器进行Chrome远程调试

时间:2016-11-10 22:33:06

标签: google-chrome

Chrome有一个非常棒的功能,允许您从其他浏览器或窗口打开开发工具。它通过使用此标志启动chrome来工作:

--remote-debugging-port=9222

然后,您可以从其他窗口/浏览器转到http://localhost:9222并为Chrome中的任何正在运行的标签打开开发工具。出于安全考虑,Chrome不允许通过IP访问其他计算机,例如http://192.168.1.2:9222

但是有一个额外的标志表明它打开了这个功能,这就是Chrome必须要说的:

--remote-debugging-address 
  

使用给定的地址而不是默认的环回来接受   远程调试连接。应该和。一起使用   --remote调试端口。请注意,远程调试协议不执行任何身份验证,因此将其暴露得过于广泛   安全风险。

要么它不起作用,要么我不知道如何格式化它。我尝试过以下方法:

--remote-debugging-port=9222 --remote-debugging-address=http://192.168.1.2:9222
--remote-debugging-port=9222 --remote-debugging-address=http://192.168.1.2
--remote-debugging-port=9222 --remote-debugging-address=192.168.1.2:9222
--remote-debugging-port=9222 --remote-debugging-address=192.168.1.3 //maybe thinking its supposed to be the IP of the remote machine

目标机器Mac

3 个答案:

答案 0 :(得分:5)

事实证明,选项“--remote-debugging-address”只能用于无头模式(“--headless”),并且当浏览器在docker容器中运行时用于测试而不是用于远程调试。

“remote-debugging-address”的参数必须是使用“--remote-debugging-address”启动Chrome的计算机的本地网络接口的数字ip-adress。 使用任何非本地IP地址时,您将收到以下错误:

[0526/132024.480654:ERROR:socket_posix.cc(137)] bind() returned an error, errno=49: Can't assign requested address
[0526/132024.480766:ERROR:devtools_http_handler.cc(226)] Cannot start http server for devtools. Stop devtools.

在我的Mac上,我可以使用此命令行启动Chrome Canary版本(当前的稳定版本只是以“--headless”崩溃):

/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary  --remote-debugging-port=9222 --remote-debugging-address=192.168.1.20 --headless

在另一个shell中,你可以看到,这个地址用于侦听套接字:

netstat -a -n | grep 9222
tcp4       0      0  192.168.1.20.9222      *.*                    LISTEN   

如果没有“--headless”,输出将如下所示:

tcp4       0      0  127.0.0.1.9222         *.*                    LISTEN

迈克尔

答案 1 :(得分:0)

尝试在目标计算机上创建HTTP代理。

httpProxy
    .createServer({
      target: wsurl,
      ws: true,
      localAddress: host
    })
    .listen(port);

为我工作。

答案 2 :(得分:0)

--remote-debugging-address 在语义上与 chromedriver 的 --whitelisted-ips

不同

远程调试地址必须指定要绑定的地址。所以你想要的是你机器的 IP 地址,而不是你将要连接的地址。尝试使用 --remote-debugging-address=0.0.0.0

绑定到所有接口