HAR в cURL читает сетевой архив, который экспортируют инструменты разработчика браузера, и превращает любой запрос из него в команду для терминала. Это кратчайший путь закрыть разрыв «в браузере работает, а в скрипте нет»: каждый заголовок, метод и тело запроса переносятся ровно такими, какими их отправил браузер. Две детали проработаны тщательно. Кавычки оболочки используют POSIX-экранирование одиночной кавычки внутри одиночных: JSON-тело с апострофом не оборвёт команду молча. А поскольку HAR штатно несёт живые сессионные куки, один переключатель убирает Cookie и Authorization перед вставкой в баг-репорт.
Возможности
Читает любой экспорт HAR и перечисляет все запросы
Фильтр по URL, методу и коду состояния
Конвертация одного запроса или всего отфильтрованного набора
POSIX-корректные кавычки для тел с кавычками и апострофами
Удаление Cookie, Authorization и API-ключей по требованию
Отбрасывает браузерные заголовки и псевдозаголовки HTTP/2
Как использовать HAR в cURL
В инструментах разработчика на вкладке «Сеть» выберите «Сохранить всё как HAR с содержимым»
Бросьте файл .har сюда или вставьте его содержимое
Выберите запрос из списка или оставьте «Все» для конвертации всех
Для передачи включите удаление кук и авторизации, затем копируйте
Пример
Ввод
POST https://api.example.com/login with a JSON body
Для POST с телом -X не выводится: --data уже подразумевает POST.
Частые ошибки и устранение неполадок
Команда выполняется, но сервер отвечает 401 или 403. — Вероятно, вычищен заголовок авторизации, либо сессия в нём истекла. Отключите удаление и переэкспортируйте HAR, войдя в систему.
Инструмент говорит, что JSON — не HAR-файл. — У HAR наверху объект log с массивом entries. Сохранённое тело ответа или скопированный JSON такой структуры не имеют: переэкспортируйте через «Сохранить всё как HAR».
В команде нет тела запроса. — Экспортируйте с содержимым. Иначе HAR фиксирует заголовки и опускает тела — класть в --data-raw нечего.
Часто задаваемые вопросы
Как экспортировать HAR-файл из браузера?
Откройте инструменты разработчика, вкладку «Сеть», воспроизведите запрос, затем правой кнопкой по любой строке — «Сохранить всё как HAR с содержимым». Chrome, Edge, Firefox и Safari предлагают свой вариант этого.
Почему в команде нет -X POST?
Потому что --data-raw уже подразумевает POST, а лишний -X может изменить обращение cURL с редиректами. Флаг метода выводится только когда нужен: PUT, PATCH или DELETE.
Безопасно ли делиться командой cURL из HAR?
По умолчанию нет: HAR ловит живые сессионные куки и заголовки Authorization, равные паролю. Сначала включите удаление: уйдут Cookie, Authorization и типовые API-ключи.
Загружается ли HAR-файл при конвертации?
Нет. Файл разбирается целиком в браузере — и это важно: HAR штатно содержит сессионные куки и личные данные каждого пойманного запроса.