使用谷歌Chrome远程调试协议

19

我需要获取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个回答

20
最终我得到了它。功劳归于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/stackoverflow/img/favicon.ico?v=00a326f96f68",
"id": "C014A09F-BD0A-40BA-B23C-7B18B84942CD",
"title": "Using Google Chrome remote debugging protocol - Stack Overflow",
"type": "page",
"url": "https://dev59.com/xF4c5IYBdhLWcg3wAWLv",
"webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/C014A09F-BD0A-40BA-B23C-7B18B84942CD"
}
]

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接