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

时间:2012-05-16 05:04:12

标签: har

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

由于

3 个答案:

答案 0 :(得分:5)

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

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

或查看BrowserMob Proxy

答案 1 :(得分: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://stackoverflow.com", options={'captureHeaders': True})
driver.get("http://stackoverflow.com")    
result = json.dumps(proxy.har, ensure_ascii=False)
print result
proxy.stop()    
driver.quit()

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

答案 2 :(得分:1)

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

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

它还排除了数据和图像文件(因为它们不属于har spec的一部分)

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

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

所以这可能不是你想要的。但对于您或任何想要使用幻影的人来说,它都是一个起点。

在这些变化之后,我从持续获得四个资产文件到大约25个。

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