HAR-файл: что это, как записать и открыть
Коротко: HAR-файл (HTTP Archive, расширение .har) хранит в формате JSON журнал всего, что страница отправляла на сервер и получала в ответ: адреса, заголовки, тела запросов и ответов, коды и время. Записывают его в инструментах разработчика браузера: F12, вкладка «Сеть», галочка «Сохранить журнал», воспроизвести ошибку, затем «Экспортировать HAR-файл».
Что такое HAR-файл и зачем его просит поддержка#
Чаще всего HAR просит техподдержка: «Пришлите HAR, посмотрим». По файлу видно, какой именно запрос упал, с каким кодом и за сколько миллисекунд, и ничего не нужно объяснять словами. Но в том же файле могут оказаться ваши cookie и токены, поэтому перед отправкой его стоит проверить.
Снимков экрана и видео в HAR нет: в него попадают только сетевые запросы одной вкладки, сделанные, пока были открыты инструменты разработчика. Поддержка иногда называет его «сетевым логом» или «логом из вкладки Network», это тот же файл.
Как записать HAR-файл в Chrome и Яндекс Браузере#
Яндекс Браузер, Edge, Opera и другие браузеры на движке Chromium используют те же инструменты разработчика, что Chrome. Названия пунктов ниже взяты из русской версии.
- Откройте страницу, где воспроизводится проблема.
- Нажмите F12 или Ctrl+Shift+I (на Mac Cmd+Option+I) и перейдите на вкладку «Сеть». На ноутбуке F12 может сработать только вместе с Fn. Если клавиши не помогают, откройте меню браузера: в Chrome ⋮ → «Дополнительные инструменты» → «Инструменты разработчика», в Яндекс Браузере ☰ → «Дополнительно» → «Дополнительные инструменты» → «Инструменты разработчика».
- Поставьте галочку «Сохранить журнал». Без неё журнал очищается при каждом переходе на другую страницу, и запрос с ошибкой может пропасть до того, как вы его сохраните. Галочка «Отключить кеш» тоже не помешает: браузер заново загрузит всё, вместо того чтобы брать часть из кеша.
- Обновите страницу и повторите действие, которое ломается: нажмите кнопку, отправьте форму, войдите в аккаунт.
- Нажмите кнопку со стрелкой вниз на панели «Сети» (подсказка у неё «Экспортировать HAR-файл (очищенный)…») и сохраните файл.
Не держите запись включённой дольше нужного: как только ошибка повторилась, сохраняйте журнал. В коротком журнале поддержке проще найти нужный запрос, и посторонних данных в нём меньше.
Firefox и Safari#
Firefox. F12, вкладка «Сеть». Чтобы журнал не очищался при переходах, включите «Непрерывные логи» в меню с шестерёнкой справа на панели. Повторите проблему, нажмите правой кнопкой на любой запрос и выберите «Сохранить всё как HAR».
Safari. Сначала включите инструменты разработчика: «Настройки» → «Дополнения» → функции для веб-разработчиков. Затем Option+Cmd+I, вкладка «Сеть», и кнопка экспорта на её панели сохранит журнал в HAR.
Очищенный HAR или с конфиденциальными данными#
Начиная с версии 130, вышедшей осенью 2024 года, Chrome по умолчанию сохраняет очищенный HAR: без заголовков Cookie, Set-Cookie и Authorization. Чтобы получить файл с ними, в настройках инструментов разработчика (шестерёнка, раздел «Сеть») нужно включить «Разрешить создание HAR-файлов с конфиденциальными данными». Тогда кнопка экспорта превратится в меню из двух пунктов: очищенный файл и файл с конфиденциальными данными.
Но секреты остаются и в очищенном HAR: Chrome убирает только три заголовка, а всё остальное не трогает.
Firefox и Safari такой очистки не делают: их HAR содержит всё как есть.
Осенью 2023 года злоумышленник проник в систему обращений Okta и забрал из приложенных к тикетам HAR-файлов токены сессий (разбор Okta). С их помощью он атаковал клиентов Okta, в том числе Cloudflare, 1Password и BeyondTrust (разбор Cloudflare).
Когда поддержке нужен файл с cookie, например чтобы разобраться с проблемой входа, отправляйте его только по защищённому каналу, о котором договорились, а не в общий чат.
Как проверить и отправить HAR-файл#
HAR-файл текстовый, внутри JSON. Откройте его в любом редакторе кода и поищите:
Authorization,Cookie,Set-Cookie;token,access_token,refresh_token,api_key,apikey,secret,password,session;Bearerи строки, которые начинаются наeyJ: так выглядит начало JWT-токена;- свой email и номер телефона.
Найденные значения замените на XXX, не трогая кавычки и запятые вокруг, иначе файл перестанет открываться. Если ошибка воспроизводится и без входа в аккаунт, проще записать журнал заново и не вводить пароль во время записи.
Файл сохраняется туда, куда вы указали при экспорте, обычно в «Загрузки», с расширением .har. Прикладывайте его к обращению файлом, а не вставляйте содержимое в чат. Если он не проходит по размеру вложения, упакуйте его в ZIP: внутри текст, и архив выходит заметно меньше.
После того как файл отправлен, выйдите из аккаунта на этом сайте и войдите снова. На большинстве сервисов выход закрывает сессию, и cookie из файла перестают работать. Если токен уже ушёл не туда, что делать дальше, описано в статье про токен на скриншоте.
Чем открыть HAR-файл#
Открыть HAR-файл можно в инструментах разработчика браузера (импорт на вкладке «Сеть»), в любом редакторе кода, потому что внутри JSON, или в онлайн-анализаторе вроде Google HAR Analyzer. Чтобы отправить запросы заново, его импортируют в API-клиент.
Инструменты разработчика. Самый простой способ. В Chrome на вкладке «Сеть» есть кнопка «Импортировать HAR-файл…» со стрелкой вверх, в Firefox файл можно перетащить прямо на панель. Запросы появятся в привычном списке, как будто страница загрузилась у вас.
Редактор кода. Внутри обычный JSON: массив log.entries, в каждой записи request, response и timings. Файл бывает на десятки мегабайт, и не каждый редактор откроет его без зависаний.
Онлайн-анализаторы, например HAR Analyzer от Google. Удобно, чтобы быстро найти ошибки и медленные запросы. Но файл с живыми cookie туда загружать не стоит, сначала почистите его.
Как найти ошибку в HAR-файле#
Импортируйте файл на вкладке «Сеть». Запросы с ошибкой Chrome выделяет красным. Чтобы оставить в списке только их, введите в поле фильтра status-code:500 или другой код. Чтобы найти медленные запросы, отсортируйте список по столбцу «Время».
В самом JSON код ответа лежит в response.status, а полное время запроса в миллисекундах в поле time каждой записи. Код 0 значит, что ответа не было вовсе: запрос заблокировали, оборвали или он не дошёл до сервера.
Ошибок JavaScript в HAR нет, только сетевые запросы. Поэтому вместе с ним поддержка часто просит скриншот вкладки «Консоль».
Как повторить запросы из HAR#
Иногда HAR нужен не поддержке, а вам: посмотреть, какие запросы делает страница, и отправить один из них заново, поменяв параметр. Для этого HAR импортируют в API-клиент.
В Tetiva это обычный импорт файла. Каждая запись журнала становится запросом с адресом, заголовками и телом, ответ из журнала сохраняется рядом как пример (тела JSON, XML и текст до 256 КБ). Если страница ходила на несколько серверов, у каждого будет своя папка. Записи WebSocket в коллекцию не попадают. Картинки, скрипты, стили и шрифты тоже отсеиваются, если HAR записан в Chrome или другом браузере на его движке: такие браузеры помечают тип каждого ресурса. В файлах из Firefox и Safari этой пометки нет, и ресурсы страницы приедут вместе с запросами к API.
Перед импортом окно подтверждения покажет, что изменилось при разборе. Чтобы запросы заработали, может понадобиться вернуть cookie и токен:
- Заголовки
Cookieне переносятся. Запрос, которому нужна сессия браузера, без них вернёт401. Нужные cookie добавляют вручную в Cookie Manager. - В очищенном HAR нет
Authorization. Значит, токен придётся вставить самому, лучше сразу в переменную окружения.
Если же в файле остались учётные данные, например токен в адресе, окно покажет, в скольких запросах они нашлись, и предложит перенести значения в секретные переменные, прежде чем делиться коллекцией. Подробности о том, что переносится из HAR, есть в документации по импорту.
Если нужен один запрос, а не весь журнал, HAR не нужен: нажмите на запрос правой кнопкой во вкладке «Сеть» и выберите «Копировать» → «Копировать как cURL» (в Windows пунктов два, с пометками (cmd) и (bash)). Отправить её из терминала или вставить в клиент поможет статья про curl.
Шпаргалка#
- Записать: F12 → «Сеть» → «Сохранить журнал» → воспроизвести ошибку → «Экспортировать HAR-файл (очищенный)…».
- Проверить: найти в файле
Authorization,Cookie,token,password, свой email и заменить значения. - Отправить: только туда, куда просили, и выйти из аккаунта после отправки.
- Открыть: импорт в инструментах разработчика, редактор кода или API-клиент, если запросы нужно повторить.



