使用谷歌Chrome远程调试协议

时间:2015-02-10 11:25:38

标签: google-chrome google-chrome-devtools

我需要从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启动了它)。我有一个线程写入stdout来自此端口的任何内容,然后代码使用此行将此写入套接字的输出流(协议中的示例方法):

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

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

有没有人做过这样的事情?我无法在网上找到任何东西。

1 个答案:

答案 0 :(得分:16)

最后我明白了。积分转到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://stackoverflow.com/questions/28430479/using-google-chrome-remote-debugging-protocol",
"webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/C014A09F-BD0A-40BA-B23C-7B18B84942CD"
}
]

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