【问题标题】:Automatize HAR files generation from Google Chrome从 Google Chrome 自动生成 HAR 文件
【发布时间】:2012-11-12 07:37:06
【问题描述】:

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

  1. 打开一个新标签;

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

  3. 加载一个 URL;

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

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

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

换句话说,我需要类似this experiment 的东西,来自Google 的人。请注意以下几点:

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

有什么想法吗?


解决方案

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

【问题讨论】:

  • 如何使用 chrome-har-capturer ?能指导一下吗?
  • README 还不够吗?如果您有任何疑问,请随时提出问题。

标签: google-chrome automation spdy har


【解决方案1】:

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

  1. 使用远程调试启动 Chrome
  2. 使用 websocket 连接在调试端口上连接到 Chrome
  3. 启用“网络”调试,还可以清除缓存等 - 见Network 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/

【讨论】:

  • 一个真正的谷歌人回答了我的问题,这很有趣! :) 这些天我瞥见了你提到的话题,最后你给了我胶水。让我试试吧,我很快就会回来提供一些反馈......
  • 好的,这绝对是要走的路。现在我有一个 nodejs 脚本,它启动 Chrome,启动 tcpdump,打开一个 WebSocket,做一些设置,加载一个 URL,最后转储 HAR 文件......我按照你提供的 PhantomJS 的例子,HAR 规范和网络 API,但仍然有一些我没有得到的时间安排,特别是:我如何填写timings.receive 字段?据我了解:请求从requestTime 开始;从服务器等待从 requestTime + sendEnd 开始并在 Network.responseReceived (timestamp) 结束,这是正确的吗?
  • 或者整个回复可能是在Network.responseReceived (timestamp) 收到的?
  • responseReceived 应包含其中的所有计时数据(作为 NavTiming 的一部分)。您绝对不想自己计算这些时间。
  • 我希望如此,但我只有这个 ResourceTiming 对象,我不知道如何确定何时完全收到响应,没有像 responseEnd 这样的字段。
【解决方案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 中链接到它(参见相同的存储库)。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2015-11-22
      • 2018-06-16
      • 2012-05-20
      • 2012-05-17
      • 2015-01-02
      • 2018-05-05
      • 2021-04-17
      • 2017-06-15
      • 2013-03-04
      相关资源
      最近更新 更多