Инструмент для консольного сетевого лога страницы

консоль
сеть
selenium
Теги: #<Tag:0x00007fedb85f3928> #<Tag:0x00007fedb85f37c0> #<Tag:0x00007fedb85f3680>

(Сергей Блохин) #1

Всем привет. Извините за кривой заголовок.
Есть страница на домене example.com/page.
На этой странице идёт запрос 100500 ресурсов (картинки, стили, скрипты) с разных мест.
С внешних источников, например, mx.yandex.ru или с внутренних, например, example.com/css/main.css.
А есть ещё тестовый сервер dev.example.com, на котором тоже есть страница dev.example.com/page.
Нужно убедиться, что на dev.example.com/page внутренние запросы идут на dev.example.com/css/main.css, а не на example.com/css/main.css, т. е., запросы ресурсов на странице должны идти в рамках своего домена.
В ручную это сделать просто. Достаточно открыть консоль разработчика в браузере, раздел Сетевые запросы.


Существуют ли инструменты, которые смогли бы тоже самое сделать в консоли (bash) или, что лучше, из кода (лучше Ruby)?
Selenium вроде такого не даёт. Он даёт только доступ к JavaScript консоли.


(Ray Romanov) #2

Может это поможет: Что такое browsermob-proxy и как заставить его работать? Туториал для начинающих. Пример использования на Python


(Сергей Блохин) #3

Большое спасибо, кажется, это именно то, что я искал.
Отдельно посмотрел, что browsermob-proxy есть и под Ruby.
Буду пробовать.


(Vitalii Grygoruk) #4

Решал похожую задачу когда-то с browsermobproxy. Потом в итоге отказались от решения в пользу phantomjs. В phantomjs есть отличная фича - http://phantomjs.org/network-monitoring.html (в случае с Ruby - легко все заводится в связке Capybara + Poltergeist). Прийдется написать немного Javascript кода - но решенее будет работать шустрее, стабильнее и не будет требовать дополнительно-запущенного процеса browsermobproxy сервера


(Сергей Кузьмин) #5

в хроме можно тоже сделать вот что:

var ua = window.navigator.userAgent;
if (ua.match(/PhantomJS/)) {
    return [{}];
} else {
    var performance =
        window.performance ||
        window.mozPerformance ||
        window.msPerformance ||
        window.webkitPerformance || {};
    if (ua.match(/Chrome/)) {
        var network = performance.getEntries() || {};
        return network;
    } else {
        var timings = performance.timing || {};
        return [timings];
    }
}

см. https://github.com/sergueik/chrome_page_performance_sqlite