реклама
разместить

10 команд curl, которые вам следует знать

Команда Mail.ru Cloud Solutions перевела статью, автор которой составил краткий справочник часто используемых команд curl для протоколов HTTP/HTTPS. Это не замена официального руководства по cURL, скорее, краткий конспект.

10 команд curl, которые вам следует знать

cURL (расшифровывается как Client URL) — программное обеспечение, которое предоставляет библиотеку libcurl и инструмент командной строки curl. Возможности cURL огромны, во многих опциях легко потеряться.

curl — инструмент для передачи данных с сервера или на него, при этом используется один из поддерживаемых протоколов: DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET и TFTP. Команда предназначена для работы без взаимодействия с пользователем.

Команда curl запускается из командной строки и предустановлена в большинстве дистрибутивов Linux.

Варианты применения:

  • доступ без браузера;
  • внутри shell-скриптов;
  • для тестирования API.

В основном я использовал curl для тестирования API, иногда просто вставляя команды, которые нашел в интернете. Но я хочу разобраться в curl и лучше понять его особенности. Так что поделюсь некоторыми командами, с которыми столкнулся во время работы.

Запрос страницы

Если никакие аргументы не указаны, то команда curl выполняет HTTP-запрос get и отображает статическое содержимое страницы. Оно аналогично тому, что мы видим при просмотре исходного кода в браузере.

curl www.google.com

Скачивание файла

Есть два варианта этой команды.

  • Скачать файл и сохранить под оригинальным именем (testfile.tar.gz).
curl -O https://testdomain.com/testfile.tar.gz
  • Скачать файл и сохранить под другим именем.
curl -o custom_file.tar.gz https://testdomain.com/testfile.tar.gz

Еще можно скачать несколько файлов одной командой, хотя в мануале так делать не рекомендуют.

curl -O https://testdomain.com/testfile.tar.gz -O https://testdomain.com/testfile2.tar.gz

Получение заголовков HTTP

Если вы хотите посмотреть, какие заголовки отдает сервер, то можно использовать опции -I или -head. Они позволяют получить заголовок без тела документа.

curl -I https://www.google.com HTTP/1.1 200 OK Content-Type: text/html; charset=ISO-8859-1 P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info." Date: Thu, 04 Jun 2020 15:07:42 GMT Server: gws X-XSS-Protection: 0 X-Frame-Options: SAMEORIGIN Transfer-Encoding: chunked Expires: Thu, 04 Jun 2020 15:07:42 GMT Cache-Control: private Set-Cookie: 1P_JAR=2020-06-04-15; expires=Sat, 04-Jul-2020 15:07:42 GMT; path=/; domain=.google.com; Secure Set-Cookie: <cookie_info>

Игнорирование ошибки неправильных или самоподписанных сертификатов

Когда вы тестируете веб-приложение или API, то в вашем тестовом окружении могут быть самоподписанные или неправильные SSL-сертификаты. По умолчанию curl верифицирует все сертификаты. Чтобы он не выдавал ошибку о неверных сертификатах и устанавливал соединение для тестирования, используйте опцию -k или -insecure.

curl -k https://localhost/my_test_endpoint

Отправка POST-запроса

Иногда для тестирования API нужно отправить какие-либо данные, обычно это делают через POST-запрос. Если вы делаете POST-запрос при помощи curl, то можете отправить данные либо в виде списка имя=значение, либо в виде JSON.

  • Запрос в виде списка имя=значение.
curl --data "param1=test1&param2=test2" http://test.com
  • Запрос в виде JSON.
curl -H 'Content-Type: application/json' --data '{"param1":"test1","param2":"test2"}' http://www.test.com

Параметр --data эквивалентен -d, оба указывают curl выполнить HTTP POST-запрос.

Указание типа запроса

Если curl не передаются никакие данные, то по умолчанию он выполняет HTTP GET запрос. Но если вам, например, нужно обновить данные, а не пересоздать их заново, то curl поддерживает опции, указывающие тип запроса. Параметры -x или --request позволяют указать тип HTTP-запроса, который используется для сообщения с сервером.

# updating the value of param2 to be test 3 on the record id curl -X 'PUT' -d '{"param1":"test1","param2":"test3"}' \http://test.com/1

Использование авторизации

API защищено авторизацией по логину-паролю — вы можете передать пару логин-пароль, используя параметр -u или --user. Если просто передать логин, то curl запросит пароль в командной строке. Используете параметр несколько раз — для авторизации на сервер будет передано только последнее значение.

curl -u <user:password> https://my-test-api.com/endpoint1

Управление резольвом имен

Вы хотите протестировать API перед развертыванием и перенаправить запрос на тестовую машину — это можно сделать, указав альтернативный резольв имени эндпоинта для данного запроса. Все работает эквивалентно пропиcыванию хоста в /etc/hosts.

curl --resolve www.test.com:80:localhost http://www.test.com/

Загрузка файла

О возможности загрузки файла через curl я узнал недавно. Не был уверен, что это возможно, но, по всей видимости, это так: curl с опцией -F эмулирует отправку заполненной формы, когда пользователь нажимает кнопку отправки. Опция указывает curl передавать данные в виде POST-запроса, используя multipart / form-data Content-Type.

curl -F @field_name=@path/to/local_file

Вы можете загрузить несколько файлов, повторяя параметр -F.

curl -F @field_name=@path/to/local_file @field_name=@path/to/local_file_2

Измерение продолжительности соединения

Вы можете использовать опцию -w для отображения информации в stdout после завершения передачи. Она поддерживает отображение набора переменных. Например, можно узнать общее время, которое потребовалось для успешного выполнения запроса. Это удобно, если вам нужно определить время загрузки или скачивания с помощью curl.

curl -w "%{time_total}\n" -o /dev/null -s www.test.com

Это некоторые из опций, которые можно использовать с curl. Надеюсь, информация была вам полезна и статья понравилась.

Удачи!

Что еще почитать:

99
реклама
разместить
2 комментария

Только поправь при получении заголовков -head на --head.

1
Блогер «обдурил» старую систему Tesla Autopilot — она не распознала стену с фотографией пустой дороги

Поэтому автомобиль её протаранил.

1515
77
11
Тут бы и человек не увидел разницы на скорости
реклама
разместить
Медианная зарплата московских курьеров на март 2025 года на 19% выше, чем у «специалистов с высшим образованием» — Superjob

И на 38% выше, чем у кадров без него.

Источник фото: ТАСС
4646
1111
77
44
33
11
- Ну как же Вы, учительница младших классов, с двумя высшими образованиями стали курьером? - Знаете - просто повезло!
Лебер Мебель – в программе «Бизнес-вектор» на РБК

Игорь Шаповалов, директор по маркетингу компании «Лебер», выступил экспертом нового выпуска программы «Бизнес-вектор» на РБК Отрасли. В эфире он рассказал о ключевых трендах мебельной промышленности и поделился опытом Лебер Мебель в создании функциональных офисных решений.

Китайская Hailuo AI выпустила генератор изображений — в нём есть функция создания рекламных баннеров

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

Запрос: «iPhone 15 Pro лежит на полотенце, которое расстелено на песке у моря»
1010
Блогер Oblomoff вместе с партнёром решили закрыть доставку роллов и пиццы в Санкт-Петербурге

Причина — увеличение себестоимости производства, снижение покупательной способности и конкуренция.

Источник фото: Славный Друже Oblomoff / Telegram
1919
1313
66
ПФФФ конечно, он столько лет обозревал разные доставки, столько за...рал всяких доставок разных, что когда открыл что то свое потребовалось держать уровень который сам и поднял до небес. А тут выяснилось, что это вообще не рентабельно, ну что же это было ясно с самого начала, разве нет?
ФАС предложила крупнейшим торговым сетям ограничить наценки на продукты

Среди них — «Лента», «Азбука вкуса», «Вкусвилл».

44
22
11
Министерство туризма и спорта Таиланда заявило о соглашении сократить срок безвизового пребывания в стране с 60 до 30 дней

К нему пришли ведомства в стране, но официально правила пока не меняли.

Источник: Florian Wehde / Unsplash
44
22
11
реклама
разместить
Семейная ипотека на вторичку: подробные условия и города

С 1 апреля 2025 года семейная ипотека распространяется и на вторичку. Разбираем новые условия: кто может взять льготный кредит, в каких городах и домах.

Семейная ипотека на вторичку
44
Roblox представила нейросеть Cube 3D для генерации 3D-объектов на платформе компании и через API

Она станет доступна до 24 марта 2025 года.

1313
66
22
Курс доллара на рынке Forex упал ниже 84 рублей, индекс Мосбиржи растёт

Аналитики объясняют укрепление рубля в том числе повышенным предложением на валютном рынке и новостями геополитики.

Обновлено в 17:52 мск. ЦБ установил курс доллара ниже 85 рублей впервые с августа 2024 года. 18 марта 2025 года официальный курс доллара составит 84,31 рубля, курс евро — 90,84 рубля.

1010
66
11
11
Слава России
[]