ГлавнаяОперационные системыLinuxКак использовать cURL для передачи данных из командной строки и многого другого

Как использовать cURL для передачи данных из командной строки и многого другого

Разделение и объединение файлов

рукциям по установке приложений Linux, ориентированным на терминал, вы, вероятно, в тот или иной момент сталкивались с командой curl. cURL — это инструмент командной строки для передачи данных с помощью URL-адресов. Одним из самых простых способов использования является загрузка файла через командную строку. Однако это обманчиво, поскольку cURL — невероятно мощный инструмент, который может гораздо больше.

Читайте также: Как скопировать и вставить текст, файлы и папки в терминале Linux

Что такое cURL?

CURL, первоначально написанный Дэниелом Штернбергом в 1996 году для сбора финансовых данных с веб-серверов и их трансляции по IRC-каналам, превратился в мощный инструмент для получения данных без использования браузера. Если вы постоянно пользуетесь терминалом, это будет один из наиболее важных инструментов в вашем арсенале.

В большинстве дистрибутивов Linux cURL предустановлен в системе, и вы можете сразу его использовать. Да

Что такое cURL?

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

Для Windows нет команды, похожей на Curl, а в macOS предустановлена ​​команда cURL, но нет столько же флагов в качестве версии для Linux.

Также читайте: Как использовать команду dd в Linux

Установка

Прежде чем двигаться дальше, мы должны убедиться, что cURL уже установлен в нашей системе.

Линукс

В дистрибутивах на базе Debian/Ubuntu используйте следующую команду для установки cURL:

sudo apt install curl

В дистрибутивах на основе Arch:

sudo pacman -S curl

В Fedora/CentOS/RHEL:

sudo dnf install curl

macOS

В macOS он уже предустановлен, поэтому ничего делать не нужно.

Читайте также: Как запустить терминал в текущей папке на Mac

Окна

  1. Для Windows 7/10/11 перейдите к страница загрузки cURL и выберите 64-битный или 32-битный пакет в зависимости от используемой архитектуры. Если вы не знаете свою архитектуру, беспроигрышным вариантом будет 64-разрядная версия, поскольку на ней работает подавляющее большинство оборудования, выпущенного после 2006 года.
  2. Создайте папку непосредственно на системном диске или в «C:\Program Files\» и назовите ее «cURL».
  3. <

    Установка

    oding="async" src="https://saintist.ru/wp-content/uploads/2024/05/linuxcurl-newfolder.png" alt="Новая папка Linuxcurl">
  1. Вернитесь к з

    Линукс

    и zip-файлу, откройте его и найдите «curl.exe» в папке «bin». Скопируйте это в созданную вами папку cURL. Скопированный вами EXE-файл полностью автономен и способен выполнять любые варианты, которые вы можете запустить в Linux.
  2. Чтобы сделать эту команду действительно полезной, нам нужно добавить ее в переменную PATH в Windows, чтобы ее можно было запускать из командной строки где угодно.
  • Нажмите на меню «Пуск», введите environment<

    macOS

    е Enter.
  • Нажмите «Переменные среды…». Теперь вы должны перейти к настройкам переменных среды.
Переменные среды Linuxcurl
  • Выберите переменную среды «Путь», затем нажмите «Изменить…»
  • В диалоговом окне редактирования пути н

    Окна

    ть» и введите каталог, в котором находится ваш «curl.exe», например «C:\Program Files\cURL».
Редактируемая переменная Linuxcurl
  • Нажмите «ОК» в диалоговых окнах, которые вы открыли в ходе этого процесса, и наслаждайтесь использованием cURL в своем терминале!

Каждый флаг в cURL, который можно использовать в Linux, должен работать и в версии для Windows.

Слово мудрым: помните, что командную строку никогда не следует путать с терминалом Windows. Windows Terminal поставляется с собственной версией cURL, включенной в PowerShell, которая выполняет аналогичные функции, но работает совершенно по-другому.

Читайте также: Как использовать команду Rm в Linux

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

Чтобы начать, просто введите curl maketecheasier.comв терминале и нажмите Enter.

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

Ошибка Linuxcurl

Чтобы заставить cURL делать что-то действительно полезное, нам нужно указать протокол. В нашем примере мы используем протокол HTTPS для запроса домашней страницы этого сайта. Введите curl https://www.maketecheasier.com.

Linuxcurl-файлы

Если все пойдет хорошо, вы увидите гигантскую стену данных. Чтобы сделать эти данные более удобными для использования, мы можем указать cURL поместить их в HTML-файл:

curl https://www.maketecheasier.com > ~/Downloads/mte.html
Linuxcurl Скачать

Эта команда помещает содержимое вывода нашего сайта в HTML-файл в папке «Загрузки». Перейдите в папку с вашим любимым файловым менеджером и дважды щелкните только что созданный файл. Должен открыться снимок HTML-вывода домашней страницы этого сайта.

Тестирование Linuxcurl

Аналогично вы можете использовать флаг -oдля достижения того же результата:

curl -o ~/Downloads/mte.html https://www.maketecheasier.com

После перенаправления

Большинство сайтов автоматически перенаправляют трафик с протокола «http» на протокол «https». В cURL вы можете добиться того же с помощью флага -L. Он будет автоматически следовать по 301 перенаправлению, пока не достигнет читаемой страницы или файла.

 curl -L http://google.com.
Перенаправление Linuxcurl

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

При загрузке больших файлов, в зависимости от скорости вашего Интернета, прерывания могут быть очень раздражающими. К счастью, в cURL есть функция возобновления. Передача флага -Cрешит эту проблему в один миг.

Чтобы показать реальный пример, я намеренно прервал загрузку ISO-образа тестовой версии Debian, нажав Ctrlи Cв середине его загрузки.

p>

Использование cURLontent/uploads/2024/05/linuxcurl-interrupted.png" alt="Linuxcurl прерван">

Для нашей следующей команды необходимо установить флаг -C. Например,

curl -C - -o ~/Downloads/debiantesting.iso -L https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-dvd/debian-testing-amd64-DVD-1.iso
Linuxcurl резюме

Загрузка успешно началась с того места, где остановилась.

Загрузка более одного файла

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

Если файлы, которые вы загружаете, пронумерованы (например, файл1, файл2 и т. д.), вы можете использовать скобки, чтобы получить полный диапазон файлов, и «#» в выводе, который вы указываете с помощью 49.флаг. Чтобы сделать это немного менее запутанным, вот пример:

curl "http://example.com/file[1-5].zip" -o "#1_#2"

Проще всего это сделать с помощью -O(--remote-name). Этот флаг заставляет cURL загружать удаленный файл в локальный файл с тем же именем. Поскольку вам не нужно указывать вывод, вам следует использовать эту команду, когда терминал открыт в каталоге, в который вы хотите загрузить файлы.

curl -O "https://example.com/file1.zip" -O "https://example.com/file2.zip"

Если вам нужно загрузить большое количество пронумерованных файлов, лучше использовать для этого флаг --remote-name-all:

curl --remote-name-all "https://example.com/file[1-5].zip"

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

curl --remote-name-all "https://example.com/{file1.zip,anotherfile.zip,thisisfun.zip}"

Загрузка с аутентификацией

Скачивайте файлы, требующие аутентификации (например, при получении с частного FTP-сервера) с флагом -u. Каждый запрос аутентификации должен выполняться сначала с именем пользователя, а затем с паролем, разделяя их двоеточием. Вот пример, чтобы упростить задачу:

curl -u username:password -o ~/Downloads/file.zip ftp://example.com/file.zip

Это позволит нашему другу bonobo_bob аутентифицироваться на FTP-сервере и загрузить файл в папку «Загрузки»

После перенаправления

ение файлов

Если по какой-либо причине вы хотите загрузить большой файл и разделить его на части, вы можете сделать это с помощью флага --rangeв cURL. При --rangeвы должны указать байт, с которого хотите начать, до байта, которым хотите закончить. Если вы не укажете конец диапазона, будет загружена оставшаяся часть файла.

В приведенной ниже команде cURL загрузит первые 100 МБ установочного образа Arch Linux:

curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-20

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

>

Для следующих 100 МБ используйте --range 100000000-199999999и т. д. Вы можете объединить эти команды, используя операнд &&:

curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range 100000000-199999999 -o arch.part2 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range 200000000-299999999 -o arch.part3 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range 300000000-399999999 -o arch.part4 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range 400000000-499999999 -o arch.part5 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2

Загрузка более одного файла

; \ curl --range 500000000-599999999 -o arch.part6 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 600000000-699999999 -o arch.part7 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 700000000- -o arch.part8 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso

Если вы в точности следовали приведенной выше структуре команд, должны появиться восемь файлов там, где вы попросили cURL загрузить их.

Части Linuxcurl

Чтобы воссоединить эти файлы, вам придется использовать команду cat, если вы используете Linux или macOS, например:

cat arch.part? > arch.iso

Для Windows вам придется использовать команду copyследующим образом:

copy /b arch.part* arch.iso

Другие полезные функции

Существует множество флагов и вариантов использования cURL:

  • -# — использует индикатор выполнения, чтобы указать, насколько далеко вы продвинулись в том, что захватываете. Пример: curl -# https://asite.com/somefile.zip > ~/somefile.zip.
  • -a— просит cURL добавить в файл, а не перезаписать его. Пример: curl -ao ~/collab-full.x https://example-url.com/collab-part26.x.
  • --head— извлекает только заголовок ответа с сервера без выходных данных. Это полезно, когда вы отлаживаете веб-сайт или просматриваете запрограммированные ответы сервера клиентам. Пример: curl --head https://example-url.com.
  • --limit-rate— заказ

    Загрузка с аутентификацией

    скной способностью. Это полезно в ситуациях, когда вы не хотите, чтобы cURL занимал всю доступную пропускную способность вашей системы. Простое число будет интерпретироваться как байты в секунду. K представляет собой килобайты в секунду; M представляет собой мегабайты в секунду. Пример: curl --limit-rate 8M https://example-url.com/file.zip > ~/file.zip.
  • -o— как упоминалось ранее, определяет выходной файл, который будет использовать cURL. Пример: curl -o ~/Downloads/file.zip https://thefileplace.com/file.zip -o file2.zip https://thefileplace.com/file2.zip.
  • --proxy— Если вы хотите работать с прокси, это лучший способ сделать это. Пример: curl --proxy proxyurl:port https://example-url.com/file.zip > ~file.zip.

cURL против Wget

Обе программы, cURL и Wget , выпущенные в одном и том же 1996 году, для обычного наблюдателя во многом являются родственными программами. Однако если копнуть немного глубже, вы увидите, что у этих двух сестер разные цели.

Получить

  • Он полностью создан с нуля для сбора данных из Интернета.
  • Не нужны флаги -Lили -o, такие как cURL; просто введите wget [url]и вперед!
  • Можно загружать рекурсивно, чтобы получить все содержимое каталога с флагом -r.
  • Имеет все функции, необходимые пользователю для ежедневного использования, и позволяет решать повседневные задачи системного администратора.
  • (В Linux) Не требует большого количества зависимостей; все они должны быть доступны «из коробки».

Читайте также: Как установить и использовать wget на Mac

cURL

  • Обширный набор флагов и полезных функций для удаленного поиска.
  • Поддержка локальной сети (LDAP) и сетевых принтеров (Samba).
  • Хорошо работает с библиотеками сжатия gzip.
  • Зависит от библиотеки libcurl, которая позволяет разработчикам писать программное обеспечение или сценарии Bash, включающие функции cURL.

Короче говоря, Wget — это «набор инструментов для каждого» для получения данных из Интернета, а cURL расширяет эту функцию, предоставляя более детальный контроль для опытных пользователей и системных администраторов.

Часто задаваемые вопросы

1. Я получил ошибку сертификата в Linux. Как это исправить?

Если вы получили сообщение об ошибке типа «эмитент сертификата узла помечен как ненадежный», самый простой способ исправить это — переустановить пакет общих сертификатов в вашем дистрибутиве.

Для систем на базе Debian/Ubuntu:

sudo apt reinstall ca-certificates

Для Fedora/CentOS/RHEL:

dnf reinstall ca-certificates

Для систем на базе Arch:

pacman -S ca-certificates

Обратите внимание, что в Arch вы можете очистить кеш пакета с помощью pacman -Sccперед переустановкой пакета сертификатов.

Если эта ошибка по-прежнему возникает, возможно, на стороне сервера что-то не так.

2. Безопасно ли запускать команды cURL и bash вместе?

Хотя это и не самый распространенный способ установки приложений Linux, ряд разработчиков (например, люди, стоящие за NodeJS) не оставляют вам другого выбора, кроме как использовать curlвместе с командой root-доступа. который запускается через bash (например, curl [argument] | sudo -E bash -) для установки программного обеспечения.

Это может выглядеть немного пугающе, но если люди, стоящие за приложением, заслуживают доверия, маловероятно, что вы что-то сломаете. Злоумышленники повсюду и могут проникнуть в репозитории, такие как AUR Arch, поэтому установка с использованием curlв сочетании с командами root-доступа обычно не более безопасна, чем установка через менеджер пакетов.

3. Могу ли я использовать cURL с Tor?

Да! Запустите Tor Browser (или отдельный сервис Tor) и используйте флаг --proxy. Tor предоставляет вам локальный прокси-сервер, который вы можете использовать для маскировки вашего IP-адреса в других приложениях. Вот пример использования cURL с Tor:

curl --proxy localhost:9050 http://example.com

Отдельные службы Tor будут использовать порт 9050 в качестве порта прослушивания, а браузер Tor использует порт 9150.

Подведение итогов

cURL доказал свою устойчивость в меняющейся структуре мира Linux, сохраняя свою позицию важного инструмента в арсенале пользователя терминала.

Если вы новичок в командной строке, ознакомьтесь с некоторыми из самые полезные команды Linux . Если вы просто хотите выполнить поиск в Интернете, а не загружать данные из Интернета, вы можете просмотрите на терминале тоже .

Другие полезные функции

cURL против Wget

Получить

cURL

Часто задаваемые вопросы

1. Я получил ошибку сертификата в Linux. Как это исправить?

2. Безопасно ли запускать команды cURL и bash вместе?

3. Могу ли я использовать cURL с Tor?

Подведение итогов

ПОХОЖИЕ СТАТЬИ

Популярные записи