У вас просят 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-файл: его можно скачать и открыть в инструментах разработчика, так что тот, кто возьмёт отчёт в работу, получает тот же самый файл, о котором иначе пришлось бы просить. Чего оно не делает - так это не решает за вас, что скрыть: предупреждение выше по-прежнему касается всего, что вы передаёте.

Про всё, что идёт вокруг файла - что вы ожидали, что произошло и о какой сборке речь, - есть руководство по баг-репортам с шаблоном.