10 команд curl, которые вам следует знать
Команда Mail.ru Cloud Solutions перевела статью, автор которой составил краткий справочник часто используемых команд curl для протоколов HTTP/HTTPS. Это не замена официального руководства по cURL, скорее, краткий конспект.
267K открытий
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:
Игнорирование ошибки неправильных или самоподписанных сертификатов
Когда вы тестируете веб-приложение или API, то в вашем тестовом окружении могут быть самоподписанные или неправильные SSL-сертификаты. По умолчанию curl верифицирует все сертификаты. Чтобы он не выдавал ошибку о неверных сертификатах и устанавливал соединение для тестирования, используйте опцию -k или -insecure.
curl -k https://localhost/my_test_endpoint
Отправка POST-запроса
Иногда для тестирования API нужно отправить какие-либо данные, обычно это делают через POST-запрос. Если вы делаете POST-запрос при помощи curl, то можете отправить данные либо в виде списка имя=значение, либо в виде JSON.
- Запрос в виде списка имя=значение.
curl —data «param1=test1¶m2=test2» http://test.com
- Запрос в виде JSON.
curl -H ‘Content-Type: application/json’ —data ‘<"param1":"test1","param2":"test2">‘ http://www.test.com"param1":"test1","param2":"test2">
Параметр —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"param1":"test1","param2":"test3">
Использование авторизации
API защищено авторизацией по логину-паролю — вы можете передать пару логин-пароль, используя параметр -u или —user. Если просто передать логин, то curl запросит пароль в командной строке. Используете параметр несколько раз — для авторизации на сервер будет передано только последнее значение.
curl -u
Управление резольвом имен
Вы хотите протестировать 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 «%
Это некоторые из опций, которые можно использовать с curl. Надеюсь, информация была вам полезна и статья понравилась.
Что такое команда cURL и примеры ее использования
Что такое cURL? cURL — это сокращение от «Client URL». Данная утилита доступна в большинстве систем на основе Unix и часто используется для получения данных по заданному url или передачи и получения файлов по различным протоколам. Команда cURL поддерживает множество протоколов, сред них:
- HTTP и HTTPS
- FTP и FTPS
- IMAP и IMAPS
- POP3 и POP3S
- SMB и SMBS
- SFTP
- SCP
- TELNET
- GOPHER
- LDAP и LDAPS
- SMTP и SMTPS
Для работы cURL необходима библиотека libcurl, без нее не будет работать cURL. Если данной библиотеки у вас нет и у вас установлена ОС Ubuntu , то установить ее можно при помощи следующих команд:
$ sudo apt update $ sudo apt install libcurl3
если у вас установлена ОС Windows, то вам надо будет скачать библиотеку с сайта curl.haxx.se/download.html
Основной синтаксис cURL выглядит следующим образом:
curl [OPTIONS] [URL]
Вот параметры, которые мы будем использовать при отправке запросов:
- -X, –request- метод HTTP, который будет использоваться.
- -i, –include- Включить заголовки ответа.
- -d, –data- Данные, которые должны быть отправлены.
- -H, –header- Дополнительный заголовок для отправки.
##Проверка версии cURL
$ curl --version
$ curl www.example.com
##POST запрос Иногда для тестирования API нужно отправить какие-либо данные, обычно это делают через POST-запрос. Если вы делаете POST-запрос при помощи curl, то можете отправить данные либо в виде списка имя=значение, либо в виде JSON. Запрос в виде списка имя=значение:
$ curl --data "param1=test1¶m2=test2" http://domain.com
Запрос в виде JSON:
curl -H 'Content-Type: application/json' --data '' http://www.domain.com
Параметр —data эквивалентен -d, оба указывают cURL выполнить HTTP POST-запрос.
##Сохраните вывод cURL в файл Вывод команды cURL может легко сохранить в файл, добавив опцию -o в команде, как показано ниже
$ curl -o website.html https://domain.ru
##Скачивание файла Команды cURL могут загружать файлы из удалённой локации. Есть два способа это сделать: -O сохранит файл в текущем рабочем каталоге с тем же именем, что и у удалённого; -o позволяет указать другое имя файла или местоположение.
Скачать файл и сохранить под оригинальным именем. В этом примере архив filename.tar.gz будет загружен в текущий рабочий каталог.
$ curl -O https://example.com/filename.tar.gz
Скачать файл и сохранить под другим именем:
$ curl -o new_filename.tar.gz https://example.com/filename.tar.gz
Скачать файл надежно через SSH с помощью следующей команды:
$ curl -u user sftp://example.com/path/to/file
Скачать список файлов Можно скачать список файлов, для этого надо создать файл url_list.txt, который содержит список всех URL-адресов для загрузки и запустить следующую команду, которая выполнит загрузку всех файлов с этих URL.
$ xargs –n 1 curl -O < url_list.txt
##Доступ к FTP-серверу Чтобы получить доступ к FTP-серверу с помощью cURL, надо использовать следующую команду:
$ curl ftp://ftp.domain.com --user username:password
cURL будет подключаться к FTP-серверу и выведет список всех файлов и каталогов в домашнем каталоге пользователя Вы можете скачать файл с помощью FTP:
$ curl ftp://ftp.domain.com/filename.zip --user username:password
и загрузить файл на сервер FTP:
$ curl -T filename.zip ftp://ftp.domain.com/ --user username:password
Можно пропустить имя пользователя и пароль для анонимных FTP-соединений.
##Получение заголовков HTTP Если вы хотите посмотреть, какие заголовки отдает сервер, то можно использовать опции -I или -head. Они позволяют получить заголовок без тела документа.
$ curl -I http://example.com
Игнорирование ошибки неправильных или самоподписанных сертификатов
Чтобы он не выдавал ошибку о неверных сертификатах и устанавливал соединение для тестирования, используйте опцию -k или -insecure.
curl -k https://localhost/my_page
Указание типа запроса
Параметры -X или --request позволяют указать тип HTTP-запроса, который используется для сообщения с сервером.
$ curl -X PUT -d 'name=mkyong&email=abc@gmail.com' http://domain.com/user/
если требуется передать JSON данные на сервер, то надо указать заголовок Content-Type: application/json и выполнить следующий запрос:
$ curl -X PUT -H "Content-Type: application/json" -d '' http://domain.com/user/
пример запроса с типом DELETE
$ curl -X DELETE http://domain.com/user/
Запрос с cookies
Для того что бы использовать cookies в запросе нужно сохранить файлы cookie в файл, а затем получить к ним доступ, используя команду cat или редактор Vim. Вот пример запроса который сохранит cookie в файл:
$ curl --cookie-jar Mycookies.txt http://domain.com/ /index.html -O
теперь можно использовать данный файл что бы сделать запрос с cookies:
curl --cookie Mycookies.txt http://domain.com/
Использование авторизации
Если ресурс закрыт авторизацией по логину-паролю — вы можете передать пару логин-пароль, используя параметр -u или --user. Если просто передать логин, то curl запросит пароль в командной строке. Используете параметр несколько раз — для авторизации на сервер будет передано только последнее значение.
$ curl -u https://domain.com/need_auth
11 примеров использование команд cURL в режиме реального времени
cURL - инструмент командной строки для получения или отправки данных с использованием синтаксиса URL.
Если вы работаете в службе поддержки, то должны уметь использовать команды cURL для устранения неполадок веб-приложений. cURL - кроссплатформенная утилита для Windows, MAC и UNIX.
Ниже приведены некоторые часто используемые примеры синтаксиса.
1. Проверка возможности подключения к URL-адресу
Если вы работаете в UNIX-системе и пытаетесь подключиться к внешнему URL-адресу, то сначала проверьте наличие доступа к ресурсу через curl . Для этого используйте следующую команду:
# curl yoururl.com
2. Сохранение вывод URL / URI в файл
Если нужно сохранить содержимое URL или URI в конкретном файле, используйте следующий синтаксис:
# curl yoururl.com > yoururl.html
[root@localhost]# curl 74.125.68.100 >/tmp/google.html
Приведенный выше пример сохранит все содержимое с хоста 74.125.68.100 в файл /tmp/google.html .
3. Показать заголовок запроса и ответа
Если хотите удостовериться, что получаете ожидаемый заголовок запроса и ответа, используйте следующую команду:
# curl -v yoururl.com
[root@localhost ]# curl -v 74.125.68.100 * About to connect() to 74.125.68.100 port 80 (#0) * Trying 74.125.68.100. * Connected to 74.125.68.100 (74.125.68.100) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.29.0 >Host: 74.125.68.100 >Accept: */* >< HTTP/1.1 200 OK4. Загрузить с предельной скоростью
Если нужно узнать, сколько времени требуется для загрузки с определенной скоростью, то используйте следующую команду:
# curl –-limit-rate 2000B# curl –-limit-rate 2000B 74.125.68.1005. Использование прокси для подключения
Если необходимо проверить, можно ли использовать прокси-сервер, примените следующий синтаксис:
# curl --proxyyourproxy:port http://yoururl.com6. Проверка URL-адресас введением заголовка
Для устранения конкретной проблемы можно использовать Curl , чтобы вставить в header свои данные. Рассмотрим следующий пример запроса с Content-Type:
# curl --header 'Content-Type: application/json' http://yoururl.comМы просим curl передать Content-Type в качестве application / json в заголовок запроса.
7. Добавить дополнительный заголовок
Вы можете добавить заголовок к запросу с помощью синтаксиса - header .
# curl –-header “X-CustomHeader: GeekFlare” http://yoururl.com[root@localhost]# curl -v --header "X-CustomHeader: GeekFlare" 74.125.68 * About to connect() to 74.125.68.100 port 80 (#0) * Trying 74.125.68.100. * Connected to 74.125.68.100 (74.125.68.100) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.29.0 >Host: 74.125.68.100 >Accept: */* > X-CustomHeader: GeekFlare >< HTTP/1.1 200 OK8. Открыть только заголовок ответа
Если вы хотите быстро проверить заголовок ответа, то для этого можно использовать следующий синтаксис.
# curl --head http://yoururl.com[root@localhost]# curl -I 74.125.68.100 HTTP/1.1 200 OK Date: Sun, 18 Jan 2015 08:31:22 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=ISO-8859-1 Set-Cookie: NID=67=SpnXKTDUhw7QGakIeLxmDSF; expires=Mon, 20-Jul-2015 08:31:22 GMT; path=/; domain=.; HttpOnly P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for moreinfo." Server: gws X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN Alternate-Protocol: 80:quic,p=0.02 Transfer-Encoding: chunked Accept-Ranges: none Vary: Accept-Encoding [root@localhost ]#9. Подключить HTTPS / SSLURL-адрес и игнорировать любые ошибки SSL -сертификата
Если необходимо получить доступ к https URL-адресу, который выдает ошибку сертификата из-за несоответствия имени хоста, можно использовать следующий синтаксис.
curl --insecure https://yoururl.com10. Подключиться с использованием определенного протокола (SSL / TLS)
Чтобы подключиться к URL- адресу только по протоколу SSL V2 / V3 или TLS ,используйте следующий синтаксис.
Для подключения с использованием SSLV2:
# curl --sslv2 https://yoururl.comДля подключения с использованием SSLV3:
# curl --sslv3 https://yoururl.comДля подключения через TLS:
# curl --tlsv1 https://yoururl.com11. Загрузить файл с FTP-сервера
С помощью cURL можно загрузить файл с ftp-сервера , указав имя пользователя и пароль.
# curl -u user:password -O ftp://ftpurl/style.cssВсегда можно использовать «-v» с любым синтаксисом для вывода в подробном режиме.
Использования cURL онлайн
Да, это возможно. Вы можете выполнить cURL удаленно с помощью следующих инструментов.
Online CURL - компактный инструмент для извлечения URL-адреса онлайн и добавления следующих параметров.--connect-timeout --cookie --data --header --head --location --max-time --proxy --request --user --url --user-agentcURL command line builder–позволяет создать команду cURL, с помощью которой можно ввести информацию в пользовательский интерфейс.
cURL - полезная утилита для устранения проблем с подключением в режиме реального времени.
Вадим Дворников автор-переводчик статьи « 11 cURL Command Usage with Real-Time Example »
Что Такое Curl и Как работает Эта Команда?
Что такое 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. Написання технічних завдань та інструкцій — один з її основних обов'язків. Її хобі — дізнаватися щось нове і створювати цікаві та корисні статті про сучасні технології, веброзробку, мови програмування, пошукову оптимізацію сайтів та багато іншого.
