Что такое curl: Что такое CURL?

Содержание

Что Такое Curl и Как работает Эта Команда

VPS

Дек 08, 2020

Olha L.

4хв. читання

Что такое Curl? Curl — это сокращение от “Client URL”. Утилита доступна в большинстве систем на основе Unix и предназначена для проверки подключения к URL-адресам. Кроме того команда Curl — отличный инструмент передачи данных. Давайте же узнаем, как ею пользоваться. 

Команда Curl поддерживает следующий список протоколов:

  • HTTP и HTTPS
  • FTP и FTPS
  • IMAP и IMAPS
  • POP3 и POP3S
  • SMB и SMBS
  • SFTP
  • SCP
  • TELNET
  • GOPHER
  • LDAP и LDAPS
  • SMTP и SMTPS

Это наиболее важные поддерживаемые протоколы, но есть и другие. Curl работает на libcurl, которая является бесплатной библиотекой для передачи URL на стороне клиента.

Прокачайте ваш проект, воспользовавшись скидками на VPS-хостинг в Hostinger! Большой выбор планов, как для учебных, так и для крупных коммерческих проектов.

К предложению

Оглавление

Проверка Версии Curl

Прежде чем мы начнём работать с Curl, нам нужно войти в наш VPS. Если вам нужна помощь, ознакомьтесь с этим руководством по SSH.

Сначала давайте проверим её доступною версию, с помощью следующей команды:

curl --version

В выводе вы должны увидеть версию и список поддерживаемых протоколов. Теперь мы можем взглянуть на некоторые примеры команд Curl.

Основной Синтаксис Команды Curl

Итак, давайте узнаем, как пользоваться утилитой. Основной синтаксис Curl выглядит следующим образом:

curl [OPTIONS] [URL]

Самый простой пример использования Curl — для отображения содержимого страницы. Приведённая ниже команда отобразит домашнюю страницу testdomain.com.

curl testdomain.com

Эта команда отобразит полный исходный код домашней страницы домена. Если протокол не указан, Curl интерпретирует его как HTTP.

Команда Curl для Работы с Файлами

Команды Curl могут загружать файлы из удалённой локации. Есть два способа это сделать:

  • -O сохранит файл в текущем рабочем каталоге с тем же именем, что и у удалённого;
  • -o позволяет указать другое имя файла или местоположение.

Вот пример:

curl -O http://testdomain.com/testfile.tar.gz

Приведённая выше команда сохранит файл как testfile.tar.gz.

curl -o newtestfile.tar.gz http://testdomain.com/testfile.tar.gz

А эта команда сохранит его как newtestfile.tar.gz.

Если по какой-либо причине загрузка будет прервана, вы можете возобновить её с помощью следующей команды:

curl -C - -O  http://testdomain.com/testfile.tar.gz

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

curl -O http://testdomain.com/testfile.tar.gz -O http://mydomain.com/myfile.tar.gz

Если вы хотите загрузить несколько файлов с нескольких URL, перечислите их все в файле. Команды Curl могут быть объединены с xargs для загрузки различных URL-адресов.

Например, если у нас есть файл allUrls.txt, который содержит список всех URL-адресов для загрузки, то приведённый ниже пример выполнит загрузку всех файлов с этих URL.

xargs –n 1 curl -O < allUrls.txt

Команды Curl для HTTP

Curl также можно использовать c прокси-сервером. Если вы находитесь за прокси-сервером, прослушивающим порт 8090 на sampleproxy.com, загрузите файлы, как показано ниже:

curl -x  sampleproxy.com:8090 -U username:password -O http:// testdomain.com/testfile.tar.gz

В приведённом выше примере вы можете выбросить -U username:password, если прокси-сервер не требует метода аутентификации.

Типичный HTTP-запрос всегда содержит заголовок. Заголовок HTTP отправляет дополнительную информацию об удалённом веб-сервере вместе с фактическим запросом. С помощью инструментов разработчика в браузере вы можете посмотреть сведения о заголовке, а проверить их можно с помощью команды curl.

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

curl -I www.testdomain.com

Используя curl, вы можете сделать запрос GET и POST. Запрос GET будет выглядеть следующим образом:

curl http://mydomain.com

А вот пример запроса POST:

curl –data “text=Hello” https://myDomain.com/firstPage.jsp

Здесь text=Hello — это параметр запроса POST. Такое поведение похоже на HTML-формы.

Вы также можете указать несколько методов HTTP в одной команде curl. Сделайте это, используя опцию –next, например:

curl –data “text=Hello” https://myDomain.com/firstPage.jsp --next https://myDomain.com/displayResult.jsp

Команда содержит запрос POST, за которым следует запрос GET.

Каждый HTTP-запрос содержит агент пользователя, который отправляется как часть запроса. Он указывает информацию о браузере клиента. По умолчанию запрос содержит curl и номер версии в качестве информации об агенте пользователя. Пример вывода показан ниже:

“GET / HTTP/1.1” 200 “_” ”curl/7/29/0”

Вы можете изменить дефолтную информацию об агенте пользователя, используя следующую команду:

curl -I http://mydomain. com –-user-agent “My new Browser”

Теперь вывод будет выглядеть так:

“GET / HTTP/1.1” 200 “_” ”My new Browser”

Команда Curl и Cookies

Утилиту можно использовать для проверки того, какие файлы cookie загружаются по URL. Допустим вы зашли на https://www.samplewebsite.com, вы можете вывести и сохранить файлы cookie в файл, а затем получить к ним доступ, используя команду cat или редактор Vim.

Вот пример такой команды:

curl --cookie-jar Mycookies.txt https://www.samplewebsite.com /index.html -O

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

curl --cookie Mycookies.txt https://www. samplewebsite.com

Curl и FTP

Утилита поддерживает FTP! Вы можете использовать её для загрузки файлов с удалённого сервера.

curl -u username:password -O ftp://sampleftpserver/testfile.tar.gz

В приведённой выше команде ftp://sampleftpserver — это FTP-сервер, который принимает соединения. Вы можете не указывать имя пользователя и пароль для анонимных FTP-соединений. Введите команду и посмотрите, как заполняется индикатор выполнения.

Вы также можете загружать файлы с помощью этой команды:

curl -u username:password -T testfile.tar.gz ftp://sampleftpserver

Опять же таки, мы можем пропустить имя пользователя и пароль для анонимных FTP-соединений.

Ограничение Скорости Скачивания

Скачивая или загружая данные с помощью Curl, вы не можете знать, насколько большим будет вывод. Вы можете ограничить скорость скачивания, чтобы убедиться, что Curl не ограничивает пропускную способность канала. 

Команда ниже ограничивает скорость скачивания до 100К:

curl --limit-rate 100K http://testdomain.com/samplefile.tar.gz -O

Выводы

В этом руководстве мы рассказали вам, что такое curl, а также, как использовать эту мощную утилиту для скачивания и загрузки данных. Если вы работаете с командной строкой, то вам стоит научиться пользоваться этой командой. На самом деле Curl — это не просто утилита командной строки для Linux или Windows. Она имеет много вариантов применения и поддерживает разные протоколы.

И помните, если вам нужна помощь или вы хотите узнать более сложные команды Curl, вы всегда можете обратиться к руководству, которое должно быть во всех версиях Unix: 

man curl

Мы надеемся, что это руководство станет для вас отправной точкой в использовании этой утилиты. И не забудьте рассказать нам о своём опыте работы с ней в комментариях! 

Ольга вже близько восьми років працює менеджером у сфері IT, три з яких вона займається SEO. Написання технічних завдань та інструкцій — один з її основних обов’язків. Її хобі — дізнаватися щось нове і створювати цікаві та корисні статті про сучасні технології, веброзробку, мови програмування, пошукову оптимізацію сайтів та багато іншого.

Більше статей від Olha L.

10 команд curl, которые вам могут пригодиться

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

Перевели статью со списком часто используемых команд curl для протоколов HTTP/HTTPS. Это не замена официального руководства по 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 --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

Рассказываем об IT-бизнесе, технологиях и цифровой трансформации

Подпишитесь в соцсетях или по email

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

Удачи!

Оригинал статьи на VC.ru.

Что такое команда cURL? [+ Как использовать]

Как действующий (или начинающий) веб-разработчик, есть большая вероятность, что вы знакомы с HTTP-запросами, особенно при взаимодействии с API.

Платформы API могут быть полезны для автоматизации вызовов запросов и создания более сложных запросов. Но иногда, независимо от того, выполняете ли вы одноразовый тест или какую-то отладку, вы хотите запустить быстрый HTTP-запрос со своего терминала.

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

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

Что такое команда cURL?

URL-адрес клиента (cURL, произносится как «завиток») — это инструмент командной строки, который обеспечивает обмен данными между устройством и сервером через терминал. Используя этот интерфейс командной строки (CLI), пользователь указывает URL-адрес сервера (место, куда он хочет отправить запрос) и данные, которые он хочет отправить на этот URL-адрес сервера.

Инструменты API, такие как Postman и Insomnia, предоставляют интерактивный пользовательский интерфейс (UI), который позволяет выполнять различные формы запросов к URL-адресам для получения и обработки запросов. Команда cURL делает то же самое, только в вашем терминале. cURL работает на Linux, Mac и Windows.

Команда cURL использует клиентскую библиотеку передачи URL-адресов libcURL. Эта библиотека поддерживает множество различных протоколов передачи, включая HTTPS, SMTP и FTP. Он также позволяет включать файлы cookie, устанавливать прокси-серверы и добавлять учетные данные для аутентификации при выполнении запросов.

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

Как использовать cURL

Вы знаете, что такое команда cURL, но как она работает?

cURL предустановлен в Windows и macOS — в противном случае вы можете загрузить пакет с веб-сайта cURL.

Команда cURL получает URL-адрес для передачи или получения данных вместе с другими параметрами для различных целей.

Синтаксис команды cURL:

cURL [параметры] [URL]

В этой статье для объяснения различных способов использования cURL используется JSONPlaceholder Fake API. Этот фиктивный API содержит различные примеры путей для выполнения запросов.

Запрос данных из источника

С помощью метода GET с cURL можно быстро запрашивать данные из источника или API. Вот простая команда cURL, которая выполняет запрос GET :

cURL https://jsonplaceholder.typicode.com/todos/1

Без передачи каких-либо флагов или параметров команда cURL по умолчанию выполняет запрос GET к указанному URL-адресу. Команда возвращает тело ответа, отправленное из API, которое в вашем терминале будет выглядеть так:

.
{
«идентификатор пользователя»: 1,
«идентификатор»: 1,
«title»: «delectus aut autem»,
«завершено»: ложь
}

Это похоже на результаты таких платформ, как Postman, показанные ниже:

Кроме того, вы можете включить параметры и значения для использования другого метода запроса с помощью команды cURL. Например, вы можете использовать -X (дефис и X в верхнем регистре) с методом запроса. Параметр -X является псевдонимом для —request .

Напишите команду следующим образом:

cURL -X [METHOD] [URL]

Метод по умолчанию GET в первой команде cURL выше аналогичен следующему:

cURL -X GET https ://jsonplaceholder.typicode.com/todos/1

Отправка данных в источник

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

Чтобы выполнить запрос POST к URL-адресу, используйте параметр -X и передайте метод POST в качестве значения. Но как насчет добавления данных с запросом? Вы используете другой вариант, -d (дефис и нижний регистр d), который является псевдонимом для —данные .

Вы можете использовать два популярных формата данных при отправке данных с запросом: application/x-www-form-urlencoded или application/json . Далее мы рассмотрим оба этих метода.

application/x-www-form-URLEncoded

Если вы не укажете нужный формат, cURL по умолчанию использует application/x-www-form-urlencoded . Вот пример использования этого формата и поддельного API JSON:

cURL -X POST -d «name=cURL&type=article» https://jsonplaceholder.typicode.com/posts

Эта команда отправляет запрос POST на https://jsonplaceholder.typicode.com/posts и передает закодированные данные URL «name= cURL &type=article» который является ключом имени со значением cURL и ключом типа со значением статьи.

Для запросов POST , сделанных к JSON Fake API, телом ответа является объект данных, отправленный ему вместе со свойством ID.

Вот тело ответа от API после ввода команды:

{
«имя»: «cURL»,
«тип»: «статья»,
«идентификатор»: 101
}

application/JSON

С помощью cURL вы также можете отправить строковый объект JSON следующим образом:

cURL -X POST -d ‘{«name»: «cURL», «type»: «article»}’ https ://jsonplaceholder.typicode.com/posts

Как описано выше, данные в этом запросе отправляются в формате application/x-www-form-urlencoded . Вот результат API:

{
«{\»название\»: \»cURL\», \»тип\»: \»статья\»}»: «»,
«идентификатор»: 101
}

API понимает, что данные запроса находятся в формате данных в кодировке URL, поэтому интерпретирует их не так, как вы ожидаете. Вы должны указать, что это формат данных JSON, используя параметр -H (дефис с заглавной буквой H), псевдоним для —header и передав заголовок Content-Type следующим образом:

cURL -X POST -d ‘{«name»: «cURL», «type»: «article»}’ -H «Content-Type: application/json» https://jsonplaceholder. typicode.com/posts

Теперь вы получаете правильное тело ответа от API:

{
«имя»: «cURL»,
«тип»: «статья»,
«идентификатор»: 101
}

Вместо ввода строки JSON в терминале вы можете указать файл JSON, который команда cURL будет использовать для параметра данных. Например, предположим, что у вас есть файл с именем data.json со следующим содержимым:

{
«имя»: «cURL»,
«тип»: «статья»
}

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

{
«имя»: «cURL»,
«тип»: «статья»
}

Удаление ресурсов на сервере

Вы можете отправлять запросы на удаление в API, используя метод DELETE и команду cURL. URL-адрес и данные, которые вы предоставляете в этом запросе, зависят от конфигурации API.

Для JSON Fake API вы указываете путь к ресурсу и метод DELETE следующим образом:

cURL -X DELETE https://jsonplaceholder. typicode.com/posts/1

Тело ответа представляет собой пустой объект:

Лучше всего подходит для обновления существующих ресурсов с помощью API

Используя метод PUT и команду cURL, вы можете выполнять запросы «обновления» к API, которые изменяют существующий ресурс. Для JSON Fake API вы указываете путь к ресурсу и метод PUT , а также передаете некоторые данные для обновления ресурса.

Здесь можно использовать любой формат данных. В этом примере используется application/json :

cURL -X PUT -d ‘{«name»: «json», «type»: «post»}’ -H «Content-Type: application/json» https://jsonplaceholder.typicode.com/posts/1

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

Приведенный выше код возвращает тело ответа:

{
«имя»: «json»,
«тип»: «пост»,
«идентификатор»: 1
}

Протоколы и форматы cURL

По умолчанию cURL использует протокол HTTP. Вот некоторые другие протоколы и форматы, которые может использовать cURL:

Протокол передачи файлов

Протокол передачи файлов (FTP) передает файлы с сервера на клиент. Используйте этот протокол с cURL для загрузки таких файлов:

cURL -T [выбранный-файл] «ftp://[целевой-назначение]»

cURL является хорошей заменой стандартному FTP-клиенту.

Простой протокол передачи почты

Простой протокол передачи почты (SMTP) предназначен для отправки данных на SMTP-сервер. Эти данные состоят из текста, который вы отправляете, отправителя и получателя. Выглядит так:

cURL smtp://[smtp-sever] —mail-from [отправитель] —mail-rcpt \ [получатель] —upload-file [mail-content-file]

Словарь Сетевой протокол

Сетевой протокол словарей (DICT) обеспечивает доступ к словарям. Используя его с cURL, вы запускаете следующую команду:

cURL «dict://dict.org/d:hello»

С помощью этой команды вы получаете результат, показывающий выбранный словарь и значение « привет» из словаря.

Дополнительные протоколы можно найти на справочной странице cURL.

Общие варианты использования cURL

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

Быстрое тестирование API из терминала

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

Загрузка изображений и файлов на устройство

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

Например, вот URL-адрес логотипа Google. Используя cURL, вы можете загрузить изображение следующим образом:

cURL https://www.google.com/images/branding/googlelogo/2x/googlelogo_light_color_272x92dp. png > google-logo.png

Используя cURL и URL-адрес изображения возвращает двоичные данные изображения. Сохранив необработанные данные изображения в файле изображения (с расширением .png, соответствующим расширению исходного изображения), вы можете сохранить изображение на своем устройстве.

Сохранение содержимого URL-адреса

Как и при загрузке изображений, вы также можете сохранить содержимое URL-адреса (например, веб-страницы) в файл. Вот пример для главной страницы Google:

cURL -o google.html https://www.google.com

Это сохраняет исходный код главной страницы Google в файл с именем google.html.

Заставьте cURL работать на вас.

cURL — это инструмент командной строки, который позволяет запрашивать и передавать данные по URL-адресу по различным протоколам. Это дает вам гибкость и контроль над URL-адресами на терминале.

Использовать cURL на терминале просто, но не каждому пользователю будет интуитивно понятно. Указав URL-адрес и необходимые параметры, вы можете запрашивать и загружать данные с URL-адресов, передавать данные на URL-адреса и многое другое.

Что такое cURL и как его использовать?

История cURL

Еще в темные времена 90-х, когда все еще пользовались инструментами командной строки, Дэниел Стерберг хотел разработать простой сценарий IRC, который конвертировал бы валюты для участников чата. В 1997 было не так много вариантов для создания основы для доставки данных по интернет-протоколу, поэтому Httpget, несколько сотен строк кода для передачи на основе HTTP, стал генезисом для cURL. cURL HTTP был впервые назван в честь своего основания HTTPGET 1.0.

Несколько месяцев спустя была разработана поддержка FTP, и от названия пришлось отказаться. Теперь он назывался urlget 2.0. После нескольких обновлений, 30 марта 1998 года, имя было снова изменено на уже хорошо известное cURL 3.0.

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

Что делает cURL?

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

Примером использования cURL является отладка. Использование «curl -v https://oxylabs.io» показывает подробный вывод одного запроса на подключение, включая такие сведения, как пользовательский агент, данные рукопожатия, порты и т. д.

Существует слишком много возможных параметров команды cURL, чтобы их можно было перечислить. и объяснить. К счастью, «curl –help» — это параметр, в котором перечислены все возможности параметров команды cURL с краткими пояснительными комментариями. Хотя без каких-либо знаний о том, как использовать cURL, список будет не таким уж полезным.

Как использовать cURL?

Почти любой человек с относительно новой операционной системой может использовать cURL, поскольку он поставляется по умолчанию в Windows, MacOS и большинстве дистрибутивов Linux. Для более старых систем, таких как любая операционная система Windows до 10, может потребоваться загрузка и установка cURL.

Чтобы использовать cURL, просто откройте терминал и введите «curl». Если все в порядке, вывод должен предложить использовать «curl –help». «Помощь», как упоминалось ранее, перечислит все возможности команды. Команду cURL можно объединить, добавив перечисленные флаги и введя URL-адрес. Флаги могут быть как короткими (например, -o, -L и т. д.), так и длинными (например, –verbose). Эти флаги различаются использованием одинарных или двойных дефисов.

Использование cURL

cURL — это мощный инструмент для передачи данных через интернет-протоколы. Детальное описание всех возможных вариантов использования cURL было бы практически невозможным. Хотя есть несколько распространенных вариантов использования, которые мы рассмотрим подробнее. Поскольку cURL изначально разрабатывался для HTTP, мы можем отправлять все обычные запросы (POST, GET, PUT и т. д.).

Отправка запросов GET

Чтобы отправить запрос GET с использованием cURL, нам нужно будет использовать команду curl из командной строки или терминала, за которой следует URL-адрес веб-сайта. Например, чтобы отправить запрос GET на URL-адрес «https://ip.oxylabs.io», нам нужно будет использовать следующую команду:

 curl https://ip.oxylabs.io 

Как только мы запустим эту команду, она отправит запрос GET на веб-сайт: ip.oxylabs.io. И распечатайте ответ в терминале. Если он работает успешно, мы увидим наш текущий IP-адрес в качестве вывода.

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

Для отправки POST-запроса на URL-адрес используется флаг -d (или –data). Большинство веб-сайтов будут отклонять такие запросы от неавторизованных пользователей, поэтому мы будем использовать поддельный API для целей тестирования.

 Curl-d "name=something&value=somethingelse"https://jsonplaceholder.typicode.com/posts/ 

Отправка такого запроса должна вернуть:

 {
  "имя": "что-то",
  "значение": "что-то еще",
  "идентификатор": 101
} 

Здесь есть несколько моментов:

  • curl начинает нашу команду

  • -d — флаг «данные» для запросов POST

  • Кавычки («») начинают наше содержание. Обратите внимание, что некоторые операционные системы принимают только одинарные кавычки, другие — двойные.

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

Мы также можем отправлять POST-запросы в формате JSON, хотя потребуются дополнительные параметры, чтобы сообщить серверу, что мы отправляем JSON. cURL мало интерпретирует от имени пользователя и отправляет заголовок Content-Type по умолчанию application/text , поэтому мы должны добавить заголовок Content-Type: application/json сами .

 curl -H "Content-Type: application/json" --data "{\"data\":\"some data\"}" https://jsonplaceholder.typicode.com/posts/ 

Сохранение содержимого URL в файл

Curl также позволяет скачивать и загружать файлы в локальное хранилище. Процесс довольно прост. Нам просто нужно будет передать пару дополнительных параметров. Допустим, мы хотим сохранить наш IP-адрес в текстовом файле с веб-сайта https://ip. oxylabs.io.

Нам нужно будет только запустить следующую команду:

 curl -o response.txt https://ip.oxylabs.io 

Обратите внимание, что мы передаем новый аргумент -o, который является краткой формой —output. Мы также упоминаем имя файла response.txt. Как только мы выполним эту команду, curl сделает новый запрос на веб-сайт и соберет наш IP-адрес, а затем загрузит его в текущую папку, создав новый файл response.txt. Если файл уже существует, он будет перезаписан новым содержимым.

После перенаправлений

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

 curl https://google.com 

Наши браузеры сами обрабатывают перенаправления, поэтому мы можем даже не заметить проблему с таким запросом. Тем не менее, если мы отправим cURL для выполнения работы, мы получим уведомление о том, что документ был перемещен при попытке подключения. Чтобы заставить cURL следовать перенаправлениям, мы должны добавить специальный флаг «-L» (аргументы чувствительны к регистру).

 curl -L https://google.com 

Теперь мы должны были получить обычный ответ от Google, поскольку cURL следует за перенаправлением с https://google.com на https://www.google.com/.

Подключение через прокси

cURL можно использовать для подключения к любому месту назначения через прокси. Как и в случае любого другого оператора cURL, URL-адрес, синтаксис и все остальное остаются прежними, за исключением добавленного флага и его атрибутов.

 curl --proxy proxyaddress:port https://jsonplaceholder.typicode.com/ 

Ввод прокси и порта после «-proxy» направит соединение через введенный адрес. Прокси-серверы часто требуют учетных данных, которые можно отправить с помощью флага -U.

 curl --proxy proxy:port -U «имя пользователя:пароль» https://jsonplaceholder.typicode.com/ 

Некоторые веб-сайты сами требуют метод аутентификации, прежде чем они примут любой запрос на подключение. Аналогичный флаг используется для аутентификации сервера: «-u».

 curl -u имя пользователя:пароль https://jsonplaceholder.typicode.com/ 

Подробнее о cURL с прокси можно прочитать в нашем блоге.

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

cURL не только поддерживает несколько протоколов, включая HTTP, HTTPS и DICT (сетевой протокол словаря), но также работает практически на каждой отдельной платформе. В результате cURL становится оптимальным выбором при тестировании связи практически с любого устройства. Единственными требованиями являются наличие командной строки и сетевого подключения.

Тем не менее, преимущества cURL не ограничиваются коммуникационным тестированием, как вы увидите из приведенного ниже краткого списка.

  • Скорость cURL может быть ограничена

  • Это уникальный портативный вариант, поскольку он совместим с большинством операционных систем и подключенных устройств

  • Позволяет легко тестировать конечные точки, чтобы проверить, работают ли они

  • cURL отлично регистрирует ошибки

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