Автоматизация создания файлов HAR из Google Chrome
В основном то, что мне нужно, - это способ автоматизировать результат следующих операций:
Часто предлагаемые решения включают использование PhantomJS, browsermob-proxy или pcap2har; те не подходят мне, потому что мне нужно работать с трафиком SPDY.
Я попытался погрузиться в API расширений Google Chrome и мне удалось автоматизировать некоторые задачи, но до сих пор не повезло, что касается создания файлов HAR. Теперь этот метод является особенно перспективным, но я все еще не могу понять, как использовать его.
Другими словами, мне нужно что-то вроде этого эксперимента от ребят Google. Обратите внимание на следующее:
Мы использовали Chrome удаленный интерфейс отладки с пользовательским клиентом, который запускает браузер на телефоне, очищает его кеш и другое состояние, инициирует загрузку веб-страницы и получает сообщения разработчика Chrome для определения времени загрузки страницы и других показателей производительности.
Любые идеи?
Решение
Для любопытных я закончил с Node.js модулем, который автоматизирует такие тесты: chrome-har-capturer. Это также дало мне возможность углубиться в Протокол удаленной отладки и написать нижний уровень Node.js для универсальной автоматизации Chrome: chrome-remote-interface.
Ответы
Ответ 1
Короткий ответ заключается в том, что вы не можете получить данные, находящиеся непосредственно перед вами. Метод getHAR
применим только к расширениям, предназначенным для расширения DevTools. Хорошей новостью является то, что вы можете сами создать файл HAR без особых проблем - это именно что phantom.js делает.
- Запустите Chrome с удаленной отладкой
- Подключиться к Chrome на порту отладки с помощью подключения к веб-узлу
- Включить отладку "Сеть", вы также можете очистить кеш и т.д. - см. Сетевой API.
- Скажите браузеру перейти к странице, которую вы хотите захватить, и Chrome передаст вам все метаданные запроса.
- Массируйте сетевые данные в формате HAR, ala phantom.js
- ...
- Profit.
Для начала, у меня есть сообщение, что с образцом кода Ruby, который вам следует начать с шагов 1-4: http://www.igvita.com/2012/04/09/driving-google-chrome-via-websocket-api/