2015-02-10 258 views
9

我需要从Chrome获取网络事件。我发现这一点: https://developer.chrome.com/devtools/docs/debugger-protocol https://developer.chrome.com/devtools/docs/protocol/1.1/network#command-enable使用Google Chrome远程调试协议

看来,Chrome使用一个端口来获取消息,接听和发送事件,用于远程调试。它说它使用JSON,所以我决定尝试它。因此,我写了一些简单的java代码,它打开了chrome正在监听的端口(当然,我通过在我的ubuntu机器上使用google-chrome --remote-debugging-port=9222启动了它)。我有写到标准输出任何东西,从这个端口来一个线程,然后将代码写入此使用这条线的插座的OutputStream(从协议的样品的方法):

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

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

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

回答

9

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

首先我发送一个HTTP请求到http://localhost:9222/json。这将返回在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" 
} 
] 

那么我可以用的WebSocket发送用于调试特定的标签,使用此URI。我还发现使用WebSocket的Jetty实现:javax.websocket client simple example

+2

谢谢你!你是真正的MVP – reformy 2016-11-04 08:01:13