自动记录网络选项卡,无需在 Google Chrome 中打开它

unk*_*use 3 google-chrome google-chrome-extension google-chrome-devtools

我需要将网络选项卡中显示的信息记录到文件中。我可以通过首先触发网络选项卡然后将其导出到文件来完成此操作。但是是否可以在 Chrome 打开时自动运行网络选项卡并将其导出到后台文件中?

可以做吗?

Gid*_*zer 5

这取决于您的要求。如果您的扩展涉及DevTools,因此它是开放的,您可以使用该chrome.devtools.network.getHAR()方法获取网络流量。您不需要导航到“网络”选项卡。

但是,如果您想在未打开 DevTools 的情况下访问网络数据,则此 API 将不起作用,因为它仅暴露给 DevTools 实例。有几种可能的选择。

选项1

您可以使用chrome.webRequestAPI 拦截每个请求/响应,并将您想要/可以的任何数据附加到对象中。然后,您可以使用chrome.downloads API 下载数据。对于您的情况,您可以使用数据 URI。

var url = 'data:application/json;base64,' + btoa(data);
chrome.downloads.download({url: url, filename: 'notQuiteAHAR'json'});
Run Code Online (Sandbox Code Playgroud)

我还没有在实践中测试过这一点,并且我不太确定您是否可以在调用下载之前确定所有请求何时完成。

选项2

chrome.debugger根据 @wOxxOm 的评论,使用更底层的API。调试协议一次只允许调试器的一个实例,因此只有在没有运行 DevTools 的情况下这才有效。该 API 公开的内容比 API 多得多chrome.webRequest,但需要做一些工作才能获取所需的所有数据。

有一个名为 的存储库chrome-har-capturer,它使用调试协议。特别令人感兴趣的是har.js,它使用调试器 API 中找到的事件来手动构建 HAR。该库的目的是用于远程调试目的,但我相信您可以在扩展中使用调试器 API,因此您可能可以使用此存储库的各个方面。