- Home »

Как использовать 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¶m2=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 или выделенный сервер.
В итоге: чем раньше освоишь эти утилиты, тем больше времени сэкономишь себе и своим проектам. И да — это реально весело, когда автоматизация начинает работать на тебя!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.