从 Google Chrome 自动生成 HAR 文件

2024-03-13

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

  1. 打开一个新选项卡;

  2. 打开开发者工具中的网络选项卡;

  3. 加载一个 URL;

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

通常,建议的解决方案涉及使用PhantomJS http://phantomjs.org/, browsermob代理 http://opensource.webmetrics.com/browsermob-proxy/, or pcap2har https://github.com/andrewf/pcap2har;这些不适合我的情况,因为我需要与SPDY http://dev.chromium.org/spdy交通。

我尝试深入谷歌浏览器扩展 API http://developer.chrome.com/stable/extensions/api_index.html事实上,我成功地自动化了一些任务,但在 HAR 文件生成方面仍然没有运气。现在这个方法 http://developer.chrome.com/stable/extensions/devtools.network.html#method-getHAR特别有前途,但我仍然不知道如何使用它。

换句话说,我需要类似的东西这个实验 https://developers.google.com/speed/articles/spdy-for-mobile from 谷歌人。请注意以下事项:

我们使用的是 Chrome 的远程调试接口 https://developers.google.com/chrome-developer-tools/docs/remote-debugging使用自定义客户端启动手机上的浏览器,清除其缓存和其他状态,启动网页加载,并接收 Chrome 开发人员工具消息以确定页面加载时间和其他性能指标。

有任何想法吗?


Solution

出于好奇,我最终得到了一个 Node.js 模块,可以自动执行此类测试:chrome-har-捕获器 https://github.com/cyrus-and/chrome-har-capturer。这也让我有机会深入挖掘远程调试协议 https://developer.chrome.com/devtools/docs/protocol/1.1/index并为通用 Chrome 自动化编写一个较低级别的 Node.js 接口:chrome 远程接口 https://github.com/cyrus-and/chrome-remote-interface.


简而言之,没有办法直接获取您想要的数据。这getHAR方法仅适用于旨在扩展 DevTools 本身的扩展。好消息是,您可以自己构建 HAR 文件,而不需要太多麻烦 - 这正是phantom.js 是做什么的 https://github.com/ariya/phantomjs/blob/master/examples/netsniff.js.

  1. 启动 Chrome 并进行远程调试
  2. 使用 websocket 连接在调试端口上连接到 Chrome
  3. 启用“网络”调试,还可以清除缓存等 - 请参阅网络API https://developers.google.com/chrome-developer-tools/docs/protocol/1.0/network.
  4. 让浏览器导航到您想要捕获的页面,Chrome 会将所有请求元数据流式传输回给您。
  5. 将网络数据按摩成HAR格式,ala phantom.js
  6. ...
  7. Profit.

作为一个良好的开端,我有一篇文章,其中包含示例 Ruby 代码,您可以从步骤 1-4 开始:http://www.igvita.com/2012/04/09/drive-google-chrome-via-websocket-api/ http://www.igvita.com/2012/04/09/driving-google-chrome-via-websocket-api/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Google Chrome 自动生成 HAR 文件 的相关文章

随机推荐