使用谷歌浏览器远程调试协议

Posted

技术标签:

【中文标题】使用谷歌浏览器远程调试协议【英文标题】:Using Google Chrome remote debugging protocol 【发布时间】:2015-04-10 09:57:31 【问题描述】:

我需要从 Chrome 获取网络事件。我发现了这个: https://developer.chrome.com/devtools/docs/debugger-protocol https://developer.chrome.com/devtools/docs/protocol/1.1/network#command-enable

Chrome 似乎使用端口来获取消息、应答和发送事件,以进行远程调试。它说它使用 JSON,所以我决定尝试一下。

所以,我编写了一些简单的 java 代码来打开 chrome 正在侦听的端口(当然我已经在我的 ubuntu 机器上使用 google-chrome --remote-debugging-port=9222 启动了它)。我有一个线程将来自该端口的任何内容写入标准输出,然后代码使用此行(协议中的示例方法)将其写入套接字的输出流:

out.println("\"id\": 1,\"method\": \"Network.enable\"");

我希望输入流中有一些答案(根据协议),但没有任何反应。

有人做过这样的事吗?我在网上找不到任何东西。

【问题讨论】:

【参考方案1】:

我终于明白了。归功于https://www.igvita.com/2012/04/09/driving-google-chrome-via-websocket-api/。

首先我向http://localhost:9222/json 发送一个HTTP 请求。这将返回 Chrome 中打开的选项卡的 JSON 列表,对于每个我还得到一个 WebSocket uri (webSocketDebuggerUrl):

[

"description": "",
"devtoolsFrontendUrl": "/devtools/devtools.html?ws=localhost:9222/devtools/page/C014A09F-BD0A-40BA-B23C-7B18B84942CD",
"faviconUrl": "http://cdn.sstatic.net/***/img/favicon.ico?v=00a326f96f68",
"id": "C014A09F-BD0A-40BA-B23C-7B18B84942CD",
"title": "Using Google Chrome remote debugging protocol - Stack Overflow",
"type": "page",
"url": "https://***.com/questions/28430479/using-google-chrome-remote-debugging-protocol",
"webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/C014A09F-BD0A-40BA-B23C-7B18B84942CD"

]

然后我可以使用 WebSocket 发送消息以使用此 URI 来调试特定选项卡。我还发现这个使用 WebSocket 的 Jetty 实现:javax.websocket client simple example。

【讨论】:

以上是关于使用谷歌浏览器远程调试协议的主要内容,如果未能解决你的问题,请参考以下文章

使用谷歌浏览器远程调试我的安卓设备没有显示浏览器检查

谷歌浏览器调试js 断点怎么使用

如何调试nodejs程序 在谷歌浏览器

谷歌浏览器怎么调试js

谷歌浏览器怎么调试js

谷歌浏览器怎样安装vue的调试