wget
wget — консольная качалка от GNU. Проще curl-а, но заточен под другое: скачивание файлов, рекурсивная выкачка сайтов, зеркалирование. HTTP, HTTPS, FTP, FTPS. Устанавливается по дефолту на большинстве Linux, но не в macOS (там надо brew install wget).
Отличие от curl
- curl — швейцарский нож для API/HTTP, отправляет и получает. По умолчанию печатает в stdout, не редиректится, не рекурсирует.
- wget — качалка. По умолчанию сохраняет в файл, следует редиректам, докачивает при обрыве, умеет рекурсивно тянуть весь сайт с CSS/картинками.
Правило пальца: отладить API — curl, скачать что-то — wget.
Базовые команды
# файл на диск (имя с URL)
wget https://example.com/file.zip
# в конкретный файл
wget -O out.zip https://example.com/file.zip
# продолжить оборванную скачку
wget -c https://example.com/big.iso
# фоном
wget -b https://example.com/big.iso
# логи в wget-log
Скачать целый сайт (mirror)
wget --mirror --convert-links --adjust-extension --page-requisites \
--no-parent https://example.com/
--mirror— рекурсия + timestamp + вечная глубина + no-remove-listing.--convert-links— переписать ссылки для локального просмотра.--adjust-extension— добавить.htmlгде нужно.--page-requisites— качать CSS/JS/картинки, чтобы страницы работали.--no-parent— не подниматься выше стартового URL.
Полезные флаги
-c— continue (докачка).-r— рекурсивно.-l N— максимальная глубина рекурсии (по умолчанию 5).-A "*.pdf"/-R "*.jpg"— accept/reject список расширений.-P dir— сохранять в директорию.-nH— не создавать директорию с именем хоста.--cut-dirs=N— обрезать N уровней путей.-t N— сколько раз повторять при ошибке (0 = бесконечно).--wait=1— пауза между запросами (не задудосить сервер).--random-wait— рандомизировать паузу (0.5×–1.5×).-U "UA"— задать User-Agent.--header "X: y"— заголовок.--limit-rate=200k— ограничение скорости.--tries=5— количество попыток.--timeout=30— таймаут.--no-check-certificate— игнорить кривой TLS (осторожно).-q— тихо.
Через прокси
# через env
export http_proxy=http://127.0.0.1:8080
export https_proxy=http://127.0.0.1:8080
wget https://example.com
# или прямо
wget -e use_proxy=yes -e https_proxy=http://127.0.0.1:8080 https://example.com
SOCKS wget не умеет напрямую (в отличие от curl). Обходят через tsocks, proxychains или socat.
Список файлов из текстового файла
# urls.txt: по одной ссылке в строке
wget -i urls.txt
# параллельно 4 потока (только с xargs)
cat urls.txt | xargs -n 1 -P 4 wget
wget2
Наследник, официальный GNU-проект. Многопоточная скачка, HTTP/2, лучше HSTS-обработка. Синтаксис совместимый. Устанавливается отдельно: apt install wget2. Дефолтом ещё не заменил wget, но постепенно.
Альтернативы
- curl — если нужен один файл и контроль над запросом.
- aria2 — многопоточная скачка (HTTP/FTP/BitTorrent/Magnet). Быстрее wget на больших файлах.
- httrack — интерактивная выкачка сайтов, alt для
wget --mirror. - yt-dlp — видео с YouTube и 1000+ сайтов (наследник youtube-dl).