Web & API

HAR-файл

HTTP Archive — JSON-файл с записью всех запросов браузера к сайту: заголовки, тела, коды ответов и тайминги каждого обращения.

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

HAR (HTTP Archive) — формат записи сетевой активности браузера. Это обычный JSON-файл с расширением .har, куда попадает всё, что происходило на вкладке Network: каждый запрос со своими заголовками и телом, каждый ответ с кодом и содержимым, плюс тайминги — сколько заняли DNS, установка соединения, TLS-хендшейк и ожидание ответа сервера.

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

Как снять HAR

Формат поддерживают все браузеры на движке Chromium, а также Firefox и Safari.

  1. Откройте DevTools — F12 или Ctrl+Shift+I.
  2. Вкладка Network, включите Preserve log — иначе записи пропадут при редиректе.
  3. Очистите список и воспроизведите проблему: перезагрузите страницу, нажмите кнопку.
  4. Правой кнопкой по списку → Save all as HAR with content, в Firefox — Сохранить всё как HAR.

Без with content тела ответов в файл не попадут — останутся только заголовки и тайминги. Для разбора ошибки API тела обычно и есть самое ценное.

Что внутри

{
  "log": {
    "version": "1.2",
    "creator": { "name": "WebInspector", "version": "537.36" },
    "entries": [
      {
        "startedDateTime": "2026-01-17T09:14:02.113Z",
        "time": 842,
        "request": {
          "method": "POST",
          "url": "https://api.example.com/v1/orders",
          "headers": [{ "name": "Authorization", "value": "Bearer eyJhbG..." }],
          "postData": { "mimeType": "application/json", "text": "{\"sku\":\"GPU-4090\"}" }
        },
        "response": {
          "status": 422,
          "content": { "mimeType": "application/json", "text": "{\"errors\":{...}}" }
        },
        "timings": {
          "blocked": 1, "dns": 12, "connect": 47, "ssl": 31,
          "send": 0, "wait": 738, "receive": 13
        }
      }
    ]
  }
}

Массив entries — это список запросов, по одному объекту на каждый. Блок timings разбирает время запроса по фазам, и он же отвечает на главный вопрос при разборе тормозов: большое значение wait — медленно думает сервер, большие dns и connect — проблема в сети или DNS, большое blocked — браузер держал запрос в очереди.

Как читать

  • Импорт обратно в DevTools. Файл перетаскивают на вкладку Network — и он открывается тем же привычным списком со всеми фильтрами.
  • Фильтр по статусам. Ищите коды 4xx и 5xx — обычно проблема там. Отсутствие запроса вообще тоже диагноз: сработал блокировщик или запрос не отправился.
  • Заголовок Origin и ответ без Access-Control-Allow-Origin. Верный признак проблемы с CORS — в HAR это видно однозначно, в отличие от туманного сообщения в консоли.
  • Водопад. Сортировка по времени показывает, что грузится последовательно, а что параллельно.

Безопасность: HAR — это дамп сессии

В файле лежат все заголовки, включая Cookie и Authorization. То есть API-ключи, JWT-токены и куки сессии — в открытом виде. Кто получил ваш HAR, тот вошёл в аккаунт: были реальные инциденты, когда компанию взламывали через HAR-файлы, отправленные в техподдержку.

Правила простые:

  • Перед отправкой откройте файл и удалите значения Cookie, Authorization, Set-Cookie и тела с персональными данными.
  • Снимайте HAR на тестовом аккаунте, если это возможно.
  • Не выкладывайте HAR в публичные тикеты, чаты и issue-трекеры.
  • После разбора инцидента ротируйте засветившиеся ключи и токены.

Отдельно про персональные данные: HAR с формы регистрации содержит всё, что пользователь ввёл, — такой файл нельзя ни пересылать в мессенджере, ни хранить в тикете.

Связанные термины

  • HTTP — то, что записывает HAR
  • HTTP-ошибки — что ищут в файле в первую очередь
  • CORS — частая находка при разборе HAR
  • API — вызовы, которые видно в записи
  • API-ключи — то, что нужно вычистить перед отправкой

Готовы запустить GPU-задачу?

Запустить GPU-сервер