2012-05-16 13 views

risposta

5

È possibile utilizzare phantomjs per questo lavoro.

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

o dare un'occhiata al BrowserMob Proxy

2

ho lavorato con PhantomJS per produrre file HAR ma non sono veramente affidabile in contrasto con i file HAR generati dai browser attuali come Chrome, Firefox. Utilizzando selenio e BrowsermobProxy, è possibile generare file HAR direttamente da browser con uno script Python come ad esempio questo:

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() 

Se siete alla ricerca di uno strumento a riga di comando che genera headlessly dati relativi alle prestazioni con Chrome e Firefox HAR e, hanno uno sguardo a Speedprofile.

+0

+1 per PhantomJs non essere super affidabile, è grande per le cose non mission-critical, ma tende a bloccarsi su siti con brutto markup. – siliconrockstar

1

I file har di Phantomjs sono un elenco abbreviato di risorse. In altre parole, quando visiti una pagina Web con Chrome o un altro browser, i file vengono caricati su un periodo di pochi secondi.

Ma phantomjs acquisisce un'istantanea istantanea di quel sito Web, prima che tutte le risorse abbiano avuto il tempo di caricarsi.

esclude anche i file di dati e di immagini (perché non sono parte della specifica har)

È possibile aggirare questo modificando il file di esempio netsniff.js.

Ho biforcato quel progetto e ho apportato quelle modifiche al link sottostante. Tieni presente che ho impostato il timer per attendere 20 secondi prima di generare il har. Ho anche aggiunto un po 'di gestione degli errori per ignorare gli errori js. Il bit di gestione degli errori è stato aggiunto per gestire phantomjs creando file har non validi se ha riscontrato un errore. (Ho anche commentato la funzione che esclude i file di dati/immagine)

Quindi questo potrebbe non essere esattamente quello che vuoi. Ma è un punto di partenza per te o per chiunque altro voglia usare i phantomjs.

Dopo queste modifiche, sono andato da ottenere costantemente quattro file di risorse fino a circa 25.

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

Problemi correlati