Что за программа curl

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

221 354 просмотров

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 — идеальная утилита для тестирование API

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

Если никакие аргументы не указаны, то команда 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 — Установка | Основы использования CURL | Работа с API | Запросы с JSON Payload | Парсинг с jq

curl -k https://localhost/my_test_endpoint
Отправка POST-запроса

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

  • Запрос в виде списка имя=значение.

curl —data «param1=test1 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
Использование авторизации

Читайте также:
Lwgame rubar toolbar что это за программа

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

curl -u 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.

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

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

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

curl -w «%n» -o /dev/null -s www.test.com

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

Источник: vc.ru

Что такое команда 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 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, надо использовать следующую команду:

Читайте также:
Программа 1с 8 3 что это

$ 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-запроса, который используется для сообщения с сервером.

если требуется передать 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

Источник: blog-programmista.ru

Команда curl. Синтаксис. Примеры использования

Сurl – утилита командной строки для скачивания и загрузки данных. Она выросла из проекта шведского программиста Даниэля Стенберга. Изначально в середине 90-х, на заре развития Интернета, он разрабатывал бота, который должен был загружать с веб-страницы курсы валют и сообщать пользователям IRC эквивалент шведских крон в долларах США.

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

Синтаксис и опции curl

Синтаксис команды следующий:

curl [ОПЦИИ] [АРГУМЕНТ]

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

-# — отображать простой прогресс-бар во время загрузки;
-0 — использовать протокол http 1.0;
-1 — использовать протокол шифрования tlsv1;
-2 — использовать sslv2;
-3 — использовать sslv3;
-4 — использовать ipv4;
-6 — использовать ipv6;
-A — указать свой USER_AGENT;
-b — сохранить Cookie в файл;
-c — отправить Cookie на сервер из файла;
-C — продолжить загрузку файла с места разрыва или указанного смещения;
-m — максимальное время ожидания ответа от сервера;
-d — отправить данные методом POST;
-D — сохранить заголовки, возвращенные сервером в файл;
-e — задать поле Referer-uri, указывает с какого сайта пришел пользователь;
-E — использовать внешний сертификат SSL;
-f — не выводить сообщения об ошибках;
-F — отправить данные в виде формы;
-G — если эта опция включена, то все данные, указанные в опции -d будут передаваться методом GET;
-H — передать заголовки на сервер;
-I — получать только HTTP заголовок, а все содержимое страницы игнорировать;
-j — прочитать и отправить cookie из файла;
-J — удалить заголовок из запроса;
-L — принимать и обрабатывать перенаправления;
-s — максимальное количество перенаправлений с помощью Location;
-o — выводить контент страницы в файл;
-O — сохранять контент в файл с именем страницы или файла на сервере;
-p — использовать прокси;
—proto — указать протокол, который нужно использовать;
-R — сохранять время последнего изменения удаленного файла;
-s — выводить минимум информации об ошибках;
-S — выводить сообщения об ошибках;
-T — загрузить файл на сервер;
-v — максимально подробный вывод;
-y — минимальная скорость загрузки;
-Y — максимальная скорость загрузки;
-z — скачать файл, только если он был модифицирован позже указанного времени;
-V — вывести версию.

Читайте также:
Что за программа антуту

Основные опции мы рассмотрим на простых примерах.

Просмотр версии curl

Опция -V или —version выводит не только версию curl, но и краткую информацию о поддерживаемых протоколах и функциях:

$ curl —version


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

Если вам требуется скачать файл, запустите curl с опцией –O или –o. Первая из них сохраняет файл в текущей рабочей директории под тем же именем, что и в удаленном месторасположении. Вторая опция позволяет вам указать другое имя и/или место для скачивания.

Cохранение файла под исходным именем (yourfile) в текущей рабочей директории.

$ curl -O http://yourdomain.com/yourfile

Cохранение файла под именем newfile в директории /tmp/examplе/.

$ curl -o /tmp/examplе/newfile http://yourdomain.com/yourfile.tar.gz — сохранение файла под именем newfile.tar.gz в директории /tmp/examplе/

Возобновление прерванной загрузки

Если скачивание по какой-то причине было прервано (например, пользователь нажал Ctrl+C), вы легко можете возобновить его с момента остановки при помощи опции -C – (дефис, С, тире):

$ curl -C — -O http://yourdomain.com/yourfile

Скачивание нескольких файлов

Следующая команда позволит вам скачать info.html с http://yoursite.com и about.html c http://mysite.com в один прием:

$ curl -O http://yoursite.com/info.html/info -O http://mysite.com/about.html/about

Если использовать curl вместе с командой xargs, можно скачивать файлы в соответствии со списком URL, заданном в файле (в данном примере listurls.txt):

$ xargs -n 1 curl < listurls.txt

Использование прокси-сервера

Если вы подключены через прокси-сервер, нужно указать его команде curl при помощи следующих опций (в данном примере имя сервера proxy.yourdomain.com, порт 8080, имя пользователя user, пароль qwerty1234):

$ curl -x proxy.yourdomain.com:8080 -U user:qwerty1234 -O http://yourdomain.com/yourfile

Если ваш прокси-сервер не требует аутентификации, опцию -U user:qwerty1234 указывать не нужно.

Запрос HTTP-заголовков

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

Для запроса HTTP-заголовков веб-сайта выполните команду с опцией -I:

$ curl -I https://itproffi.ru

Также эту информацию можно получить, воспользовавшись функциями браузера для разработчиков.

cURL POST-запросы с параметрами

Следующая команда отправит на https://yourdomain.com/info.php параметры firstName и lastName с соответствующими значениями:

$ curl —data «firstName=Ivan https://yourdomain.com/info.php

Этим приемом можно пользоваться для симуляции работы обычных веб-форм.

Скачивание файлов с FTP-сервера

Следующая команда скачивает в текущую рабочую директорию файл yourfile с удаленного FTP-сервера ftp://yourftpserver (имя пользователя user, пароль qwerty1234):

$ curl -u user:qwerty1234 -O ftp://yourftpserver/yourfile

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

Загрузка файлов на FTP-сервер

Для загрузки локального файла mylocalfile.tar.gz воспользуйтесь следующей командой:

$ curl -u user:qwerty1234 -T mylocalfile.tar.gz ftp://yourftpserver

Указание агента пользователя

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

$ curl -I http://localhost —user-agent «I am a new web browser»

Хотите посмотреть, какие файлы cookie скачиваются на ваш компьютер, когда вы заходите на определенный сайт? Опция —cookie-jar сохраняет их список в файл, который в дальнейшем можно просмотреть при помощи команды cat.

$ curl —cookie-jar cookies.txt https://itproffi.ru/

Полученные в предыдущем примере файлы cookie можно использовать в дальнейших запросах к тому же самому сайту:

$ curl —cookie cookies.txt https://itproffi.ru

Изменение разрешения имен

Если вы веб-разработчик и хотите протестировать локальную версию сайта, прежде чем загружать его на сервер, при помощи опции —resolve можно указать curl выполнять разрешение имени вашего сайта на адрес локального узла, например:

$ curl —resolve www.yourdomain.com:80:localhost http://www.yourdomain.com/

Таким образом, при запросе на http://www.yourdomain.com curl будет запрашивать сайт с локального узла, а не использовать DNS или файл /etc/hosts.

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

Чтобы curl не занимал всю пропускную способность канала, можно ограничить скорость скачивания при помощи опции —limit-rate:

$ curl —limit-rate 100K http://yourdomain.com/yourfile -O

Заключение

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru