Curl https запрос linux

Отправка HTTPS-запросов с помощью Curl

Чтобы отправить HTTPS-запрос с помощью Curl, передайте в командной строке Curl конечную точку назначения, которая поддерживает SSL-соединения. Curl автоматически установит SSL-соединение с сервером. Когда Curl отправляет запрос на HTTPS URL, он проверяет SSL сертификат в хранилище сертификатов локального центра сертификации.

Curl возвращает сообщение об ошибке Certificate Verify Failed для просроченных и самоподписанных сертификатов. Вы можете обойти проверку сертификата, передав Curl команду -k или —insecure.

curl -k https://expired.badssl.com

Что такое Curl?

Curl — это инструмент командной строки для передачи данных на серверы и с серверов. Curl поддерживает более 25+ протоколов, включая HTTP и HTTPS. Curl работает на всех современных платформах и оборудовании, включая Linux, Windows и macOS, и широко используется разработчиками для тестирования API и автоматизации задач, связанных с отправкой данных по сети и тестированием доступности различных сервисов.

Что такое HTTPS?

HTTPS (Secure Hypertext Transfer Protocol) — это защищенная версия HTTP, основного интернет-протокола, используемого для передачи данных между веб-браузером и веб-сайтом. HTTPS работает поверх протокола нижнего уровня SSL (расшифровывается как Secure Sockets Layer) и передает данные по сети в зашифрованном виде для повышения безопасности данных и предотвращения чтения этих данных посторонними лицами. SSL и его более защищенная версия под названием TLS (Transport Layer Security) используют цифровые сертификаты и надежные алгоритмы шифрования для шифрования данных.

Как Curl проверяет HTTPS-соединения?

Curl проверяет SSL сертификат целевого URL по локальному хранилищу сертификатов CA, которое поставляется с установкой Curl. Сертификаты ЦС извлекаются из хранилища сертификатов Mozilla CA и могут быть обновлены вручную путем загрузки файла cacert.pem с сайта CA Extract и замены файла curl-ca-bundle.crt в папке установки Curl. Соединение проверяется путем проверки того, что сертификат сервера содержит правильное имя хоста и является актуальным. Для просроченных и самоподписанных сертификатов SSL/TLS, Curl возвращает ошибку: «SSL certificate problem, verify that the CA cert is OK..

Читайте также:  Use mac software on linux

Как разрешить небезопасные соединения HTTPS с помощью Curl?

Чтобы обойти проверку сертификата, передайте Curl флаг -k или —insecure. Это позволит Curl игнорировать ошибки сертификата и принимать небезопасные сертификаты, не жалуясь на них.

curl -k https://expired.badssl.com

Как отправить клиентский сертификат с помощью Curl?

Чтобы отправить сертификат клиента на сервер при взаимодействии по протоколу HTTPS или FTPS, вы можете использовать переключатель командной строки -E или —cert. Сертификат клиента должен быть в формате PKCS#12 для безопасного транспорта или в формате PEM при использовании любого другого механизма.

curl -E cerfile.crt https://example.com/ curl --cert cerfile.crt https://example.com/

Как явно предоставить сертификат ЦС?

В некоторых случаях вам может понадобиться использовать цепочку сертификатов, отличную от той, что поставляется с Curl. Цепочки сертификатов обеспечивают доверительные отношения между сертификатами, где сертификат ЦС находится в начале цепочки, а сертификат сайта, на который мы хотим перейти, в конце цепочки. С помощью параметра командной строки —cacert filename мы можем указать другой ЦС, например, локальный ЦС нашей компании.

curl --cacert mycompany.cert https://mycompany.com/internal

Источник

Команда Curl в Linux с примерами

curl — это утилита командной строки для передачи данных с сервера или на сервер, предназначенная для работы без взаимодействия с пользователем. С помощью curl вы можете загружать или выгружать данные, используя один из поддерживаемых протоколов, включая HTTP, HTTPS, SCP , SFTP и FTP . curl предоставляет ряд параметров, позволяющих возобновить передачу, ограничить полосу пропускания, поддержку прокси, аутентификацию пользователя и многое другое.

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

Установка Curl

Сегодня пакет curl предустановлен в большинстве дистрибутивов Linux.

Чтобы проверить, установлен ли пакет Curl в вашей системе, откройте консоль, введите curl и нажмите Enter. Если у вас установлен curl , система напечатает curl: try ‘curl —help’ or ‘curl —manual’ for more information . В противном случае вы увидите что-то вроде curl command not found .

Если curl не установлен, вы можете легко установить его с помощью диспетчера пакетов вашего дистрибутива.

Установите Curl в Ubuntu и Debian

sudo apt updatesudo apt install curl

Установите Curl на CentOS и Fedora

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

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

В простейшей форме при вызове без каких-либо параметров curl выводит указанный ресурс на стандартный вывод.

Например, чтобы получить домашнюю страницу example.com вы должны запустить:

Команда напечатает исходный код домашней страницы example.com в окне вашего терминала.

Читайте также:  Operating system logs linux

Если протокол не указан, curl пытается угадать протокол, который вы хотите использовать, и по умолчанию будет использовать HTTP .

Сохранить вывод в файл

Чтобы сохранить результат команды curl , используйте параметр -o или -O .

vue-v2.6.10.js -o сохраняет файл с предопределенным именем файла, которым в приведенном ниже примере является vue-v2.6.10.js :

curl -o vue-v2.6.10.js https://cdn.jsdelivr.net/npm/vue/dist/vue.js

Верхний регистр -O сохраняет файл с исходным именем:

curl -O https://cdn.jsdelivr.net/npm/vue/dist/vue.js

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

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

В следующем примере мы загружаем iso-файлы Arch Linux и Debian:

curl -O http://mirrors.edge.kernel.org/archlinux/iso/2018.06.01/archlinux-2018.06.01-x86_64.iso -O https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso

Возобновить загрузку

Вы можете возобновить загрузку, используя параметр -C — . Это полезно, если ваше соединение прерывается во время загрузки большого файла, и вместо того, чтобы начинать загрузку с нуля, вы можете продолжить предыдущую.

Например, если вы загружаете iso-файл Ubuntu 18.04 с помощью следующей команды:

curl -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso

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

curl -C - -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso

Получить HTTP-заголовки URL-адреса

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

Используйте параметр -I чтобы получить только HTTP-заголовки указанного ресурса:

curl -I --http2 https://www.ubuntu.com/

Проверьте, поддерживает ли веб-сайт HTTP / 2

Чтобы проверить, поддерживает ли конкретный URL новый протокол HTTP / 2 , —http2 заголовки HTTP с помощью -I вместе с параметром —http2 :

curl -I --http2 -s https://linuxize.com/ | grep HTTP

Параметр -s указывает curl работать в автоматическом (тихом) режиме и скрывать индикатор выполнения и сообщения об ошибках.

Если удаленный сервер поддерживает HTTP / 2, curl печатает HTTP/2.0 200 :

В противном случае ответ будет HTTP/1.1 200 :

Если у вас curl версии 7.47.0 или новее, вам не нужно использовать параметр —http2 поскольку HTTP / 2 включен по умолчанию для всех соединений HTTPS.

Следить за перенаправлениями

По умолчанию curl не следует за заголовками HTTP Location.

Если вы попытаетесь получить версию google.com без www, вы заметите, что вместо получения источника страницы вы будете перенаправлены на версию с www:

Параметр -L указывает curl следовать любому перенаправлению, пока не достигнет конечного пункта назначения:

Сменить User-Agent

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

В подобных ситуациях для эмуляции другого браузера используйте параметр -A .

Читайте также:  Kali linux или kodachi

Например, для эмуляции Firefox 60 вы должны использовать:

curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" https://getfedora.org/

Укажите максимальную скорость передачи

Параметр —limit-rate позволяет ограничить скорость передачи данных. Значение может быть выражено в байтах, килобайтах с суффиксом k , мегабайтах с суффиксом m и гигабайтах с суффиксом g .

В следующем примере curl загрузит двоичный файл Go и ограничит скорость загрузки до 1 МБ:

curl --limit-rate 1m -O https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz

Эта опция полезна для предотвращения использования curl всей доступной полосы пропускания.

Передача файлов через FTP

Чтобы получить доступ к защищенному FTP-серверу с помощью curl , используйте параметр -u и укажите имя пользователя и пароль, как показано ниже:

curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/

После входа в систему команда выводит список всех файлов и каталогов в домашнем каталоге пользователя.

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

curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/file.tar.gz

Чтобы загрузить файл на FTP-сервер, используйте -T за которым следует имя файла, который вы хотите загрузить:

curl -T newfile.tar.gz -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/

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

По умолчанию при запросе ресурса с помощью curl файлы cookie не отправляются и не сохраняются.

Чтобы отправить файлы cookie на сервер, используйте переключатель -b за которым следует имя файла, содержащего файлы cookie, или строку.

Например, чтобы загрузить rpm-файл Oracle Java JDK jdk-10.0.2_linux-x64_bin.rpm вам необходимо передать файл cookie с именем oraclelicense со значением a :

curl -L -b "oraclelicense=a" -O http://download.oracle.com/otn-pub/java/jdk/10.0.2+13/19aef61b38124481863b1413dce1855f/jdk-10.0.2_linux-x64_bin.rpm

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

curl поддерживает различные типы прокси, включая HTTP, HTTPS и SOCKS. Для передачи данных через прокси-сервер используйте параметр -x ( —proxy ), за которым следует URL-адрес прокси.

Следующая команда загружает указанный ресурс с помощью прокси на 192.168.44.1 порт 8888 :

curl -x 192.168.44.1:8888 http://linux.com/

Если прокси-сервер требует аутентификации, используйте параметр -U ( —proxy-user ), за которым следует имя пользователя и пароль, разделенные двоеточием ( user:password ):

curl -U username:password -x 192.168.44.1:8888 http://linux.com/

Выводы

curl — это инструмент командной строки, который позволяет передавать данные с удаленного хоста или на него. Это полезно для устранения неполадок, загрузки файлов и многого другого.

Примеры, показанные в этом руководстве, просты, но демонстрируют наиболее часто используемые параметры curl и призваны помочь вам понять, как работает команда curl .

Для получения дополнительной информации о curl посетите страницу документации по Curl .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник

Оцените статью
Adblock
detector