通过命令行工具从给定 url 生成 har 文件的详细过程

Posted

技术标签:

【中文标题】通过命令行工具从给定 url 生成 har 文件的详细过程【英文标题】:Detail procedure to generate a har file from a given url via command line tool 【发布时间】:2012-05-23 15:33:29 【问题描述】:

有人可以建议如何通过 linux 中的命令行从给定的 url 生成 har 文件吗?非常感谢使用的详细工具和指南。

谢谢

【问题讨论】:

【参考方案1】:

您可以使用phantomjs 进行这项工作。

phantomjs examples/netsniff.js "some_url" > out.har 

或查看BrowserMob Proxy

【讨论】:

【参考方案2】:

我曾使用 PhantomJS 生成 HAR 文件,但与 Chrome、Firefox 等实际浏览器生成的 HAR 文件相比,它们并不可靠。使用 selenium 和 BrowsermobProxy,您可以使用 Python 脚本直接从浏览器生成 HAR 文件,例如:

from browsermobproxy import Server
from selenium import webdriver
import json

server = Server("path/to/browsermob-proxy")
server.start()
proxy = server.create_proxy()
profile = webdriver.FirefoxProfile()
profile.set_proxy(self.proxy.selenium_proxy())
driver = webdriver.Firefox(firefox_profile=profile)
proxy.new_har("http://***.com", options='captureHeaders': True)
driver.get("http://***.com")    
result = json.dumps(proxy.har, ensure_ascii=False)
print result
proxy.stop()    
driver.quit()

如果您正在寻找可以使用 Chrome 和 Firefox 无头生成 HAR 和性能数据的命令行工具,请查看 Speedprofile。

【讨论】:

+1 表示 PhantomJs 不是超级可靠,它非常适合非关键任务但往往会在标记难看的网站上崩溃。【参考方案3】:

Phantomjs 的 har 文件是资产的缩写列表。换句话说,当您使用 Chrome 或其他浏览器访问网页时,文件会在几秒钟内加载。

但 phantomjs 会在所有资产有时间加载之前拍摄该网站的即时快照。

它还排除了数据和图像文件(因为它们不是 har 规范的一部分)

您可以通过修改 netsniff.js 示例文件来解决此问题。

我已经分叉了该项目并在下面的链接中进行了这些修改。请注意,我已将计时器设置为在生成 har 之前等待 20 秒。我还添加了一些错误处理来忽略 js 错误。添加了错误处理位以处理 phantomjs 在遇到错误时创建无效的 har 文件。 (我还注释掉了排除数据/图像文件的功能)

所以这可能不是你想要的。但对于您或其他任何希望使用 phantomjs 的人来说,这是一个起点。

在进行这些更改后,我从持续获得四个资产文件增加到大约 25 个。

https://github.com/associatedpress/phantomjs/blob/netsniff-timer/examples/netsniff.js

【讨论】:

以上是关于通过命令行工具从给定 url 生成 har 文件的详细过程的主要内容,如果未能解决你的问题,请参考以下文章

HAR 解析器和报告工具

如何从 HTML 文件生成 HAR 文件?

有没有办法自动生成har文件? [关闭]

httprunner学习2-har2case录制生成脚本

如何访问 JSON 格式的 .har 文件的数据?

如何利用Kali linux系统生成字典文件