Справочники
Шпаргалка curl
Флаги, заголовки, формы, прокси, повторы и отладка — с подстановкой вашего адреса и токена.
Подставить свои значения
Значения подставляются прямо в команды — копируйте и вставляйте в терминал.
Показано 62 из 62 команд.
Основа
По умолчанию curl печатает тело в консоль и молчит об ошибках. -sS — «тихо, но об ошибке скажи» — стоит писать почти всегда.
curl https://example.com
GET и тело ответа в консоль.
curl -sS https://example.com
Без индикатора прогресса, но с сообщением об ошибке.
curl -i https://example.com
Заголовки ответа вместе с телом.
curl -I https://example.com
Только заголовки: запрос HEAD.
curl -L https://example.com
Идти по редиректам; без этого 301 просто печатается и всё.
curl -o file.json https://example.com
Сохранить в файл; -O — под именем из адреса.
curl -f https://example.com
Ненулевой код возврата на HTTP-ошибку — обязательно в скриптах и CI.
curl --max-time 10 --connect-timeout 3 https://example.com
Общий таймаут и таймаут соединения. Без них запрос может висеть вечно.
curl -G -d "q=поиск" -d "page=2" https://example.com
Собрать query-строку из полей, не склеивая её руками.
curl --url-query "q=привет" https://example.com
Значение экранируется автоматически (curl 7.87+).
Методы и тело запроса
curl -X POST https://example.com
Задать метод явно. С -d метод и так становится POST.
curl -H "Content-Type: application/json" -d '{"a":1}' https://example.com
JSON-тело руками.
curl --json '{"a":1}' https://example.com
То же короче: сам ставит Content-Type и Accept (curl 7.82+).
curl -d @body.json -H "Content-Type: application/json" https://example.com
Тело из файла: собака перед именем.
curl -d "user=alika&pass=secret" https://example.com
Форма application/x-www-form-urlencoded.
curl --data-urlencode "text=привет мир" https://example.com
Экранировать значение поля правильно.
curl -F "file=@photo.jpg" -F "title=Обложка" https://example.com
Загрузка файла как multipart/form-data.
curl -F "file=@photo.jpg;type=image/jpeg;filename=cover.jpg" https://example.com
Задать тип и имя файла в форме.
curl -X PUT -T file.txt https://example.com
Залить файл целиком методом PUT.
curl -X DELETE https://example.com
Удаление.
curl -d "" https://example.com
POST без тела: без -d curl отправит GET.
Заголовки и авторизация
curl -H "Authorization: Bearer TOKEN" https://example.com
Токен в заголовке.
curl -u user:password https://example.com
Basic-авторизация; пароль лучше не писать в командной строке — он попадёт в history.
curl -u user https://example.com
Пароль спросят интерактивно.
curl -H "Accept: application/json" https://example.com
Попросить конкретный формат ответа.
curl -A "Mozilla/5.0" https://example.com
Свой User-Agent.
curl -e "https://example.com" https://example.com
Заголовок Referer.
curl -H "Accept-Encoding: gzip" --compressed https://example.com
Попросить сжатие и сразу распаковать.
curl -H "X-Debug:" https://example.com
Двоеточие без значения убирает заголовок, который curl ставит сам.
curl -H "Host: internal.local" http://127.0.0.1
Проверить виртуальный хост, не трогая DNS.
curl --resolve example.com:443:1.2.3.4 https://example.com
Подменить резолв: проверить новый сервер до переключения DNS.
TLS, прокси, сеть
curl -k https://example.com
Не проверять сертификат. Только для отладки — это отключает защиту от подмены.
curl --cacert ca.pem https://example.com
Свой корневой сертификат вместо системного хранилища.
curl --cert client.pem --key client.key https://example.com
Клиентский сертификат (mTLS).
curl -x http://proxy:3128 https://example.com
HTTP-прокси; --socks5 host:port — SOCKS.
curl --noproxy "*" https://example.com
Игнорировать переменные окружения с прокси.
curl --http1.1 https://example.com
Заставить конкретную версию: --http2, --http3.
curl -4 https://example.com
Только IPv4; -6 — только IPv6.
curl --interface eth0 https://example.com
Запрос с конкретного интерфейса.
curl --tlsv1.2 --tls-max 1.2 https://example.com
Зафиксировать версию TLS при разборе несовместимости.
Отладка и измерения
curl -v https://example.com
Весь диалог: запрос, ответ, рукопожатие TLS.
curl --trace-ascii - https://example.com
Ещё подробнее, включая тело, в удобочитаемом виде.
curl -sS -o /dev/null -w "%{http_code}\n" https://example.com
Только код ответа.
curl -sS -o /dev/null -w "dns %{time_namelookup} tcp %{time_connect} tls %{time_appconnect} ttfb %{time_starttransfer} total %{time_total}\n" https://example.com
Где именно уходит время: разбивка по этапам.
curl -w "%{size_download} байт, %{speed_download} Б/с\n" -o /dev/null -sS https://example.com
Объём и скорость загрузки.
curl -sS -D headers.txt -o body.json https://example.com
Заголовки и тело в разные файлы.
curl -sS https://example.com | jq .
Читаемый JSON.
curl --write-out "%{redirect_url}\n" -o /dev/null -sS https://example.com
Куда именно уводит редирект.
Загрузка файлов и повторы
curl -O -L https://example.com
Скачать под именем из адреса, следуя редиректам.
curl -C - -O https://example.com
Докачать прерванный файл.
curl --limit-rate 500k -O https://example.com
Ограничить скорость, чтобы не забить канал.
curl -r 0-1023 -o head.bin https://example.com
Скачать только первый килобайт — проверить сигнатуру файла.
curl --retry 5 --retry-delay 2 --retry-all-errors https://example.com
Повторять при сбоях с паузой.
curl --retry 3 --retry-connrefused https://example.com
Повторять и когда сервис ещё не поднялся — типичный healthcheck в CI.
curl -Z -O {url1} -O {url2}
Параллельная загрузка нескольких адресов (curl 7.66+).
curl -K options.txt https://example.com
Длинный набор флагов из файла — не захламляет команду.
curl --config <(echo header = "Authorization: Bearer TOKEN") https://example.com
Спрятать токен от истории команд и от ps.