Добро пожаловать в мир Curl, универсального инструмента командной строки, который позволяет с легкостью передавать данные на серверы и обратно. Будь вы разработчик, системный администратор или просто любопытный пользователь. Команда Curl — незаменимый инструмент в вашем арсенале.
С помощью Curl вы можете выполнять широкий спектр задач, от загрузки файлов до тестирования API и многого другого. В этой статье мы рассмотрим все тонкости Curl включая его наиболее полезные функций. И как вы можете использовать его для быстрого и эффективного выполнения задач. Будь вы профессионалом или новичком в командной строке, давайте погрузимся в мир Curl и посмотрим, что он может предложить!
Возможно вам будет интересно: Proxmox установка
Что такое команда Curl?
Curl — это инструмент командной строки для передачи данных на серверы и обратно по различным протоколам. Это универсальный инструмент, который можно использовать для отправки и получения данных через Интернет. Он широко используется в Linux и других подобных операционных системах.
Что такое CURL?
Curl поддерживает широкий спектр протоколов, включая HTTP, HTTPS, FTP, SMTP, POP3, IMAP и многие другие. Он предназначен для работы с URL адресами и может использоваться для выполнения различных операций с ними, включая отправку запросов GET и POST, установку заголовков, загрузку и скачивание файлов.
Установка Curl
Curl обычно предустановлен в большинстве дистрибутивов Linux. Но если это не так, вы можете установить его с помощью менеджера пакетов вашего дистрибутива. Например, для установки Curl в дистрибутивах на базе Debian требуется выполнить следующую команду.
А для дистрибутивов на базе Red Hat, таких как CentOS требуется выполнить эту команду.
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 выполняет 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 — идеальная утилита для тестирование API
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/2 200 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, 30 Dec 2021 08:02:28 GMT server: gws x-xss-protection: 0 x-frame-options: SAMEORIGIN expires: Thu, 30 Dec 2021 08:02:28 GMT cache-control: private set-cookie: 1P_JAR=2021-12-30-08; expires=Sat, 29-Jan-2022 08:02:28 GMT; path=/; domain=.google.com; Secure set-cookie: NID=511=g2q8nvtZVqY3eB3xl8c8D2tB-CuU-EbIvyfVtkOUuaKBQM1tXCNckN6VwMsz9Oq1q4vupwd8qiCP136ddmOWONHJ7DPA1r81TVpSMUhSeWet6ggRIyX1ZtQZwu09GdipaBw3aVPK0wAj9WvOjRQqPAswXhhC-fFhwjbunNqbAQE; expires=Fri, 01-Jul-2022 08:02:28 GMT; path=/; domain=.google.com; HttpOnly alt-svc: h3=»:443″; ma=2592000,h3-29=»:443″; ma=2592000,h3-Q050=»:443″; ma=2592000,h3-Q046=»:443″; ma=2592000,h3-Q043=»:443″; ma=2592000,quic=»:443″; ma=2592000; v=»46,43″
Игнорирование ошибки неправильных или самоподписанных сертификатов
Когда вы тестируете веб-приложение или API, то в вашем тестовом окружении могут быть самоподписанные или неправильные SSL-сертификаты. По умолчанию curl верифицирует все сертификаты. Чтобы он не выдавал ошибку о неверных сертификатах и устанавливал соединение для тестирования, используйте опцию -k или -insecure.
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 » 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 » http://test.com/1
Использование авторизации
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/
Загрузка файла
Вы можете загрузить несколько файлов, повторяя параметр -F.
Измерение продолжительности соединения
Вы можете использовать опцию -w для отображения информации в stdout после завершения передачи. Она поддерживает отображение набора переменных. Например, можно узнать общее время, которое потребовалось для успешного выполнения запроса. Это удобно, если вам нужно определить время загрузки или скачивания с помощью curl.
curl -w «%n» -o /dev/null -s www.test.com
CURL -ключи:
-# — отображать простой прогресс-бар во время загрузки;
-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 с опцией –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://the-devops.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 скачиваются на ваш компьютер, когда вы заходите на определенный сайт? Опция —cookie-jar сохраняет их список в файл, который в дальнейшем можно просмотреть при помощи команды cat.
$ curl —cookie-jar cookies.txt https://itproffi.ru/
Отправка файлов cookie на сайт
Полученные в предыдущем примере файлы 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
Заключение
Узнайте, как использовать Curl с помощью этих удобных команд Curl
Будь то для теста Вывод API Перед публикацией или просто чтобы проверить, сколько Ответ веб-сайта (например, чтобы убедиться, что он не сломан), команда Curl действительно помогает.
в качестве Аналитик данных Время от времени приходилось им пользоваться. Однако чаще всего я просто заменяю параметры из Команда Curl أمر скопировал и наклеил Канал Slack для моей команды.
Я решил, что мне нужно лучше понять этот мощный инструмент, если я хочу использовать его в полной мере, и теперь я здесь, чтобы поделиться некоторыми из самых интересных вещей, которые я нашел в этом Curl учебник.
Если у вас есть какие-либо советы или рекомендации, которые вы хотели бы добавить, сделайте это в комментариях, так как мое понимание этого инструмента все еще находится в зачаточном состоянии.
Сравнение Curl и Wget
На первый взгляд, Curl и Wget можно рассматривать как утилиту, которая может запрашивать и загружать контент с веб-серверов. Однако, если копнуть глубже, есть что раскрыть. Команда Curl поддерживает множество протоколов, начиная от HTTPS و SFTP мне IMAP و POP3 и т. д., при этом поддерживается только команда Wget HTTP و HTTPS و Ftp.
Еще одно важное отличие состоит в том, что Wget поддерживает частую загрузку, а Curl — нет. Таким образом, Wget будет загружать все с веб-страницы на связанные страницы, а Curl — нет. С другой стороны, Curl основан на библиотеке libcurl, которая предоставляет API. Следовательно, его можно легко использовать в сценариях командной строки, а также в приложениях на основе графического интерфейса. Вы можете рассматривать Curl как упрощенный веб-браузер с командной строкой, который может загружать и загружать контент на веб-сервер и с него.
Установить Curl в Windows
Curl предустановлен в операционных системах на основе Unix или Unix-подобных и, таким образом, может использоваться непосредственно в macOS. Однако его также можно использовать в системах, отличных от Unix, таких как Windows, с помощью библиотеки «libcurl».
В Windows все, что нам нужно сделать, это Загрузите zip-файл libcurl И внесите некоторые изменения, чтобы его можно было использовать через Командная строка. Сначала загрузите zip-файл libcurl для 32-разрядной или 64-разрядной версии Windows, в зависимости от того, что у вас есть. После того, как вы загрузили файл, извлеките его содержимое в папку. Для контекста вот скриншот содержимого, извлеченного из папки libcurl.
Внутри извлеченной папки перейдите в bin. папка И скопируйте следующие файлы — «curl.exe»И»curl-ca-bundle».
Создайте папку под названием «витьсяВнутри диска «C:» и вставьте оба скопированных файла. После этого вы можете напрямую использовать команду curl при переходе к папке «C: curl» внутри командной строки.
В качестве альтернативы, если вы хотите запустить curl прямо из CMD , Я рекомендую создать переменную окружения. Для этого перейдите в «Меню»Начало»И типа»переменные средыи щелкните по первому результату.
Во всплывающем окне Свойства системы нажмите кнопку. переменные среды Внизу.
на экране переменные среды , нажмите кнопку «Новое”В верхней половине, чтобы добавить переменная среды пользователя.
на экране Пользовательская переменная Новый, добавьте следующую запись. После этого нажмите «Ok» Потом «تطبيقчтобы сохранить изменения.
Variable name: curl Variable value: C:curl
После этого нажмите «Ok»в списке»переменные средычтобы сохранить изменения. Вы должны опубликовать это, вы должны иметь возможность использовать команду curl непосредственно в командной строке. Чтобы проверить это, введите следующую команду
curl —version
В качестве альтернативы вы также можете включить WSL для Windows и используйте оболочка bash Ubuntu включить команды curl из bash в Windows.
Лучшие команды Curl и как их использовать
Прежде чем мы начнем с команд, обратите внимание, что одинарные кавычки не работают в командной строке Windows. Вы должны преобразовать их в двойные кавычки. Для оболочки bash он будет работать как обычно и с одинарными кавычками.
1. Просмотрите HTML-код.
Основная функция Curl — просматривать HTML-код веб-страницы. Для этого добавьте команду curl к URL-адресу веб-страницы.
curl https://example.com
Эта команда отобразит вывод в Терминале. Вы также можете загрузить содержимое файла, выбрав переключатель «-Oперед URL. Это сохранит файл в вашей системе с тем же именем, что и удаленный файл. Например, если имя HTML-файла на сервере — «home.html», он также будет сохранен локально как «home.html».
curl -O http://example.com/home.html
Кроме того, вы можете хранить данные с пользовательскими именами файлов. Итак, добавьте к команде символ «.-oза которым следует имя файла.
curl http://example.com/home.html -o sample-file.txt
Вы также можете загрузить несколько файлов, указав несколько URL-адресов удаленных файлов.
2. Загрузите файлы с помощью Curl.
стиль Wget , вы можете загружать файлы с помощью Curl. Вы можете использовать переключатель -o И укажите имя файла, иначе файл будет сохранен с именем удаленного файла.
curl -O http://example.com/linux.iso
Например, следующая команда загрузит последнюю версию Linux монетный двор с веб-сервера.
curl -O http://mirrors.gigenet.com/linuxmint/iso/stable/19.2/linuxmint-19.2-cinnamon-64bit.iso
Вы также можете использовать «-#»Или же»-индикаторОтображать прогресс в виде хеша.
3. Возобновить неудачную загрузку.
Более того, если загрузка прервана, вы можете возобновить ее, используя «Переключить».-С-. Это будет выглядеть так.
curl -C http://example.com/linux.iso
Например, следующая команда возобновит загрузку с последней неудачной точки загрузки.
curl -C — -O http://mirrors.gigenet.com/linuxmint/iso/stable/19.2/linuxmint-19.2-cinnamon-64bit.iso
4. Информация об IP
Вы можете использовать следующую команду Curl, чтобы получить все сетевая информация Об устройстве
curl ipinfo.io
Вместо этого, если вы знаете айпи адрес И вам нужны другие данные, такие как координаты местоположения, город, часовой пояс и т. Д., Вы можете использовать следующий синтаксис для команды.
curl ipinfo.io/14.141.173.170
5. Отправляйте электронные письма.
Поскольку Curl поддерживает SMTP, POP3, вы можете использовать его для отправки электронных писем. Ниже представлена форма для отправки электронного письма через Gmail.
Соответственно замените адрес электронной почты и пароль в следующей команде.
curl —url «smtps://smtp.gmail.com:587» —ssl-reqd —mail-from «[email protected]» —mail-rcpt «[email protected]» —upload-file «C:mail.txt» —user «[email protected]:password»
6. Словарь
Протокол dict, предоставляемый libcurl, можно использовать, чтобы легко найти значение слова. Источник слов и значений WordNet. Ниже представлена команда, которая позволяет вам сделать то же самое.
curl dict://dict.org/d:english-word
7. Команды POST
Вы можете отправлять запросы POST на веб-сервер с помощью команды curl. Синтаксис следующий
curl -X POST -F «name=user-name» -F «password=password» http://www.example.com
Данные формы POST также могут быть отправлены в виде файла JSON. Для этого используйте следующую команду.
curl -H «Content-Type: application/json» https://www.example.com
8. Конвертируйте файлы.
Поскольку Curl поддерживает данные, состоящие из нескольких частей, вы можете использовать его для мгновенной загрузки и даже преобразования файлов. Например, я хочу преобразование файлов HTML это в PDF.
Таким образом, я буду использовать Docverter API Для этого. Docverter API поддерживает несколько форматов файлов из HTML и уценка Его можно преобразовать в. Docx и PDF و EPUB , так далее.
В качестве альтернативы вы также можете использовать API Google Диска v3 Для преобразования электронных таблиц Excel, документов и т. Д.
заключительные слова
Команда Curl в основном используется в программах для обмена данными, файлами и формами. Помимо вышеперечисленных команд, существует множество API, групп или Скрипты Другие, которые вы можете использовать с Curl. Вы можете узнать больше об этом в репозиториях GitHub или в Stack Overflow. Если у вас возникнут дополнительные проблемы или вопросы, касающиеся любой команды Curl, дайте мне знать в комментариях ниже.
Источник: www.dz-techs.com