【问题标题】:Chrome remote debugging from another machine从另一台机器进行 Chrome 远程调试
【发布时间】:2017-03-25 02:33:33
【问题描述】:

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

--remote-debugging-port=9222

然后,您可以从另一个窗口/浏览器转到 http://localhost:9222 并打开 Chrome 中任何正在运行的选项卡的开发工具。出于安全原因,Chrome 将不允许通过 IP 从另一台计算机访问,比如http://192.168.1.2:9222

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

--remote-debugging-address 

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

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

--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

【问题讨论】:

  • 应该只是其他机器可以连接的IP地址。添加端口将是多余的。
  • 在示例 4 中你可以看到我试过了
  • 示例 4 实际上显示您尝试指定远程计算机的地址。不是本地的...我相信亚历克斯的意思是:--remote-debugging-port=9222 --remote-debugging-address=192.168.1.2 我也想建议这种可能性:--remote-debugging-端口=9222 --remote-debugging-address=0.0.0.0
  • 这里也没有任何效果(调试模式下的chromium在raspberry / linux中),mac上的远程浏览器,通过VPN

标签: google-chrome


【解决方案1】:

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

“remote-debugging-address”的参数必须是你用“--remote-debugging-address”启动Chrome的机器的本地网络接口的数字IP地址。 使用任何非本地 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中你可以看到,这个地址是用来监听socket的:

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

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

tcp4       0      0  127.0.0.1.9222         *.*                    LISTEN

迈克尔

【讨论】:

  • 请注意...如果您想在窗口模式下运行(headed 模式?),SSH 隧道可以完成工作。使用 --remote-debugging-port 指定端口并使用 ssh 将本地端口转发到主机。示例:远程计算机上的--remote-debugging-port=9222 和本地计算机上的ssh -L 9222:localhost:9222 user@host。然后你将连接到本地的 localhost:9222 以访问远程的开发工具。
  • @musicin3d 我在使用 ssh tunner 时收到 curl "Empty reply from server" 但它在主机上正常工作。
  • 您可以显式使用“127.0.0.1”来强制使用 ipv4 而不是 ipv6 连接来进行 ssh 转发,而不是使用“localhost”
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    尝试在您的目标机器上创建一个 HTTP 代理。

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

    为我工作。

    【讨论】:

    猜你喜欢
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 2017-10-20
    相关资源
    最近更新 更多