基本上,我需要的是一种方法,使自动化以下操作的结果 :
打开一个新标签;
打开开发工具网络选项卡;
加载URL;
选择“保存所有为HAR”。
通常情况下,提出的解决方案涉及使用PhantomJS , browsermob代理 ,或pcap2har ; 因为我需要使用的那些不适合我的情况SPDY流量。
我试图潜入谷歌Chrome扩展API ,事实上我设法使自动化某些任务,但仍没有运气什么涉及HAR文件的产生。 现在, 这种方法是特别有希望的,但我仍然无法弄清楚如何我会使用它。
换句话说,我需要像这个实验 从谷歌的家伙 。 请注意以下几点:
我们使用了Chrome浏览器的远程调试接口与手机上启动浏览器中的自定义客户端,清除其高速缓存和其他国家,将启动一个网页负载和接收Chrome开发人员工具的信息来确定页面加载时间和其他性能指标。
有任何想法吗?
解
对于好奇,我结束了,它可以自动此类测试一个Node.js的模块: 铬HAR-的捕捉 。 这也给了我机会,深入挖掘远程调试协议 ,并编写通用的Chrome自动化水平较低,Node.js的接口: 铬远程接口 。
简短的答案是,有没有办法让你直接后的数据。 该getHAR
方法只适用于扩展意味着延长DevTools本身。 好消息是,你可以构建HAR文件,自己没有太多的麻烦-这正是什么phantom.js做 。
- 远程调试Chrome启动
- 连接到Chrome浏览器的调试端口与WebSocket连接
- 启用“网络”调试,还可以清除缓存,等等-见网络API 。
- 告诉浏览器导航到你想要捕捉的网页,和Chrome将传输所有请求的元数据还给你。
- 按摩网络数据转换成HAR格式,阿拉phantom.js
- ...
- 利润。
对于一个良好的开端,我有一个职位,与你应该开始使用步骤样本Ruby代码1-4: http://www.igvita.com/2012/04/09/driving-google-chrome-via-websocket -API /
现在有插件做一个浏览器: 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(见同一个版本库)。