2

我熟悉如何使用Google Chrome瀏覽器檢測器將網頁手動保存爲HAR文件與內容。我想自動執行此操作。自動化「另存爲HAR與內容」

在我搜索HAR文件自動生成工具的過程中,我發現了一些解決方案,但都沒有保存資源的內容。

我都試過,沒有任何運氣如下:

獲取您請求的頁面(原始HTML)的內容是可行的,但得到的內容加載的所有其他網絡資源(CSS,JavaScript,圖像等)是我的問題所在。

+0

你找到一個方法來做到這一點? – Monodeep

+0

@Monodeep我從來沒有找到這個解決方案 – Teddy

+0

感謝您的答覆。我找到了一個解決方案,我正在成功使用它。它使用Selenium,Firebug和NetExport(Firefox擴展)。如果你仍然需要它,我可以在這裏發佈代碼(我已經用python寫過了) – Monodeep

回答

1

您可以使用HTTP代理服務器來保存內容。在Windows上,您可以使用免費的fiddler。在Mac和Linux上,您可以使用Charles Proxy,但它不是免費的。

這是來自Fiddler的截圖,您可以選擇將請求保存在所有的榮耀中,包括標題。

enter image description here

5

我認爲最可靠的方法來自動HAR與chromedriver和硒一起使用BrowsermobProxy產生。

這裏是一個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() 

您還可以檢出該工具從器和Firefox headlessly產生HAR和NavigationTiming數據:Speedprofile

+0

謝謝!沒有機會測試這個,但它看起來很有希望。 – Teddy

+0

我觀察到使用代理會導致比平常更多的時間。有沒有一種解決方法可以讓HAR獲得正確的計時,因爲他們通常不使用代理? – vishalg

+0

以上似乎不適用於無頭鍍鉻。所以,如果我提供chrome_options.add_argument(「 - 無頭」),生成的json不包含所有的HTTP請求。 –