如何在不实际打开DevTools窗口的情况下访问DevTools API?

时间:2015-05-31 12:37:15

标签: google-chrome-extension google-chrome-devtools

documentation表示“每次DevTools窗口打开时都会创建扩展程序DevTools页面的实例.DevTools页面存在DevTools窗口的生命周期。”

但是,Facebook Pixel Helper设法获取网络信息而不打开devtools窗口。

所以,我想知道是否有其他API或解决方法来访问DevTools窗口中的内容(特别是网络选项卡,Facebook似乎可以这样做)。

1 个答案:

答案 0 :(得分:4)

如果不打开devtools窗口,则无法使用chrome.devtools API。 Facebook Pixel Helper使用chrome.webRequest API获取有关网络请求的信息。此API不提供对响应正文的任何​​访问权限,因此不是特别有用。

还有一些(强大的)方法,FB Pixel Helper extension使用

  • chrome.debugger API允许您执行devtools能够执行的几乎任何操作,包括查询响应主体,只要devtools窗口未打开即可。在以下说明中,我假设您已经连接到调试器。如果您不知道如何操作,请参阅this answer以获取示例。

    1. chrome.debugger.onEvent
    2. 添加监听器
    3. 发送Network.enable命令以开始收听事件。
    4. 请求完成后,将触发onEvent事件,方法名称设置为Network.responseReceived。事件参数包括请求/响应头,状态行等。如果您还想获取响应主体,请调用Network.getResponseBody命令以获取响应主体。
    5. 有关其他网络事件/命令,请参阅debugging protocol specification for network

    6. Content scripts可以使用performance.timing API在(顶级/子)框架中查询文档的加载时间。