Я пытаюсь создать сценарий, который прослушивает порт удаленной отладки для нескольких экземпляров chrome. До сих пор я смог создать соединение через веб-сокет и включить трассировку сети. Пока я просто регистрирую ответ в терминале, но моя цель - записать весь сеанс (т. Е. Всю сетевую активность за время выполнения браузера) и сгенерировать файл HAR.
Сначала я получаю список открытых страниц в браузере. Это дает объект JSON, который имеет массив для всех типов ресурсов (page, iframe и т. Д. c.). После этого я отфильтровываю результаты по типу страницы и подключаюсь к webSocketDebuggerUrl
.
Фрагмент, показывающий соединение:
const conn = new Ws(page.webSocketDebuggerUrl);
conn.on('open', () => {
conn.send(JSON.stringify({
id: 1,
method: 'Network.enable'
}));
});
conn.on('error', (code, reason) => wsError(code, reason));
connections.push(conn);
Этот фрагмент открывает соединение и возвращает массив соединений веб-сокетов в процесс обработки. Как только соединения возвращаются, я просто добавляю обработчик для события сообщения:
for(const conn of connections) {
conn.on('message', (msg) => console.log(JSON.parse(msg)));
}
Это работает, как и ожидалось, и я вижу кучу объектов, печатаемых на терминале. С этого момента я в растерянности. Моя цель проста:
- Для каждого запроса я хочу измерить время между запросом и ответом
- Для каждого запроса я хочу измерить размер передачи данных (в байтах) между запрос и соответствующий ответ.
Глядя на ответ, я вижу, что есть объекты с такими методами, как Network.dataReceived
и Network.loadingFinished
et c.,. Существует также уникальный идентификатор для каждого из этих объектов. Исходя из этого, как мне установить необходимый код для выполнения действий 1 и 2?