Автоматизация создания файлов HAR из Google Chrome

В основном то, что мне нужно, - это способ автоматизировать результат следующих операций:

  • откройте новую вкладку

  • откройте вкладку "Сеть" в инструментах разработчика;

  • загрузить URL-адрес;

  • выберите "Сохранить все как HAR".

Часто предлагаемые решения включают использование 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/