🌀 curl

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

Шпаргалки · Администрирование · #curl #http #terminal #api

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

curl https://example.com                      # GET
curl -i https://example.com                   # с заголовками ответа
curl -I https://example.com                   # только заголовки (HEAD)
curl -v https://example.com                   # подробно, вместе с запросом
curl -s URL                                   # без прогресса
curl -L URL                                   # следовать редиректам

Методы и тело

curl -X POST https://api.x.com/users \
  -H "Content-Type: application/json" \
  -d '{"name":"Аня","email":"a@x.ru"}'

curl -X PUT URL -d @body.json -H "Content-Type: application/json"
curl -X DELETE URL
curl --json '{"a":1}' URL                     # JSON и заголовки сразу (curl 7.82+)
curl -d "a=1&b=2" URL                         # форма x-www-form-urlencoded
curl -F "file=@photo.jpg" -F "name=x" URL     # multipart, загрузка файла
curl -G -d "q=поиск" URL                      # параметры в строку запроса

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

curl -H "Accept: application/json" -H "X-Api-Key: $KEY" URL
curl -H "Authorization: Bearer $TOKEN" URL
curl -u user:password URL                     # Basic
curl --cookie "sid=abc" URL
curl -c jar.txt -b jar.txt URL                # сохранить и использовать cookie
curl -A "MyAgent/1.0" -e https://ref.com URL  # User-Agent, Referer

Скачивание

curl -O https://x.com/file.zip                # сохранить под тем же именем
curl -o out.zip URL
curl -C - -O URL                              # докачка
curl --limit-rate 1M -O URL

Таймауты и повторы

curl --connect-timeout 5 --max-time 30 URL
curl --retry 3 --retry-delay 2 URL
curl -f URL                                   # код ошибки при HTTP 4xx и 5xx

TLS

curl -k URL                                   # не проверять сертификат (только для теста)
curl --cacert ca.pem URL
curl --cert client.pem --key client.key URL   # mTLS
curl --resolve example.com:443:127.0.0.1 https://example.com   # подмена DNS

Вывод и измерения

curl -w "код: %{http_code}, время: %{time_total}s\n" -o /dev/null -s URL
curl -s URL | jq '.items[0].name'             # разбор JSON
curl -sS -o /dev/null -w "%{redirect_url}\n" URL

Прокси

curl -x http://proxy:3128 URL, --proxy-user user:pass, переменные HTTP_PROXY, HTTPS_PROXY, NO_PROXY.

Другие протоколы

FTP, SFTP, SCP, SMTP, IMAP, MQTT: curl ftp://host/file --user u:p, curl smtp://....

Внимание: Не вставляйте токены в историю командной строки: используйте переменные окружения или файл -K.