自动化生成来自Google Chrome的HAR文件

28

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

  1. 打开一个新的选项卡;

  2. 在开发人员工具中打开网络选项卡;

  3. 加载一个URL;

  4. 选择“保存所有为HAR”。

通常,提出的解决方案涉及使用PhantomJSbrowsermob-proxypcap2har等工具;但由于我需要处理SPDY流量,所以这些方法都不适用于我的情况。

我尝试深入研究了Google Chrome扩展API,确实成功地自动化了一些任务,但对于HAR文件生成,仍然没有成功。现在这个方法特别有希望,但我仍然无法想象如何使用它。

换句话说,我需要像谷歌团队的这个实验一样的东西。请注意以下内容:

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

有什么想法吗?


解决方案

好奇的话,我最终使用了一个Node.js模块来自动化此类测试:chrome-har-capturer。这也让我有机会深入挖掘远程调试协议并编写了一个更通用的基于Node.js的Chrome自动化低级接口:chrome-remote-interface


如何使用chrome-har-capturer?你能指导一下吗? - UmeshPathak
1
README不够吗?如果您有任何疑问,请随时提交问题。 - cYrus
3个回答

14
简短回答是,没有直接获取所需数据的方式。 getHAR 方法仅适用于旨在扩展 DevTools 本身的扩展程序。好消息是,您可以自己构建 HAR 文件而不会遇到太多麻烦-这正是 what phantom.js does 所做的事情。
  1. 使用远程调试启动 Chrome
  2. 使用 WebSocket 连接到调试端口上的 Chrome
  3. 启用“网络”调试,您还可以清除缓存等-请参见 Network API
  4. 告诉浏览器导航到要捕获的页面,Chrome 将向您流式传输所有请求元数据。
  5. 将网络数据转换为 HAR 格式,就像 phantom.js 一样
  6. ...
  7. 利润。

为了快速开始,我有一篇帖子,其中包含示例Ruby代码,应该可以帮助您完成步骤1-4:http://www.igvita.com/2012/04/09/driving-google-chrome-via-websocket-api/


真有趣,一个“真正的谷歌人”回答了我的问题! :) 这些天我对你提到的主题有了一瞥,最终你为我提供了粘合剂。让我试试,很快就会带来一些反馈... - cYrus
1
我希望如此,但我只有这个ResourceTiming对象,我无法确定如何确定响应何时完全接收,没有像responseEnd这样的字段。 - cYrus
太好了,现在一切都应该没问题了。感谢你的帮助! - cYrus
非常感谢您提供的解决方案。我也在使用 "chrome-har-capturer" 进行操作。但我有一个问题 - 在一些只有控制台访问权限的服务器上是否可以执行相同的操作?我的意思是,Chrome 是否依赖于在桌面上显示浏览器,还是它也可以在控制台中工作?希望您能理解我的意思 :) - Levsha
1
对于那些只看评论的人,@cYrus在他的问题底部提到了他想出来的代码 在github上作为chrome-har-capturer - Brad Parks
显示剩余5条评论

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中链接到它(请参见相同的存储库)。

-1

不确定是否有帮助,HAR Recorder 使用 Chrome 调试协议记录 HAR 并生成 har 文件(无需打开开发者工具)。如果您想要变化,可以 fork 并对其进行更改。


在使用HAR Recorder时要小心。请仔细阅读其隐私政策,其中包含以下内容:“隐私做法HAR Recorder已披露了关于收集和使用您数据的以下信息。更详细的信息可以在开发者的隐私政策中找到。HAR Recorder收集以下信息:用户活动 例如:网络监控、点击、鼠标位置、滚动或按键记录。” - Ashutosh Jindal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接