通过命令行工具生成给定 URL 的 HAR 文件的详细步骤

6
有没有人能告诉我如何在Linux命令行中通过给定的URL生成一个har文件?非常感谢你提供详细的工具和指南。
谢谢。
3个回答

7

你可以使用phantomjs来完成这项工作。

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

或者查看BrowserMob Proxy

3

我曾使用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

+1 因 PhantomJs 不是非常可靠,它很适合用于非关键任务,但在标记丑陋的网站上往往会崩溃。 - siliconrockstar

2
Phantomjs的har文件是资产列表的简略版。换句话说,当您使用Chrome或其他浏览器访问网页时,文件会在几秒钟内加载。但是,phantomjs在所有资产都有时间加载之前,对该网站进行了瞬间快照。它还排除了数据和图像文件(因为它们不是har规范的一部分)。您可以通过修改netsniff.js示例文件来解决此问题。我已经分叉了该项目,并在下面的链接中进行了这些修改。请注意,我将计时器设置为等待20秒才生成har。我还添加了一些错误处理以忽略js错误。如果phantomjs遇到错误,则添加错误处理部分以处理创建无效har文件的问题。(我还注释掉了排除数据/图像文件的功能)因此,这可能不完全符合您的要求。但这是您或任何想要使用phantomjs的人的起点。在做出这些更改后,我的资产文件从始终获得四个增加到约25个。

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


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