Шпаргалка по cURL
Доступный для поиска и печати справочник по curl — методы HTTP, заголовки, данные и формы, аутентификация, загрузки, cookie, TLS, прокси и отладка. Бесплатно.
Основы
12curl https://api.example.com
Отправить GET-запрос и вывести тело
curl -o page.html https://example.com
Сохранить ответ в указанный файл
curl -O https://example.com/file.zip
Сохранить с именем удалённого файла
curl -i https://example.com
Показать заголовки ответа и тело
curl -I https://example.com
Получить только заголовки ответа (HEAD)
curl -v https://example.com
Подробный вывод запроса/ответа
curl -s https://example.com
Тихий режим, скрыть прогресс и ошибки
curl -sS https://example.com
Тихо, но показывать ошибки
curl -L https://example.com
Следовать за HTTP-редиректами (3xx)
curl https://a.com https://b.com
Запросить несколько URL за один вызов
curl 'https://x.com/p?[1-5]'
Перебрать URL числовым диапазоном
curl --version
Вывести версию и возможности curl
HTTP-методы
9curl -X GET https://api.example.com
Явно отправить GET-запрос
curl -X POST https://api.example.com
Отправить POST-запрос
curl -X PUT https://api.example.com/1
Отправить PUT-запрос для замены ресурса
curl -X PATCH https://api.example.com/1
Отправить PATCH-запрос для обновления полей
curl -X DELETE https://api.example.com/1
Отправить DELETE-запрос
curl -I https://api.example.com
Отправить HEAD-запрос только для заголовков
curl -X OPTIONS https://api.example.com
Отправить предварительный OPTIONS-запрос
curl --head https://api.example.com
Полная форма -I для HEAD-запроса
curl --request POST https://x.com
Полная форма -X для задания метода
Заголовки
10curl -H 'Accept: application/json' https://x.com
Добавить один заголовок запроса
curl -H 'X-Token: abc' -H 'X-Env: dev' https://x.com
Добавить несколько заголовков
curl -H 'Content-Type: application/json' https://x.com
Указать тип содержимого тела запроса
curl -H 'Authorization: Bearer TOKEN' https://x.com
Отправить заголовок авторизации bearer
curl -H 'Host: example.com' https://1.2.3.4
Переопределить заголовок Host
curl -H 'Accept-Encoding: gzip' https://x.com
Запросить сжатый gzip-ответ
curl -A 'MyAgent/1.0' https://x.com
Задать строку User-Agent
curl -e 'https://ref.com' https://x.com
Задать заголовок Referer
curl -H 'X-Debug:' https://x.com
Убрать стандартный заголовок, оставив пустым
curl --compressed https://x.com
Запросить и автоматически распаковать ответ
Отправка данных
11curl -d 'name=Jane&age=30' https://x.com
POST данных формы в URL-кодировке
curl -d '@payload.json' https://x.com
POST данных из файла
curl --data-urlencode 'q=hello world' https://x.com
POST одного URL-кодированного поля
curl --data-binary '@file.bin' https://x.com
POST сырых байтов без обработки
curl -G --data-urlencode 'q=cats' https://x.com
Добавить данные как строку запроса GET
curl -X POST -H 'Content-Type: application/json' -d '{"name":"Jane"}' https://x.com
POST тела JSON
curl --json '{"name":"Jane"}' https://x.com
POST JSON с авто-установкой JSON-заголовков
curl -F 'name=Jane' https://x.com
Отправить поле multipart-формы
curl -F 'file=@photo.png' https://x.com
Загрузить файл как multipart form-data
curl -F 'file=@a.pdf;type=application/pdf' https://x.com
Загрузить файл с явным MIME-типом
curl -d '' https://x.com
POST с пустым телом
Аутентификация
9curl -u user:pass https://x.com
Базовая HTTP-аутентификация
curl -u user https://x.com
Базовая аутентификация с запросом пароля
curl -H 'Authorization: Bearer TOKEN' https://x.com
Отправить заголовок с bearer-токеном
curl --oauth2-bearer TOKEN https://x.com
Отправить bearer-токен OAuth 2.0
curl --digest -u user:pass https://x.com
Использовать digest-аутентификацию HTTP
curl --ntlm -u user:pass https://x.com
Использовать аутентификацию NTLM
curl --netrc https://x.com
Читать учётные данные из ~/.netrc
curl --netrc-file creds https://x.com
Читать учётные данные из своего файла netrc
curl -H 'X-Api-Key: KEY' https://x.com
Отправить заголовок с API-ключом
Скачивание и загрузка
11curl -O https://x.com/file.zip
Скачать с именем удалённого файла
curl -o out.zip https://x.com/file.zip
Скачать в файл с выбранным именем
curl -OL https://x.com/file.zip
Скачать, следуя за редиректами
curl -C - -O https://x.com/file.zip
Возобновить прерванную загрузку
curl --limit-rate 200k -O https://x.com/f
Ограничить скорость передачи
curl -r 0-1023 -o part https://x.com/f
Скачать только диапазон байтов
curl --retry 3 -O https://x.com/f
Повторять загрузку при ошибке
curl -T file.txt ftp://x.com/
Загрузить файл через PUT/FTP
curl -T file.txt https://x.com/up
Загрузить файл через HTTP PUT
curl --create-dirs -o a/b/f.txt https://x.com
Создать недостающие каталоги для вывода
curl -# -O https://x.com/file.zip
Показать простой индикатор прогресса
Cookie
8curl -b 'session=abc123' https://x.com
Отправить cookie встроенно
curl -b cookies.txt https://x.com
Отправить cookie из файла
curl -c cookies.txt https://x.com
Записать полученные cookie в файл-хранилище
curl -b jar.txt -c jar.txt https://x.com
Читать и обновлять то же хранилище cookie
curl -b 'a=1; b=2' https://x.com
Отправить несколько cookie сразу
curl -c - https://x.com
Вывести полученные cookie в stdout
curl --junk-session-cookies -b jar.txt https://x.com
Игнорировать сессионные cookie из хранилища
curl -L -c jar.txt -b jar.txt https://x.com/login
Сохранять сессию при редиректах
TLS / SSL
10curl -k https://x.com
Разрешить небезопасно (без проверки сертификата)
curl --cacert ca.pem https://x.com
Проверять по своему набору CA
curl --capath /etc/ssl/certs https://x.com
Использовать каталог CA-сертификатов
curl --cert client.pem https://x.com
Отправить клиентский сертификат
curl --cert client.pem --key client.key https://x.com
Использовать клиентский сертификат и закрытый ключ
curl --tlsv1.2 https://x.com
Требовать минимум TLS 1.2
curl --tlsv1.3 https://x.com
Требовать минимум TLS 1.3
curl --tls-max 1.2 https://x.com
Ограничить максимальную версию TLS
curl --ciphers ECDHE-RSA-AES128-GCM-SHA256 https://x.com
Ограничить допустимые шифры TLS
curl -vI https://x.com
Изучить детали TLS-рукопожатия
Прокси
9curl -x http://proxy:8080 https://x.com
Направить запрос через HTTP-прокси
curl --proxy http://proxy:8080 https://x.com
Полная форма -x для задания прокси
curl -x proxy:8080 -U user:pass https://x.com
Аутентифицироваться на прокси
curl --proxy-user user:pass -x proxy:8080 https://x.com
Полная форма учётных данных прокси
curl --socks5 127.0.0.1:1080 https://x.com
Использовать прокси SOCKS5
curl --socks5-hostname 127.0.0.1:1080 https://x.com
Прокси SOCKS5 с разрешением DNS на стороне прокси
curl --socks4 127.0.0.1:1080 https://x.com
Использовать прокси SOCKS4
curl --noproxy example.com https://x.com
Обходить прокси для заданных хостов
curl -x '' https://x.com
Отключить любой настроенный прокси
Отладка и вывод
11curl -w '%{http_code}\n' -o /dev/null -s https://x.com
Вывести только HTTP-код состояния
curl -w '%{time_total}\n' -o /dev/null -s https://x.com
Вывести общее время передачи
curl -w '@format.txt' https://x.com
Читать формат write-out из файла
curl -D headers.txt https://x.com
Сохранить заголовки ответа в файл
curl -D - -o body.txt https://x.com
Заголовки в stdout, тело в файл
curl --trace trace.txt https://x.com
Полная hex-трассировка передачи
curl --trace-ascii - https://x.com
ASCII-трассировка в stdout
curl --trace-time -v https://x.com
Добавить метки времени к подробному выводу
curl -v https://x.com 2>&1 | less
Постранично просмотреть подробный лог
curl -sS -o /dev/null -w '%{size_download}\n' https://x.com
Вывести число скачанных байтов
curl --libcurl out.c https://x.com
Сгенерировать эквивалентный код libcurl на C
Тайм-ауты и повторы
10curl --connect-timeout 5 https://x.com
Ограничить фазу подключения в секундах
curl --max-time 30 https://x.com
Ограничить время всей операции
curl --retry 3 https://x.com
Повторять при временных ошибках
curl --retry 3 --retry-delay 2 https://x.com
Ждать между попытками повтора
curl --retry 5 --retry-max-time 60 https://x.com
Ограничить общее время повторов
curl --retry-connrefused https://x.com
Повторять и при отказе в подключении
curl --retry-all-errors https://x.com
Повторять при любой ошибке, не только временной
curl --speed-limit 100 --speed-time 10 https://x.com
Прервать, если слишком медленно в течение срока
curl --keepalive-time 60 https://x.com
Задать интервал TCP keep-alive
curl --expect100-timeout 1 https://x.com
Ограничить ожидание 100-continue
Нет записей, соответствующих «:q».
Нужна помощь?
Возникла проблема с этим инструментом? Сообщите нам.