Прежде чем отправить этот файл HAR, прочитайте, что внутри него

«Не могли бы вы прислать нам файл HAR?» — разумная просьба и одна из самых небрежно опасных передач файлов в повседневной работе поддержки. Файл HAR — это полная запись сеанса браузера: каждый запрос и каждый ответ, с cookie, заголовками авторизации, токенами и содержимым форм, которые заставили их работать. Это ровно то, что нужно инженеру поддержки, чтобы воспроизвести вашу проблему, и ровно то, что хотел бы получить злоумышленник, чтобы воспроизвести ваш сеанс. Эта статья объясняет, что такое файл HAR, как сделать захват в Chrome, Edge или Firefox, что он утекает и как проверить и отредактировать его, прежде чем он куда-либо отправится.

Что такое файл HAR

HAR — HTTP Archive — это JSON-формат для записи HTTP-трафика, стандартизированный в спецификации HAR 1.2 и экспортируемый инструментами разработчика всех основных браузеров и отладочными прокси, такими как mitmproxy. Файл содержит объект log с массивом entries: по одной записи на запрос, каждая с методом и полным URL, заголовками запроса и ответа, cookie в обоих направлениях, строкой запроса, разобранной на параметры, любым телом POST, статусом, размером и типом содержимого ответа, а также временем, разбитым по фазам — DNS, соединение, TLS, отправка, ожидание, получение.

Иными словами, это не скриншот проблемы; это сама проблема, воспроизводимая. Всё, что работает с HTTP-трафиком, использует этот формат — браузерные инструменты, анализаторы производительности, инженеры поддержки и, всё чаще, агенты: стек REA, рассмотренный в статье могут ли ИИ-агенты выполнить обратную разработку вашего приложения?, читает захваты HAR нативно, потому что для многих приложений API-трафик объясняет больше, чем код. Именно эта полезность — причина, по которой файл заслуживает прочтения, прежде чем заслуживает отправки.

Почему команды поддержки и поставщики просят его

Потому что он заканчивает споры. «Страница была медленной» превращается в водопад с именованными запросами и временами. «API не работает» превращается в точный запрос, вернувший 500, с точной полезной нагрузкой и точными заголовками. «У меня работает» перестаёт иметь значение, потому что запись сделана на вашей машине, в вашей сети, под вашей учётной записью, в момент поломки. Хороший инженер поддержки может сделать с одним честным файлом HAR больше, чем с неделей скриншотов и воспоминаний.

Поэтому просьбу так часто и пересылают, не задумываясь. В обращении сказано «приложите HAR», пользователь экспортирует его за тридцать секунд, и файл — записанный, пока он был в системе и делал настоящую работу — отправляется в путешествие: в систему обращений, в ветку почты, иногда на публичный форум или общий диск, накапливая копии на каждом шаге. Никто в этой цепочке не является именно небрежным; формат просто скрывает то, что содержит. Файл .har выглядит как инертная диагностика. Он ближе к связке ключей.

Как сделать захват в Chrome, Edge или Firefox

В Chrome или Edge: откройте страницу, нажмите F12 для DevTools и перейдите на панель Сеть (справка по сети Chrome DevTools документирует каждый элемент управления). Убедитесь, что красная кнопка записи включена, и отметьте Сохранять журнал, если проблема охватывает переход. Воспроизведите проблему один раз, от начала до конца. Затем щёлкните правой кнопкой любой запрос в списке и выберите Сохранить всё как HAR с содержимым (Edge формулирует это как сохранение сетевого журнала). В Firefox поток имеет ту же форму: DevTools → Сеть, воспроизвести, правый клик → Сохранить всё как HAR.

Две привычки захвата важнее любой настройки. Первая: записывайте самый короткий сеанс, который показывает проблему, — каждая лишняя минута просмотра — это лишний трафик и лишние секреты в файле, включая то, что в это время делали другие вкладки и фоновые запросы. Вторая, если можете: воспроизводите проблему в свежем профиле браузера или в приватном окне, войдя только в тот сервис, о котором идёт речь. Захват из чистого профиля содержит только этот один сеанс и ничего больше: ни банковской вкладки, ни веб-почты, ни токенов других приложений, едущих внутри.

Что он утекает

Ваш сеанс — в первую очередь. Заголовки Cookie и Set-Cookie и списки cookie несут ваши идентификаторы сеанса, а большинство сессионных cookie являются предъявительскими учётными данными в самом прямом смысле: кто предъявит один такой, будет считаться вами, пока он не истечёт или не будет отозван. Заголовок Authorization добавляет предъявительские токены, а иногда и Basic-учётные данные. Ничто в формате не помечает эти значения как особенные; это просто заголовки, записанные добросовестно.

Затем то, что никто не считает заголовками. Токены постоянно ездят в URL — ключи API, ссылки для сброса пароля и подтверждения почты, подписанные URL загрузки, обратные вызовы OAuth — а HAR записывает полный URL плюс строку запроса, разобранную для лёгкого чтения. Тела POST несут то, что несли формы: пароль, с которым вы вошли во время захвата, правки профиля, сообщения, личные данные. Тела ответов могут принести тот же класс данных обратно. Файл HAR из реального сеанса — это, по сути, частичная расшифровка вашей учётной записи, и поэтому инструменты, читающие сетевой трафик на линии, как PCAP Analyzer, и те, что читают его в браузере, как эта страница, сделаны так, чтобы ясно показывать учётные данные, чтобы вы видели, что держите в руках.

Проверьте и отредактируйте его перед отправкой

Итак: откройте файл раньше всех остальных. Для этого и существует HAR File Analyzer на этом сайте — перетащите .har на страницу, и он будет разобран локально, на вашем устройстве, никогда не загружаясь, с замаскированными по умолчанию чувствительными значениями: заголовки Authorization, Cookie и Set-Cookie, каждое значение cookie и любой заголовок, параметр запроса, поле формы или ключ JSON, чьё имя похоже на токен, ключ, секрет, сеанс или пароль. Просмотрите сводку и самые медленные и большие запросы; проверьте, какие хосты встречаются — захват иногда содержит трафик сайтов, на которые вы даже не смотрели, — и используйте переключатель «показать значения», только на своём экране, если нужно подтвердить, что на самом деле внутри.

Затем скачайте отредактированный .har и отправьте его вместо исходного. Редактирование сохраняет структуру, которая нужна инженеру поддержки, — те же записи, заголовки, URL как формы, статусы и времена — и заменяет значения учётных данных буквальным текстом REDACTED в заголовках, cookie, строках запроса, данных форм и телах JSON одинаково. Одно ограничение напечатано на инструменте и повторяется здесь: тело POST, которое не является ни JSON, ни обычными данными формы, нельзя безопасно разобрать, поэтому оно переносится без изменений — если ваш захват содержит такое тело, прочитайте его сами, прежде чем файл отправится в путь. Замаскированная сводка CSV существует по той же причине: это файл, который вы прикладываете, когда инженер просит «только список запросов».

Чего редактирование сделать не может

Редактирование убирает ключи; оно не убирает карту. Отредактированный HAR по-прежнему показывает ваши хосты и конечные точки, ваши имена параметров, форму и размер ответов, последовательность и времена вызовов — рабочую схему API вашего приложения, которая сама по себе может быть информацией, которую вы не публикуете. Оно также не может отозвать копии: как только исходный файл попал в систему обращений или почтовый ящик, редактирование вашей копии ничего не меняет в их копии. Делитесь отредактированным файлом по приватному каналу, который дал поставщик, — само обращение, а не публичная публикация или публичная ссылка на файл — и попросите в обращении удалить файл, когда дело будет закрыто. Уважаемые организации поддержки делают это рутинно; попросить ничего не стоит.

А если исходный, неотредактированный HAR уже ушёл — отправлен по неверному адресу, приложен к публичному вопросу, оставлен в общей папке, — считайте сеанс раскрытым, потому что он раскрыт: выйдите из сервиса (что обычно делает сеанс недействительным на стороне сервера), войдите снова и смените все ключи API, которые в нём встречались. Это то же правило, что и для любых утекших учётных данных, и причина, по которой мелкий шрифт на других файловых инструментах этого сайта идентичен — Binary File Inspector читает исполняемые файлы локально по той же причине, по которой эта страница читает захваты локально: файлы, которые больше всего нуждаются в проверке, — это ровно те файлы, которые не следует загружать для проверки.

Источники и дополнительная литература

Часто задаваемые вопросы

Можно ли отредактировать файл вручную в текстовом редакторе?

Можно — файл HAR это JSON, и любой текстовый редактор может его открыть, — но ручное редактирование — это ровно то, как секреты выживают: один и тот же токен встречается в заголовке, списке cookie, строке URL и параметрах запроса, и пропуск одной копии оставляет учётные данные живыми. Автоматический проход, заменяющий значения по правилу везде, где они встречаются, — скучный и правильный способ. Что бы вы ни делали, поищите в готовом файле фрагмент каждого секрета, который, как вы знаете, в нём был, прежде чем отправлять его.

Работает ли отредактированный HAR для инженера поддержки?

Да — в этом и смысл редактирования значений вместо удаления записей. Инженер сохраняет последовательность запросов, методы, формы URL, имена заголовков, статусы, размеры и времена — то, чем диагностика на самом деле пользуется; теряет он только живые значения учётных данных, которые ему никогда не были нужны. Если инженеру действительно нужно увидеть значение, это разговор, который ведут явно, — и он обычно заканчивается его согласием, что отредактированного файла достаточно.

Я уже отправил исходный файл HAR. Что мне делать теперь?

Считайте сеанс в нём публичным. Выйдите из сервиса везде (у большинства сервисов есть управление «выйти из всех сеансов», которое делает захваченные cookie недействительными), войдите снова и смените все ключи API или токены, встречавшиеся в захвате. Затем ответьте в том же обращении или ветке с просьбой удалить вложение. Не отправляйте второй, отредактированный файл, считая вопрос решённым, — редактирование защищает будущие копии, а не уже доставленную.