我熟悉如何使用Google Chrome网络检查器手动将网页另存为包含内容的HAR文件。我想自动化这个。
在我搜索自动生成HAR文件的工具时,我找到了一些解决方案,但没有一个能够保存资源的内容。
我试过以下没有运气:
获取您请求的页面内容(原始HTML)是可行的,但获取加载的所有其他网络资源(CSS,javascript,图像等)的内容是我的问题所在。
答案 0 :(得分:5)
我认为自动生成HAR的最可靠方法是使用BrowsermobProxy以及chromedriver和Selenium。
这是python中的一个脚本,以编程方式生成可以在开发周期中集成的HAR文件。它还捕获内容。
from browsermobproxy import Server
from selenium import webdriver
import os
import json
import urlparse
server = Server("path/to/browsermob-proxy")
server.start()
proxy = server.create_proxy()
chromedriver = "path/to/chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
url = urlparse.urlparse (proxy.proxy).path
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--proxy-server={0}".format(url))
driver = webdriver.Chrome(chromedriver,chrome_options =chrome_options)
proxy.new_har("http://stackoverflow.com", options={'captureHeaders': True,'captureContent':True})
driver.get("http://stackoverflow.com")
result = json.dumps(proxy.har, ensure_ascii=False)
print result
proxy.stop()
driver.quit()
您还可以通过此工具结帐,从Chrome和Firefox无头地生成HAR和NavigationTiming数据:Speedprofile
答案 1 :(得分:2)
您可以查看phantomjs,看起来它导出为HAR http://phantomjs.org/network-monitoring.html
答案 2 :(得分:1)
您可以使用http代理保存内容。在Windows上,您可以使用免费的fiddler。在Mac和Linux上,您可以使用Charles Proxy,但它不是免费的。
这是来自Fiddler的屏幕截图,您可以选择保存请求,包括标题。