25

基本上我需要的是一种自动化以下操作结果的方法:

  1. 打开一个新标签;

  2. 在开发者工具中打开网络标签;

  3. 加载一个 URL;

  4. 选择“全部保存为 HAR”。

通常,建议的解决方案涉及使用PhantomJSbrowsermob-proxypcap2har;这些不适合我的情况,因为我需要处理SPDY流量。

我试图深入研究Google Chrome Extensions API,确实我设法自动化了一些任务,但对于 HAR 文件生成方面的问题仍然没有运气。现在这种方法特别有前途,但我仍然不知道如何使用它。

换句话说,我需要谷歌的人这个实验。请注意以下事项:

我们将 Chrome 的远程调试界面与自定义客户端一起使用,该客户端启动手机上的浏览器,清除其缓存和其他状态,启动网页加载,并接收 Chrome 开发人员工具消息以确定页面加载时间和其他性能指标。

有任何想法吗?


解决方案

出于好奇,我最终得到了一个自动化此类测试的 Node.js 模块:chrome-har-capturer。这也让我有机会深入研究远程调试协议并为通用 Chrome 自动化编写一个较低级别的 Node.js 接口:chrome-remote-interface

4

3 回答 3

12

简短的回答是,没有办法直接获取您所追求的数据。该getHAR方法仅适用于旨在扩展 DevTools 本身的扩展。好消息是,您可以自己构建 HAR 文件而不会遇到太多麻烦——这正是phantom.js 所做的

  1. 使用远程调试启动 Chrome
  2. 使用 websocket 连接在调试端口上连接到 Chrome
  3. 启用“网络”调试,您还可以清除缓存等 - 请参阅网络 API
  4. 告诉浏览器导航到您要捕获的页面,Chrome 会将所有请求元数据流式传输给您。
  5. 将网络数据按摩成 HAR 格式,ala phantom.js
  6. ...
  7. 利润。

首先,我有一篇文章,其中包含示例 Ruby 代码,您应该从步骤 1-4 开始:http ://www.igvita.com/2012/04/09/driving-google-chrome-via-websocket -api/

于 2012-11-24T02:56:23.607 回答
2

现在有一个浏览器插件可以做到这一点:https ://github.com/devtools-html/har-export-trigger

它使用 WebExtensions DevTools API,我让它与 Firefox 和 Chrome 一起工作。

在此处查看我的 Chrome 代码:https ://github.com/theri/web-measurement-tools/blob/master/load/load_url_using_chrome.py#L175

在 Chrome 中自动安装插件比在 Firefox 中复杂一些,但可行 - 我在本地提取了插件存档,然后在 chrome_prefs.json 中链接到它(参见相同的存储库)。

于 2018-10-23T08:49:00.400 回答
0

不确定是否有帮助,HAR Recorder使用 chrome 调试协议来记录 HAR 并生成 har 文件(无需打开 devtools)。如果你想要一个变体,你可以分叉并对其进行更改。

于 2021-08-03T19:54:49.213 回答