2012-05-16 16 views

Odpowiedz

2

Ja pracowałem z PhantomJS do produkują plików HAR ale nie są one naprawdę niezawodny w przeciwieństwie do plików HAR generowanych przez rzeczywistych przeglądarek takich jak Chrome, Firefox. Korzystanie selen i BrowsermobProxy można generować pliki HAR bezpośrednio z przeglądarek z skrypt Pythona, takich jak ten:

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

Jeśli szukasz narzędziem wiersza poleceń, które headlessly generuje Har i dane dotyczące wydajności z Chrome i Firefox mają spójrz na Speedprofile.

+0

+1 dla PhantomJs nie będących bardzo niezawodny, to jest dobre dla non-krytycznych rzeczy, ale ma tendencję do awarii na stronach z brzydkimi znacznikami. – siliconrockstar

1

Pliki har phantomjs są skróconą listą zasobów. Innymi słowy, gdy odwiedzasz stronę internetową w przeglądarce Chrome lub innej przeglądarce, pliki ładują się przez kilka sekund.

Ale phantomjs wykonuje natychmiastową migawkę tej strony, zanim wszystkie zasoby miały czas załadować.

wyklucza on również pliki danych i obrazu (ponieważ nie są one częścią specyfikacji har)

Można to obejść modyfikując netsniff.js przykładowy plik.

Rozwinąłem ten projekt i wprowadziłem te modyfikacje pod poniższym linkiem. Zwróć uwagę, że ustawiłem czas oczekiwania na 20 sekund przed wygenerowaniem har. Dodałem także trochę obsługi błędów, aby zignorować błędy js. Bit obsługi błędów został dodany do obsługi phantomjs tworzenia nieprawidłowych plików har, jeśli napotkał błąd. (Też skomentowałem funkcję, która wyklucza pliki danych/obrazów)

Może to nie być dokładnie to, czego potrzebujesz. Ale jest to punkt wyjścia dla ciebie lub kogokolwiek, kto chce korzystać z phantomjs.

Po tych zmianach, poszedłem z konsekwentnie coraz cztery pliki aktywów do około 25.

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