Команда Curl в Linux

Добро пожаловать в мир Curl, универсального инструмента командной строки, который позволяет с легкостью передавать данные на серверы и обратно. Будь вы разработчик, системный администратор или просто любопытный пользователь. Команда Curl – незаменимый инструмент в вашем арсенале. С помощью Curl вы можете выполнять широкий спектр задач, от загрузки файлов до тестирования API и многого другого. В этой статье мы рассмотрим все тонкости Curl включая его наиболее полезные функций. И как вы можете использовать его для быстрого и эффективного выполнения задач. Будь вы профессионалом или новичком в командной строке, давайте погрузимся в мир Curl и посмотрим, что он может предложить!

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

Curl – это инструмент командной строки для передачи данных на серверы и обратно по различным протоколам. Это универсальный инструмент, который можно использовать для отправки и получения данных через Интернет. Он широко используется в Linux и других подобных операционных системах.

Curl поддерживает широкий спектр протоколов, включая HTTP, HTTPS, FTP, SMTP, POP3, IMAP и многие другие. Он предназначен для работы с URL адресами и может использоваться для выполнения различных операций с ними, включая отправку запросов GET и POST, установку заголовков, загрузку и скачивание файлов.

Установка Curl

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

sudo apt install curl

А для дистрибутивов на базе Red Hat, таких как CentOS требуется выполнить эту команду.

sudo dnf install curl

Мы писали статью “Curl команда не найдена” и в ней описывали как установить Curl  в различные дистрибутивы ссылка на статью.

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

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

Основной синтаксис команды curl следующий.

curl [options] [URL]

options – это различные параметры командной строки, которые вы можете использовать для изменения поведения команды curl. А URL – это URL сервера, к которому вы хотите подключиться. Если вы не укажете никаких опций, curl просто получит содержимое URL и отобразит его в командной строке.

=

Загрузка веб-страницы при помощи команды Curl

Чтобы получить веб-страницу с помощью команды curl, просто укажите URL страницы в качестве аргумента. Например, чтобы получить главную страницу Setewik, вы можете использовать следующую команду.

Получение страницы с помощью curl
Получение страницы с помощью curl

Данная команда позволит получить HTML содержимое главной страницы linuxwin.ru и отобразит эти данные в вашем терминале.

Сохранение полученных данных в файл

Если вам необходимо сохранить полученные данные команды curl в файл. То можно использовать опцию -o или --output, за которой следует имя выходного файла. Например чтобы сохранить домашнюю страницу setiwik в файл с именем setiwik.html, вы можете использовать следующую команду.

curl -o setiwik.html https://linuxwin.ru

Сохранение полученных данных в файл
Сохранение полученных данных в файл

Ланная команда позволит сохранить HTML содержимое домашней страницы Setiwik в файл с именем setiwik.html. Кстати данный файл сохраняется по умолчанию в домашний каталог.

Отправка данных на сервер

Curl также можно использовать и для отправки данных на сервер. С помощью различных методов HTTP, таких как POST, PUT и DELETE. Чтобы отправить данные методом POST, вы можете использовать опцию -d или --data, за которой следуют данные, которые вы хотите отправить. Например, чтобы отправить данные username=admin&password=admin12345 на сервер с помощью метода POST, вы можете использовать следующую команду.

curl -d "username=admin&password=admin12345" https://linuxwin.ru/login

Данная команда отправит данные на сервер по адресу URL https://linuxwin.ru/login, используя метод POST.

Настройка заголовков HTTP

Вы можете установить различные HTTP заголовки с помощью команды curl. Это позволит изменить поведение запроса. Чтобы установить HTTP заголовок, вы можете использовать опцию -H или --header, за которой следует имя и значение заголовка. Например, чтобы установить заголовок User-Agent на Mozilla/5.0 в запросе, вы можете использовать следующую команду.

curl -H "User-Agent: Mozilla/5.0" https://linuxwin.ru

Настройка заголовков HTTP при использовании cUrl
Настройка заголовков HTTP при использовании cUrl

Эта команда скажет серверу что вы используете браузер с движком Mozilla/5.0.

Следование за переадресацией

Если сервер возвращает ответ с переадресацией (код 3xx), то curl по умолчанию не будет следовать на переадресованный адрес. Чтобы включить автоматическое следование переадресации, вы можете использовать опцию -L или --location. Например чтобы следить за перенаправлениями при получении веб-страницы, вы можете использовать следующую команду:

curl -L https://linuxwin.ru

Отправка POST-запросов с помощью команды Curl

Curl можно использовать для отправки POST запросов на удаленный сервер. Вот пример команды для отправки POST запроса на удаленный сервер.

curl -X POST -d "name=Meilana&age=27" https://linuxwin.ru

Эта команда Curl -X POST, указывает, что мы используем метод HTTP POST. -d “name=Meilana&age=27” указывает данные, которые мы хотим отправить в POST запросе. https://linuxwin.ru – это URL сервера, на который мы отправляем POST-запрос.

Мы также можем использовать опцию -H для установки заголовков в POST запросе. Например, чтобы установить заголовок Content-Type на application/json, мы можем использовать следующую команду.

curl -X POST -H "Content-Type: application/json" -d '{"name": "Meilana", "age": 27}' https://linuxwin.ru

Загрузка файлов с помощью PUT

Команду Curl также можно использовать для загрузки файлов с помощью HTTP PUT запросов. Это полезно для передачи файлов на сервер, например, для загрузки изображения или документа.

Чтобы загрузить файл с помощью curl, используйте опцию -T, за которой следует путь к файлу.

curl -X PUT https://linuxwin.ru/upload -T ~/Documents/file.pdf

В этом примере мы загружаем файл file.pdf, расположенный в каталоге ~/Documents/, на URL https://linuxwin.ru/upload с помощью метода PUT.

Аутентификация с помощью Basic Auth

Команда Curl поддерживает HTTP Basic Authentication, которая является простой схемой аутентификации. Она использует имя пользователя и пароль. Учетные данные Basic Auth отправляются в HTTP заголовках с каждым запросом.

Для аутентификации с помощью Basic Auth используйте параметр -u, за которым следует имя пользователя и пароль, разделенные двоеточием.

curl -u Admin:PassAdmin https://linuxwin.ru/protected

В этом примере мы аутентифицируемся с помощью имени пользователя Admin и пароля PassAdmin для доступа к URL https://linuxwin.ru/protected.

Использование SSL/TLS с командой curl

Curl также можно использовать с зашифрованными соединениями SSL/TLS. По умолчанию curl проверяет сертификат сервера, используя доверенные центры сертификации системы. Однако можно отключить проверку сертификатов с помощью опции -k . Мы не рекомендуем это делать.

Чтобы использовать SSL/TLS, просто используйте схему URL https:// вместо http://:

curl https://example.com

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

Команда Curl может использоваться с прокси-серверами. Укажите параметр --proxy, за которым следует URL прокси-сервера.

curl --proxy http://proxy.example.com http://linuxwin.ru

В этом примере мы используем прокси-сервер по адресу http://proxy.example.com для доступа к URL http://linuxwin.ru.

Опции (параметры) команды Curl

Здесь приведена подробная таблица опций команды Curl с их описанием.

OPTION DESCRIPTION
-A, –user-agent <string> Установка пользовательской строки агента пользователя
-b, –cookie <name=data> Отправка файлов cookie из строки/файла
-c, –cookie-jar <file name> Запись файлов cookie в файл после выполнения операции
-d, –data <data> Данные HTTP POST
-e, –referer <URL> URL адрес реферера
-F, –form <name=content> HTTP многокомпонентные данные POST
-H, –header <header> Дополнительный заголовок для включения в запрос
-i, –include Включить заголовки протоколов в вывод
-I, –head Получение только заголовков
-k, –insecure Разрешить небезопасные соединения с сервером при использовании SSL
-L, –location Следить за переадресацией
-o, –output <file name> Запись вывода в файл вместо stdout
-O, –remote-name Запись вывода в файл с тем же именем, что и удаленный файл
-s, –silent Бесшумный режим, ничего не выводит
-T, –upload-file <file name> HTTP PUT данные из файла
-u, –user <user:password> Установите имя пользователя и пароль для аутентификации сервера
-v, –verbose Режим Verbose, выводит больше информации
-w, –write-out <format> Пользовательский формат вывода
-x, –proxy <[protocol://]host[:port]> Использовать указанный прокси-сервер
–cert <certificate[:password]> Файл сертификата клиента и пароль
–compressed Включить сжатие
–connect-timeout <seconds> Максимальное время ожидания соединения
–digest Используйте аутентификацию HTTP Digest
–insecure Разрешить небезопасные соединения с сервером при использовании SSL
–ipv4 Использовать только IPv4
–ipv6 Использовать только IPv6
–keepalive-time <seconds> Время сколько поддерживать связи
–max-filesize <bytes> Максимальный размер загружаемых файлов
–max-redirs <num> Максимальное количество перенаправлений для следования
–netrc Используйте учетные данные из файла .netrc
–no-keepalive Отключить функцию keepalive
–ntlm Используйте аутентификацию NTLM
–retry <num> Количество повторных попыток при неудаче
–ssl Использовать SSL
–tlsv1.0, –tlsv1.1, –tlsv1.2 Использовать указанную версию TLS
–user-agent <string> Установка пользовательской строки агента пользователя

Важно отметить, что эти опции можно использовать по отдельности или в комбинации, чтобы настроить команду Curl под конкретные задачи. Освоив эти опции, пользователи смогут выполнять широкий спектр HTTP/HTTPS запросов и автоматизировать различные вебзадачи с помощью командной строки.

Nazario

Я — Nazario, создатель и автор сайта linuxwin.ru, специализируюсь на информационных технологиях с акцентом на системное администрирование Linux и Windows, веб-разработку и настройку различных систем. Мои глубокие знания и обширный практический опыт в этих сферах позволяют мне создавать детальные руководства и учебные материалы, ценные для пользователей всех уровней.

Я стремлюсь делать сложные темы доступными и понятными, надеюсь что мой вклад в сообщество IT будет оценен по достоинству.

Моя работа направлена на образование и распространение знаний в области информационных технологий, помогая другим расширять свои возможности и углублять понимание современных технологий.

Linux и Windows
Выскажите своё мнение или присоединяйтесь к обсуждению:

Отправляя комментарий, вы даете согласие на обработку ваших данных в соответствии с политикой конфиденциальности и даёте согласие на их использование.

  1. Vovchik

    Очень познавательно спасибо.

    Ответить
  2. Олег

    Какой умный и добрый человек! Спасибо, все понятно описано.

    Ответить
  3. Nika

    Интересно, а главное работает.

    Ответить