$ command-helper

curl

HTTP-запросы из терминала: заголовки, JSON, авторизация, загрузка файлов, тайминги и отладка.

Потребуется вход через Google

Базовые запросы

GET-запрос
curl <url>
Следовать редиректам
curl -L <url>
Показать только заголовки ответа
curl -I <url>
Показать заголовки и тело
curl -i <url>
Скачать файл с исходным именем
curl -LO <url>
Скачать в указанный файл
curl -L -o <file> <url>

Отправка данных

POST с JSON
curl -X POST <url> \
  -H 'Content-Type: application/json' \
  -d '{"name": "test"}'
POST с JSON из файла
curl -X POST <url> -H 'Content-Type: application/json' -d @body.json
Отправить форму
curl -X POST <url> -d 'user=alice&role=admin'
Загрузить файл (multipart)
curl -X POST <url> -F 'file=@./photo.jpg'
DELETE-запрос
curl -X DELETE <url>

Авторизация и заголовки

Bearer-токен
curl -H 'Authorization: Bearer <token>' <url>
Basic-авторизация
curl -u <user>:<password> <url>
Свой заголовок и user agent
curl -H 'X-Request-Id: 123' -A 'my-client/1.0' <url>
Отправить и сохранить cookiesпродвинутая
curl -b cookies.txt -c cookies.txt <url>

Отладка

Подробный вывод (TLS, заголовки)
curl -v <url>
Только код ответа
curl -s -o /dev/null -w '%{http_code}\n' <url>
Разбивка времени запросапродвинутая
curl -s -o /dev/null -w 'dns %{time_namelookup}s | connect %{time_connect}s | tls %{time_appconnect}s | first byte %{time_starttransfer}s | total %{time_total}s\n' <url>
Игнорировать невалидный сертификат
curl -k <url>

Только для локальной отладки.

Отправить запрос на конкретный IP (в обход DNS)продвинутая
curl --resolve <domain>:443:<ip> https://<domain>/
Красиво вывести JSON-ответ
curl -s <url> | jq
Повторы при ошибке и таймаутпродвинутая
curl --retry 3 --retry-delay 2 --max-time 10 <url>