Разбор сетевых данных в файлы HAR - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь создать сценарий, который прослушивает порт удаленной отладки для нескольких экземпляров 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)));
}

Это работает, как и ожидалось, и я вижу кучу объектов, печатаемых на терминале. С этого момента я в растерянности. Моя цель проста:

  1. Для каждого запроса я хочу измерить время между запросом и ответом
  2. Для каждого запроса я хочу измерить размер передачи данных (в байтах) между запрос и соответствующий ответ.

Глядя на ответ, я вижу, что есть объекты с такими методами, как Network.dataReceived и Network.loadingFinished et c.,. Существует также уникальный идентификатор для каждого из этих объектов. Исходя из этого, как мне установить необходимый код для выполнения действий 1 и 2?

...