Home » Как использовать wget и curl для веб-запросов и скачивания файлов
Как использовать wget и curl для веб-запросов и скачивания файлов

Как использовать wget и curl для веб-запросов и скачивания файлов

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

Зачем вообще нужны wget и curl?

Представь: ты только что развернул новый сервер (например, VPS или выделенный сервер), и тебе нужно быстро скачать дистрибутив, обновить скрипты, или просто проверить, жив ли какой-то API. Конечно, можно открыть браузер, но зачем, если есть удобные консольные инструменты, которые справляются с этим в разы быстрее и надёжнее?
wget и curl — это настоящие швейцарские ножи для работы с HTTP, FTP и не только. Они позволяют не только скачивать файлы, но и отправлять запросы, работать с куками, заголовками, аутентификацией и даже автоматизировать целые цепочки задач.

Почему это важно?

  • Время — деньги: чем быстрее и проще ты скачиваешь и проверяешь файлы, тем эффективнее работаешь.
  • Автоматизация: оба инструмента легко интегрируются в скрипты и CI/CD пайплайны.
  • Гибкость: wget и curl поддерживают кучу протоколов и настроек, что позволяет использовать их практически в любой ситуации.
  • Безопасность: скачивание напрямую на сервер без лишних скачиваний на локалку.

Как это работает? Алгоритмы, структура

wget

wget — это командная утилита для скачивания файлов из интернета. Она поддерживает HTTP, HTTPS, FTP и даже работу через прокси. Главная фишка — умение работать в фоне, скачивать сайты целиком (рекурсивно), продолжать прерванные загрузки и вести себя очень дружелюбно к автоматизации.

  • Работает по принципу «скачал и забыл» — запустил, и он сам всё сделает.
  • Может сохранять структуру каталогов, скачивать сайты «под ключ».
  • Просто интегрируется в bash-скрипты.

curl

curl — инструмент посложнее и поуниверсальнее. Он не только скачивает, но и отправляет любые HTTP-запросы (GET, POST, PUT, DELETE и т.д.), работает с кучей протоколов (HTTP, FTP, SMTP, SCP, SFTP, LDAP и др.), умеет работать с API, отправлять формы, файлы, аутентифицироваться, работать с SSL-сертификатами и даже отлаживать сетевые соединения.

  • Идеален для работы с REST API, тестирования сервисов.
  • Гибко настраивается через параметры — можно делать практически всё.
  • Умеет работать с заголовками, куками, авторизацией и даже проксировать трафик.

Как быстро и просто всё настроить?

Установка

На большинстве Linux-дистрибутивов оба инструмента уже есть. Если нет — ставим:


# Для Debian/Ubuntu
sudo apt update
sudo apt install wget curl

# Для CentOS/RHEL
sudo yum install wget curl

# Для Arch Linux
sudo pacman -S wget curl

Базовые команды

  • Скачать файл с помощью wget:
    wget https://example.com/file.zip
  • Скачать файл с помощью curl:
    curl -O https://example.com/file.zip

    Пояснение: -O — сохранить с оригинальным именем файла.

Скачивание с авторизацией

  • wget:
    wget --user=USERNAME --password=PASSWORD https://example.com/protected/file.zip
  • curl:
    curl -u USERNAME:PASSWORD -O https://example.com/protected/file.zip

Продолжение прерванной загрузки

  • wget:
    wget -c https://example.com/bigfile.iso
  • curl:
    curl -C - -O https://example.com/bigfile.iso

Скачивание сайта целиком (только wget)

wget --mirror --convert-links --adjust-extension --page-requisites --no-parent https://example.com/
  • --mirror — зеркалировать сайт
  • --convert-links — конвертировать ссылки для локального просмотра
  • --page-requisites — скачать всё необходимое для отображения страниц (css, js, картинки и т.д.)
  • --no-parent — не лезть выше по директориям

Отправка POST-запроса (curl)

curl -X POST -d "param1=value1&param2=value2" https://example.com/api/endpoint

Можно использовать -H для добавления заголовков:

curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://example.com/api/endpoint

Работа с прокси

  • wget:
    wget -e use_proxy=yes -e http_proxy=http://proxy.example.com:8080 https://example.com/file.zip
  • curl:
    curl -x http://proxy.example.com:8080 -O https://example.com/file.zip

Примеры, кейсы, сравнения

Задача wget curl Рекомендация
Скачать файл по прямой ссылке + + Оба подходят, wget проще
Скачать сайт целиком + wget — лучший выбор
Работа с REST API + curl — вне конкуренции
Продолжить прерванную загрузку + + Оба умеют, wget проще
Загрузка с авторизацией + + curl гибче, но wget проще для FTP
Работа через прокси + + Оба хороши
Отправка кастомных заголовков + curl
Автоматизация в bash-скриптах + + Оба прекрасно интегрируются

Положительный кейс

Ты поднял Docker-контейнер с Ubuntu и хочешь быстро накатить свежий релиз Nginx без лишних PPA — скачиваешь .deb напрямую:

wget http://nginx.org/packages/ubuntu/pool/nginx/n/nginx/nginx_1.24.0-1~focal_amd64.deb
sudo dpkg -i nginx_1.24.0-1~focal_amd64.deb

Всё — минимальный набор движений, никаких промежуточных скачиваний на локалку.

Отрицательный кейс

Ты решил скачать защищённый архив через curl, но забыл про авторизацию:

curl -O https://secure.example.com/secret.zip

В ответ — 403 Forbidden. Решение — добавить -u или -H "Authorization: Bearer ..." если нужен токен.

Ошибки новичков и мифы

  • Миф: curl всегда лучше wget.
    Факт: У них разная специализация. Для скачивания файлов и зеркалирования сайтов wget проще и удобнее.
  • Ошибка: Путать -O и -o в curl.
    Пояснение: -O сохраняет с оригинальным именем, -o — с заданным.
  • Ошибка: Не использовать -L в curl при редиректах.
    Правильно:

    curl -L -O https://example.com/redirected/file.zip
  • Миф: wget не умеет работать с заголовками.
    Факт: Может, но не так гибко, как curl, через --header.

Похожие решения и альтернативы

  • aria2 — мощный загрузчик, поддерживает HTTP(S), FTP, BitTorrent, Metalink. Очень быстр, умеет параллельно качать из нескольких источников. https://aria2.github.io/
  • lftp — для продвинутой работы с FTP/SFTP.
  • httpie — для красивых и удобных HTTP-запросов, особенно для REST API. https://httpie.io/

Статистика и сравнение

  • wget — появился в 1996 году, входит в большинство дистрибутивов Linux.
  • curl — стартовал в 1997, сейчас встроен даже в Windows 10/11.
  • curl поддерживает больше протоколов (более 20), wget — около 4-5.
  • curl чаще используется для работы с API и отладки, wget — для массового скачивания.

Интересные факты и нестандартные фичи

  • curl умеет отправлять файлы прямо из stdin:
    echo "Hello, world!" | curl -X POST -d @- https://example.com/api/upload
  • wget может скачивать файлы по расписанию через cron:
    0 3 * * * wget -q -O /backup/db.sql https://example.com/backup/db.sql
  • curl можно использовать для проверки SSL-сертификата:
    curl -vI https://example.com
  • wget поддерживает лимит скорости:
    wget --limit-rate=200k https://example.com/bigfile.iso
  • curl может работать как мини-браузер:
    curl -L https://example.com | less
  • wget может качать только новые файлы (по дате):
    wget -N https://example.com/file.zip

Автоматизация и скрипты: новые горизонты

  • CI/CD: curl часто используют для деплоя, уведомлений, проверки статусов.
  • Бэкапы: wget отлично автоматизирует скачивание резервных копий.
  • Мониторинг: curl позволяет делать healthcheck сервисов.
  • Массовое скачивание: wget поддерживает работу с файлами-списками URL:
    wget -i urls.txt
  • Парсинг: curl + jq или grep — идеальная пара для вытаскивания данных из API.

Выводы и рекомендации

wget и curl — это must-have инструменты для любого, кто работает с серверами, контейнерами или просто любит автоматизацию.

  • Выбирай wget для скачивания файлов, зеркалирования сайтов, массовых загрузок и простых задач.
  • Используй curl, когда нужно работать с API, отправлять сложные HTTP-запросы, тестировать сервисы или работать с нестандартными протоколами.
  • Не бойся комбинировать оба инструмента — они прекрасно дополняют друг друга.
  • Всегда читай мануалы: wget и curl — там масса скрытых возможностей.
  • Для продвинутых сценариев автоматизации смотри в сторону aria2 и httpie.
  • Если нужен быстрый и надёжный сервер для экспериментов — смотри VPS или выделенный сервер.

В итоге: чем раньше освоишь эти утилиты, тем больше времени сэкономишь себе и своим проектам. И да — это реально весело, когда автоматизация начинает работать на тебя!


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

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

Leave a reply

Your email address will not be published. Required fields are marked