🌀 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.