2012-05-16 2 views
5

Может ли кто-нибудь посоветовать, как сгенерировать файл har из заданного url через командную строку в linux? Подробные инструменты, используемые и руководящие принципы, высоко ценятся.Подробную процедуру для создания файла har из заданного url с помощью инструмента командной строки

Благодаря

ответ

2

Я работал с PhantomJS для получения хар файлы, но они не очень надежны, в отличие от файлов HAR порожденных реальных браузерах, таких как Chrome, Firefox. Использование селена и BrowsermobProxy, вы можете создать хары файлы непосредственно из браузеров с питона сценарием, такими, как это:

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

Если вы ищете инструмент командной строки, которая headlessly генерирует HAR и данные о производительности с Chrome и Firefox, имеет посмотрите на Speedprofile.

+0

+1 для PhantomJs не будучи супер надежен, он отлично подходит для не-миссия-критического материала, но имеет тенденцию к сбою на сайтах с уродливой разметкой. – siliconrockstar

1

Файлы harant Phantomjs являются сокращенным списком активов. Другими словами, при посещении веб-страницы с Chrome или другим браузером файлы загружаются в течение нескольких секунд.

Но phantomjs берет мгновенный снимок этого веб-сайта, прежде чем все активы успеют загрузить.

Это также исключает файлы данных и изображений (потому что они не являются частью спецификации хар)

Вы можете обойти эту проблему путем изменения netsniff.js пример файла.

Я разветвил этот проект и внесли эти изменения по ссылке ниже. Обратите внимание, что я установил таймер на 20 секунд, прежде чем генерировать га. Я также добавил немного обработки ошибок, чтобы игнорировать ошибки js. Бит обработки ошибок был добавлен для работы с phantomjs, создающими недопустимые файлы har, если он столкнулся с ошибкой. (Я также прокомментировал функцию, которая исключает файлы данных/изображений)

Так что это может быть не совсем то, что вы хотите. Но это отправная точка для вас или любого другого, кто хочет использовать phantomjs.

После этих изменений, я пошел из последовательно получать четыре файла активов около 25.

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