перейти к содержанию

Что такое cURL и как его использовать? Подробное руководство для начинающих

Независимо от того, являетесь ли вы разработчиком программного обеспечения, системным администратором или техническим энтузиастом, скорее всего, вы в какой-то момент сталкивались с cURL. Интересно, что представляет собой этот вездесущий инструмент? Вы пришли в нужное место!

В этом руководстве мы начнем с самых основ — понимания того, что такое cURL, как он возник, какую проблему он решает, а затем углубимся в то, как вы можете эффективно его использовать на практических примерах.

К концу вы получите прочные базовые знания об этом мощном инструменте командной строки, чтобы начать заниматься керлингом как профессионал!

Краткая история cURL

Начнем с самого начала.

cURL впервые появился в 1997 году и был создан Дэниелом Стенбергом для облегчения передачи данных по различным сетевым протоколам. Тогда он назывался «HTTP Get» и был ориентирован исключительно на HTTP-запросы для получения данных.

Дэниела мотивировала необходимость в инструменте командной строки, который мог бы упростить загрузку данных без сложного кода. В то время это было особенно полезно для сообществ разработчиков.

Первая версия поддерживала FTP наряду с HTTP, впоследствии были добавлены дополнительные протоколы. К 1998 году проект был переименован в cURL, чтобы отразить более широкую поддержку протокола.

За последние 25 с лишним лет cURL стал повсеместным — сегодня он предустановлен практически в каждой операционной системе! Настоящее достижение.

Интересный факт: имя cURL не является аббревиатурой. Буква «c» обозначает клиента, а «URL» указывает на то, что он осуществляет переводы через Интернет!

cURL против Wget – в чем разница?

Если вы раньше пробовали передачу данных из командной строки, возможно, вы слышали о GNU Wget. Это аналогичный инструмент передачи данных через Интернет, который появился на несколько лет раньше cURL.

Так в чем же ключевое различие между cURL и Wget?

Хотя оба могут передавать данные с помощью HTTP и FTP, существуют некоторые существенные различия:

завитьWget
Поддерживает более широкий набор протоколов — SFTP, SCP, TFTP, TELNET, DICT, LDAP.В первую очередь разработан для HTTP/HTTPS и FTP.
Используется для тестирования API, автоматизации и отладки.Сосредоточьтесь на зеркалировании и загрузке полных сайтов.
Активное развитие и поддержкаВ последнее время серьезных обновлений нет

В двух словах:

  • cURL более универсален для передачи, а Wget превосходно справляется с крупномасштабным зеркалированием сайтов.
  • За cURL стоит активное сообщество, в то время как разработка Wget застопорилась.

Таким образом, cURL имеет более широкую поддержку протокола и активно развивается!

Для чего используется cURL?

Теперь, когда мы поняли историю и происхождение cURL, давайте посмотрим, почему он так популярен среди разработчиков и системных администраторов даже сегодня.

Некоторые из наиболее распространенных случаев использования cURL включают в себя:

  • Передача данных по таким протоколам, как HTTP, FTP, LDAP, MQTT, POP3, SMTP, Telnet и т. д.
  • Выполнение API-вызовов веб-API — cURL позволяет легко тестировать REST и SOAP API.
  • Автоматизация – cURL можно использовать для сценариев повторяющихся задач, таких как передача данных.
  • Веб-скрапинг – извлечение данных с веб-сайтов с помощью скриптов с использованием cURL.
  • Отладка — проверка заголовков запросов/ответов во время разработки и тестирования.
  • Загрузка файлов на удаленные серверы через SFTP, FTP и т.д.
  • Загрузка данных и файлов на веб-серверы и API.

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

протоколПрименение
HTTP / HTTPSДоступ к веб-сайтам и API
FTP/SFTPПередача файлов
IMAP/POP3/SMTPПротоколы, связанные с электронной почтой
MQTTПодключение к Интернету вещей и устройствам обмена сообщениями
LDAPЗапросить каталоги LDAP
TFTPПередача файлов через TCP/UDP

Благодаря своей повсеместности вы можете быть уверены, что cURL доступен в любой современной операционной системе или платформе, которую вы используете.

Далее, давайте запачкаем руки и посмотрим на cURL в действии!

Установка CURL

Скорее всего, cURL уже установлен в вашей системе. Вы можете проверить, запустив:

curl --version

При этом будет распечатана установленная версия cURL, если она доступна.

Если он не установлен, используйте менеджер пакетов вашей операционной системы для установки cURL:

  • Linux: Установить с помощью встроенного менеджера пакетов – apt, yum, zypper, и т.д.
  • Windows: Загрузите двоичные файлы с веб-сайта cURL или воспользуйтесь менеджером пакетов, например Chocolatey.
  • MacOS: Используйте доморощенный – brew install curl

Вот и все — вы готовы начать использовать cURL!

Как использовать cURL в командной строке

cURL использует простой синтаксис командной строки для передачи данных с сервера или на сервер.

Базовый формат:

curl [options] [URL]

Давайте рассмотрим некоторые распространенные примеры использования cURL.

1. Отправьте GET-запрос

Чтобы отправить запрос GET, передайте URL-адрес после curl:

curl https://example.com

Это выполнит запрос к URL-адресу и выведет тело ответа на стандартный вывод.

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

curl -o response.txt https://example.com

2. Отправьте POST-запрос

Чтобы отправить POST-запрос с данными, используйте команду -d or --data опции:

curl -d ‘name=John&age=25‘ https://example.com/form

Это отправит данные name=John&age=25 К URL-адресу.

Вы также можете указать данные из файла, используя -d @file.

3. Установите заголовки запросов

Чтобы установить собственный заголовок, используйте -H "Header: Value":

curl -H "Content-Type: application/json" https://example.com

Вы можете установить несколько заголовков, передав -H много раз.

4. Следуйте перенаправлениям

По умолчанию cURL не следует перенаправлениям. Чтобы указать cURL следовать перенаправлениям, используйте -L:

curl -L https://example.com

Теперь cURL будет следовать за любыми кодами состояния перенаправления 301, 302 или другими.

5. Загрузите файл

Чтобы загрузить файл по URL-адресу, используйте -o чтобы указать имя выходного файла:

curl -o example.zip https://example.com/example.zip

Это загрузит файл и сохранит его как example.zip.

6. Лимитная ставка

Вы можете ограничить скорость передачи, используя --limit-rate:

curl --limit-rate 200k https://example.com

Это ограничит скорость загрузки до 200 КБ/с.

7. Извлекайте только заголовки

Чтобы получить только заголовок запроса без загрузки тела, используйте -I or --head:

curl -I https://example.com

8. Запросы на отладку

Чтобы увидеть полные заголовки запроса и ответа, используйте -v:

curl -v https://example.com

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

…(примеры сокращены для краткости)

Здесь рассматриваются некоторые из наиболее распространенных вариантов использования cURL. Полный список содержит более 200 вариантов – см. curl --help для получения подробной информации обо всех доступных вариантах.

Теперь давайте рассмотрим, как использовать cURL в некоторых реальных случаях.

Использование cURL для типичных реальных задач

Хотя cURL чаще всего используется разработчиками для тестирования API, он может упростить многие повторяющиеся задачи.

Вот несколько примеров использования cURL для распространенных сценариев:

Автоматизируйте задачи передачи данных

Для повторяющихся задач передачи данных, таких как резервное копирование, вы можете автоматизировать работу cron, используя cURL вместо специального сценария.

Например, ежедневное резервное копирование файлов на SFTP-сервер:

# cron entry to run at 1 AM daily
0 1 * * * curl -u user:pass -T /path/to/files sftp://backup.example.com/

Тестирование конечных точек REST API

cURL позволяет быстро тестировать REST API без необходимости писать код.

Чтобы отправить данные JSON в API:

curl -X POST -H "Content-Type: application/json" -d ‘{"name":"John"}‘ https://api.example.com/users

Чтобы получить доступ к аутентифицированному API, передайте токен доступа:

curl -H "Authorization: Bearer <token>" https://api.example.com/users

Это избавит вас от необходимости писать код тестирования для ранних итераций API.

Загрузка файлов с удаленных серверов

Хотите быстро загрузить файл с FTP или SFTP-сервера? cURL позволяет вам легко это сделать:

# Download via FTP 
curl -u user:pass -o myfile.zip ftp://example.com/files/myfile.zip

# Via SFTP
curl -u user:pass sftp://example.com/path/to/file

Нет необходимости использовать отдельный FTP/SFTP-клиент для простой передачи.

Отправка веб-форм

Вам нужно автоматизировать отправку форм для тестирования? cURL позволяет отправлять данные формы POSTing:

curl -d ‘[email protected]‘ https://example.com/subscribe

Это отправляет форму с заданными данными.

Получить данные веб-сайта

Сочетание cURL с инструментом синтаксического анализа, например grep, позволяет извлекать информацию с веб-сайтов:

curl https://example.com | grep -Po ‘(?<=<title>)[^<]+‘

Это возвращает содержимое внутри <title> тег веб-сайта.

Как видите, cURL может упростить многие распространенные задачи, связанные с передачей данных и веб-API. Варианты использования практически безграничны!

Зачем использовать cURL вместо API и библиотек разработчиков?

Хотя в большинстве случаев использования cURL можно реализовать, написав код с использованием таких библиотек, как Python Requests, вот некоторые преимущества непосредственного использования cURL:

  • Никаких зависимостей – cURL работает через простой интерфейс командной строки и не имеет внешних зависимостей. API требуют управления зависимостями и языковыми версиями.
  • вездесущность – Скорее всего, cURL уже установлен в большинстве систем, с которыми вы столкнетесь. API требуют настройки среды выполнения.
  • Простота в использовании – Простые команды против написания кода. Кривая обучения ниже при использовании cURL для выполнения простых задач.
  • Портативность – Команды cURL работают в любой операционной системе. Код, использующий библиотеки, должен быть переносимым между платформами.
  • Интерактивное – Легко тестировать запросы и выполнять отладку в интерактивном режиме через CLI. Кодирование и тестирование включают в себя циклы редактирования-компиляции-выполнения.

Таким образом, хотя библиотеки разработчиков обеспечивают большую структуру, cURL должен быть вашим помощником для быстрых задач, отладки и автоматизации!

Советы и рекомендации по расширенному использованию cURL

Давайте завершим это руководство некоторыми профессиональными советами:

  • Используйте перенаправление вывода cURL -o для загрузки файлов или сохранения тела ответа на диск.
  • Проходить -I or --head для выполнения запросов HEAD и просмотра только заголовков.
  • Используйте --trace-ascii для регистрации запросов в файл отладки для диагностики проблем.
  • Chron и bash могут помочь запланировать и автоматизировать cURL.
  • Установить -w флаг, чтобы настроить вывод и показывать только то, что вам нужно.
  • Сжимайте запросы с помощью --compress для экономии пропускной способности.

На этом я завершаю свое подробное руководство по пониманию cURL и его использованию для повседневных нужд передачи данных! Вот некоторые ключевые выводы:

  • cURL — универсальный инструмент командной строки для передачи данных с использованием различных сетевых протоколов.
  • Его можно использовать для автоматизации, тестирования API, отладки, загрузки файлов, отправки форм и многого другого.
  • cURL имеет обширный набор опций для настройки запросов в соответствии с вашими потребностями.
  • Предпочитайте cURL библиотекам разработчиков из-за быстрого выполнения задач, портативности и простоты использования.
  • Он предустановлен на большинстве современных операционных систем и платформ.

Я надеюсь, что это руководство дало вам прочную основу для эффективного применения cURL. Удачного керлинга!

Присоединяйтесь к беседе

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *