Копирование запроса как cURL, HAR

↑ 1.7 Инструменты исследования: DevTools, логи, трассировки · ← Предыдущая · → Следующая

Желательно~5 мин чтенияУровень: middle

Зачем это аналитику и PM

Скрин списка запросов нельзя повторить. Команда cURL повторяет один вызов, файл HAR отдаёт разработчику пачку вызовов. В обоих легко уезжает допуск, поэтому их чистят до отправки.

План темы

  • Copy as cURL
  • импорт в Postman
  • HAR для разработчиков
  • что в нём скрыто (токены)

Объяснение

cURL — одна команда: метод, адрес, заголовки и тело. Браузер умеет собрать её из выбранной строки. Пункт меню в разных браузерах подписан по-разному. Часто встречается Copy as cURL. Точную подпись сверьте на экране, в плане темы оставлено это привычное имя.

HAR — JSON-журнал нескольких запросов страницы. Его отдают, когда важен порядок: что ушло до сохранения и что вернулось после. Команда экспорта тоже называется по-разному. Ищите сохранение списка как HAR и проверьте, попали ли в файл тела ответов.

Как чек и смена. cURL — один чек. HAR — лента за визит. Оба могут содержать номер карты, здесь это cookie и заголовок допуска.

Куда девать строку

Команду импортируют в Postman или вставляют в задачу. Импорт раскладывает метод и адрес по полям. Название команды импорта сверьте с клиентом. Перед этим удалите заголовки допуска и cookie. Учебный адрес лучше боевого: команда из браузера бьёт туда, куда ходила страница.

В HAR смотрят метод, адрес, код и факт тела. Полный экспорт браузера толстый. Ниже сокращённый JSON той же формы, не файл из DevTools: нет страниц, таймингов и cookie.

Примеры

Команда без секрета. Её можно разобрать глазами, на боевой стенд она не ведёт.

curl -sS "https://jsonplaceholder.typicode.com/todos/1" \
  -H "Accept: application/json"

Сокращённый HAR. Это учебный каркас, не полный журнал версии 1.2.

{
  "log": {
    "version": "1.2",
    "creator": {"name": "example", "version": "0"},
    "entries": [
      {
        "request": {
          "method": "GET",
          "url": "https://jsonplaceholder.typicode.com/todos/1",
          "headers": [{"name": "Accept", "value": "application/json"}]
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "content": {"mimeType": "application/json", "text": "{\"id\":1}"}
        }
      }
    ]
  }
}

Нюансы и подводные камни

  • В команде из браузера почти всегда есть cookie сессии. В общий чат так не отправляют.
  • Заголовок допуска прячется и в HAR, и в теле ответа. Поиск по файлу на слово authorization и на слово cookie обязателен.
  • Повтор команды создаёт настоящий эффект, если метод не чтение. Сначала подставьте учебный хост.
  • cURL одной строки не показывает соседние запросы. Для порядка нужен HAR или несколько команд.
  • Импорт может склеить лишние заголовки браузера. Лишние служебные строки не являются контрактом.

Практика

Скопируйте один учебный или свой тестовый запрос как команду. Удалите строки допуска и cookie. Рядом представьте, что в задаче нужен ещё и порядок из трёх вызовов.

Ожидаемый результат: в команде остались метод, адрес и безопасные заголовки. Для пачки назван HAR, а не серия скринов. В тексте нет живого секрета.

Вопросы с ответами

Связано с блоком Developer

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