Команда Curl в Linux с примерами
Команда Curl в Linux с примерами
Curl Command in Linux with Examples
В этом руководстве мы покажем вам, как использовать инструмент скручивания, на практических примерах и подробных объяснениях наиболее распространенных опций скручивания.

curl
утилита командной строки для передачи данных с или на сервер, предназначенная для работы без взаимодействия с пользователем. С помощью curl
вы можете загружать или выгружать данные, используя один из поддерживаемых протоколов, включая HTTP, HTTPS, SCP , SFTP и FTP . curl
предоставляет ряд опций, позволяющих возобновить передачу, ограничить пропускную способность, поддержку прокси, аутентификацию пользователя и многое другое.
Установка Curl
Пакет curl уже предустановлен в большинстве дистрибутивов Linux.
Чтобы проверить, установлен ли пакет Curl в вашей системе, откройте консоль, введите curl
и нажмите клавишу ввода. Если вы curl
установили, система напечатает curl: try 'curl --help' or 'curl --manual' for more information
. В противном случае вы увидите нечто подобное curl command not found
.
Если curl
он не установлен, вы можете легко установить его, используя менеджер пакетов вашего дистрибутива.
Установите Curl на Ubuntu и Debian
sudo apt update
sudo apt install curl
Установите Curl на CentOS и Fedora
sudo yum install curl
Как использовать Curl
Синтаксис curl
команды следующий:
curl [options] [URL...]
В простейшем виде, когда вызывается без какой-либо опции, curl
отображает указанный ресурс для стандартного вывода.
Например, чтобы получить example.com
домашнюю страницу, вы должны запустить:
curl example.com
Команда напечатает исходный код example.com
домашней страницы в окне вашего терминала.
Если протокол не указан, curl
пытается угадать протокол, который вы хотите использовать, и он будет по умолчанию HTTP
.
Сохранить вывод в файл
Чтобы сохранить результат curl
команды, используйте либо опцию, -o
либо -O
.
Нижний регистр -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 , извлеките заголовки HTTP -I
вместе с --http2
параметром:
curl -I --http2 -s https://baks.dev | grep HTTP
Опция указывает
-s curl
работать в тихой (Quiet) и скрыть сообщения метровые прогресса и ошибок.
Если удаленный сервер поддерживает HTTP / 2, curl
выведите HTTP/2.0 200
:
HTTP/2 200
В противном случае ответ таков HTTP/1.1 200
:
HTTP/1.1 200 OK
Если у вас есть версия curl 7.47.0
или новее, вам не нужно использовать эту --http2
опцию, потому что HTTP / 2 включен по умолчанию для всех соединений HTTPS.
Следуйте перенаправлениям
По умолчанию curl
не следует заголовкам HTTP Location.
Если вы попытаетесь получить версию без www google.com
, вы заметите, что вместо получения источника страницы вы будете перенаправлены на версию www:
curl google.com

-L
Параметр предписывает , curl
чтобы следовать какой - либо редирект , пока он не достигнет конечного пункта назначения:
curl -L google.com
Изменить User-Agent
Иногда при загрузке файла удаленный сервер может быть настроен на блокировку Curl User-Agent или на возврат различного содержимого в зависимости от устройства посетителя и браузера.
В подобных ситуациях для эмуляции другого браузера используйте -A
опцию.
Например, для эмуляции 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 не отправляются и не сохраняются.
Чтобы отправить куки на сервер, используйте -b
переключатель с именем файла, содержащим куки или строку.
Например, чтобы загрузить 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 .