【问题标题】: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\"}");

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

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

【问题讨论】:

    标签: google-chrome google-chrome-devtools


    【解决方案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/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

    【讨论】:

      猜你喜欢
      • 2017-05-09
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 2019-12-13
      • 2019-04-07
      • 2016-04-23
      相关资源
      最近更新 更多