
У вас просят HAR-файл. Обычно это поддержка или разработчик, который разбирает заведённую вами ошибку, и почти всегда просьба приходит с инструкцией, которая исходит из того, что вы и так знаете, о чём речь.
HAR-файл - это запись всех запросов, которые браузер сделал, пока вы что-то делали, сохранённая одним файлом. HAR означает HTTP Archive. Это обычный JSON-файл, перечисляющий каждый запрос страницы, что пришло в ответ, сколько занял каждый и в каком порядке: вкладка “Сеть” в инструментах разработчика вашего браузера, записанная и переданная другому.
Что внутри
По каждому запросу, который страница сделала во время записи:
- Запрос: метод, полный URL, заголовки, строка запроса и тело, если оно было
- Ответ: код состояния, заголовки, тип содержимого, размер и часто тело
- Тайминги: сколько запрос ждал, подключался, отправлялся и ждал первого байта
- Когда это произошло, так что порядок и промежутки между запросами сохраняются
Именно последнее делает HAR полезнее скриншота вкладки “Сеть”. Скриншот показывает список; по HAR можно проиграть последовательность и увидеть, что обновление токена ушло уже после запроса, которому этот токен был нужен.
Когда его просят
Почти всегда потому, что проблема не видна снаружи и воспроизводится именно у вас.
- Страница грузится у вас и не грузится у них, или наоборот
- Что-то падает молча, и интерфейс об этом не говорит ни слова
- Запрос медленный, и никто не может сказать, дело в сети, в сервере или в браузере
- Интеграция возвращает ошибку только в продакшене и только для одного аккаунта
Во всех этих случаях ответ обычно умещается в одну строку файла, в который никто не заглянул: 403 там, где ждали 200, запрос, который так и не ушёл, петля редиректов, ошибка CORS, которую страница проглотила.
Как его записать
Chrome или Edge. Откройте инструменты разработчика клавишей F12 или сочетанием Cmd + Option + I на Mac. Перейдите на вкладку Network. Поставьте галочку Preserve log, чтобы редирект не стёр то, что вы уже записали. Воспроизведите проблему. Затем щёлкните правой кнопкой по любой строке списка и выберите Save all as HAR with content.
Firefox. Инструменты разработчика, вкладка “Сеть”, воспроизведите, затем правая кнопка по строке и Сохранить всё как HAR.
Safari. Включите меню “Разработка” в настройках, затем Разработка, Показать веб-инспектор, Сеть и экспорт.
Две вещи упускают чаще всего. Начинайте запись до того, что собираетесь показать, потому что вкладка “Сеть” хранит только то, что видела. И воспроизведите проблему один раз и остановитесь: HAR с одиннадцатью минутами кликов - это файл, который никто не станет читать.
Как прочитать его без отдельного инструмента
Быстрее всего открыть файл в сетевой вкладке браузера: перетащите HAR на панель Network, и он загрузится так, будто вы записали его сами, с сортировкой и фильтрами.
На что смотреть, примерно в таком порядке:
- Не с этого
- Пролистывать весь список в поисках чего-нибудь, что выглядит не так
- Сначала это
- Отфильтровать статусы от 400 и выше, потом самые медленные запросы, потом посмотреть, что произошло непосредственно перед сбоем
HAR - это JSON, так что с ним работает и jq:
jq '.log.entries[] | select(.response.status >= 400) |
{url: .request.url, status: .response.status}' capture.har выдаст вам все неудачные запросы одной
строкой.
В HAR попадают только запросы, которые сделал браузер. Чтобы посмотреть на запрос, который отправляет ваш собственный код, направьте его на тестовый эндпоинт для вебхуков: он выдаёт URL и показывает метод, заголовки, строку запроса и тело всего, что туда приходит.
То, о чём никто не предупреждает
В HAR-файле обычно лежат учётные данные. Это самое важное, что о нём нужно знать, и инструкции, которые вам присылают, об этом почти никогда не говорят.
Сохранённый вместе с содержимым, HAR несёт в себе все заголовки запросов, то есть сессионные куки и токены авторизации, и все тела ответов, в которых могут быть персональные данные того, кто был залогинен. Тот, у кого есть файл, часто может действовать от имени этого пользователя, пока токены не истекут.
Поэтому:
- Относитесь к HAR как к паролю. Не вставляйте его в публичный баг-трекер, в общий канал или в переписку, которую кому-нибудь перешлют.
- По возможности вычищайте его перед передачей. Некоторые инструменты вырезают куки и заголовки авторизации; иначе откройте JSON и удалите их вручную.
- Записывайте в приватном окне под тестовым аккаунтом, если проблема это позволяет: так реальные данные клиентов вообще не попадут в файл.
- Удалите его после. Это улика для одного разбирательства, а не документ.
Если HAR просите вы, напишите всё это в самой просьбе. Большинству тех, кто присылает файл со своим действующим сессионным токеном, никто никогда не говорил, что так делать не стоит.
Как получить его без инструкции
Всё написанное выше - это четыре абзаца инструкций для человека, который просто хочет сообщить, что страница сломана, и именно поэтому HAR-файлы так часто не доходят вовсе.
Session Replay
Бесплатное расширение для Chrome. Один клик на странице, которая ведёт себя не так, захватывает скриншот, консоль и сетевой журнал и отдаёт вам ссылку, которую можно вставить в задачу.
Сетевой журнал, который оно записывает, включает HAR-файл: его можно скачать и открыть в инструментах разработчика, так что тот, кто возьмёт отчёт в работу, получает тот же самый файл, о котором иначе пришлось бы просить. Чего оно не делает - так это не решает за вас, что скрыть: предупреждение выше по-прежнему касается всего, что вы передаёте.
Про всё, что идёт вокруг файла - что вы ожидали, что произошло и о какой сборке речь, - есть руководство по баг-репортам с шаблоном.