Утилита командной строки Wget
14.09.2018
Теги: CLI • Cookie • FTP • HTTP • HTTPS • Linux • POST • Web-разработка • Windows • Форма
GNU Wget — консольная программа для загрузки файлов по сети. Поддерживает протоколы HTTP, FTP и HTTPS, а также работу через HTTP прокси-сервер. Программа включена почти во все дистрибутивы Linux. Утилита разрабатывалась для медленных соединений, поэтому она поддерживает докачку файлов при обрыве соединения.
Для работы с Wget под Windows, переходим по ссылке и скачиваем файл wget.exe
. Создаем директорию C:\Program Files\Wget-Win64
и размещаем в ней скачанный файл. Для удобства работы добавляем в переменную окружения PATH
путь до исполняемого файла.
Давайте попробуем что-нибудь скачать, скажем дистрибутив Apache под Windows:
> wget https://home.apache.org/~steffenal/VC15/binaries/httpd-2.4.35-win64-VC15.zip --2018-09-14 10:34:09-- https://home.apache.org/~steffenal/VC15/binaries/httpd-2.4.35-win64-VC15.zip Resolving home.apache.org (home.apache.org)... 163.172.16.173 Connecting to home.apache.org (home.apache.org)|163.172.16.173|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 17856960 (17M) [application/zip] Saving to: 'httpd-2.4.35-win64-VC15.zip' httpd-2.4.35-win64-VC15.zip 100%[=================================================>] 17,03M 8,50MB/s in 2,0s 2018-09-14 10:34:12 (8,50 MB/s) - 'httpd-2.4.35-win64-VC15.zip' saved [17856960/17856960]
Если утилита ругается на сертификаты при скачивании по HTTPS, нужно использовать дополнительную опцию --no-check-certificate
.
Примеры
Загрузка всех URL, указанных в файле (каждая ссылка с новой строки):
> wget -i download.txt
Скачивание файлов в указанный каталог:
> wget -P /path/for/save ftp://ftp.example.org/image.iso
Скачивание файла file.zip
и сохранение под именем archive.zip
:
> wget -O archive.zip http://example.com/file.zip
Продолжить загрузку ранее не полностью загруженного файла:
> wget -c http://example.org/image.iso
Вывод заголовков HTTP серверов и ответов FTP серверов:
> wget -S http://example.org/
Скачать содержимое каталога archive
и всех его подкаталогов, при этом не поднимаясь по иерархии каталогов выше:
> wget -r --no-parent http://example.org/some/archive/
Использование имени пользователя и пароля на FTP/HTTP:
> wget --user=login --password=password ftp://ftp.example.org/image.iso
> wget ftp://login:password@ftp.example.org/image.iso
Отправить POST-запрос в формате application/x-www-form-urlencoded
:
> wget --post-data="user=evgeniy&password=qwerty" http://example.org/auth/
Сохранение cookie
в файл cookie.txt
для дальнейшей отправки серверу:
> wget --save-cookie cookie.txt http://example.org/
Сохраненный файл cookie.txt
:
# HTTP cookie file. # Generated by Wget on 2018-09-14 11:40:37. # Edit at your own risk. example.org FALSE / FALSE 1570196437 visitor 71f61d2a01de1394f60120c691a52c56
Отправка cookie
, сохраненных ранее в файле cookie.txt
:
> wget --load-cookie cookie.txt http://example.org/
Отправка заголовков:
> wget --header="Accept-Language: ru-RU,ru;q=0.9" --header="Cookie: PHPSESSID=....." http://example.org/
Справка по утилите:
> wget -h GNU Wget 1.11.4, программа для загрузки файлов из сети в автономном режиме. Использование: wget [ОПЦИЯ]... [URL]...
Запуск: -V, --version вывод версии Wget и выход. -h, --help вывод этой справки. -b, --background после запуска перейти в фоновый режим. -e, --execute=КОМАНДА выполнить команду в стиле .wgetrc. Журналирование и входной файл: -o, --output-file=ФАЙЛ записывать сообщения в ФАЙЛ. -a, --append-output=ФАЙЛ дописывать сообщения в конец ФАЙЛА. -d, --debug вывод большого количества отладочной информации. -q, --quiet молча (без выходных данных). -v, --verbose подробный вывод (по умолчанию). -nv, --no-verbose отключение подробного режима, но не полностью. -i, --input-file=ФАЙЛ загрузка URL-ов, найденных в ФАЙЛЕ. -F, --force-html считать, что входной файл - HTML. -B, --base=URL добавление URL в начало относительных ссылок в файле -F -i. Загрузка: -t, --tries=ЧИСЛО установить ЧИСЛО повторных попыток (0 без ограничения). --retry-connrefused повторять, даже если в подключении отказано. -O, --output-document=ФАЙЛ записывать документы в ФАЙЛ. -nc, --no-clobber пропускать загрузки, которые приведут к загрузке уже существующих файлов. -c, --continue возобновить загрузку частично загруженного файла. --progress=ТИП выбрать тип индикатора выполнения. -N, --timestamping не загружать повторно файлы, только если они не новее, чем локальные. -S, --server-response вывод ответа сервера. --spider ничего не загружать. -T, --timeout=СЕКУНДЫ установка значений всех тайм-аутов в СЕКУНДЫ. --dns-timeout=СЕК установка тайм-аута поиска в DNS в СЕК. --connect-timeout=СЕК установка тайм-аута подключения в СЕК. --read-timeout=СЕК установка тайм-аута чтения в СЕК. -w, --wait=СЕКУНДЫ пауза в СЕКУНДАХ между загрузками. --waitretry=СЕКУНДЫ пауза в 1..СЕКУНДЫ между повторными попытками загрузки. --random-wait пауза в 0...2*WAIT секунд между загрузками. --no-proxy явно выключить прокси. -Q, --quota=ЧИСЛО установить величину квоты загрузки в ЧИСЛО. --bind-address=АДРЕС привязка к АДРЕСУ (имя хоста или IP) локального хоста. --limit-rate=СКОРОСТЬ ограничение СКОРОСТИ загрузки. --no-dns-cache отключение кэширования поисковых DNS-запросов. --restrict-file-names=ОС ограничение на символы в именах файлов, использование которых допускает ОС. --ignore-case игнорировать регистр при сопоставлении файлов и/или каталогов. -4, --inet4-only подключаться только к адресам IPv4. -6, --inet6-only подключаться только к адресам IPv6. --prefer-family=СЕМЕЙСТВО подключаться сначала к адресам указанного семейства, может быть IPv6, IPv4 или ничего. --user=ПОЛЬЗОВАТЕЛЬ установить и ftp- и http-пользователя в ПОЛЬЗОВАТЕЛЬ. --password=ПАРОЛЬ установить и ftp- и http-пароль в ПАРОЛЬ. Каталоги: -nd, --no-directories не создавать каталоги. -x, --force-directories принудительно создавать каталоги. -nH, --no-host-directories не создавать каталоги как на хосте. --protocol-directories использовать имя протокола в каталогах. -P, --directory-prefix=ПРЕФИКС сохранять файлы в ПРЕФИКС/... --cut-dirs=ЧИСЛО игнорировать ЧИСЛО компонентов удалённого каталога. Опции HTTP: --http-user=ПОЛЬЗОВАТЕЛЬ установить http-пользователя в ПОЛЬЗОВАТЕЛЬ. --http-password=ПАРОЛЬ установить http-пароль в ПАРОЛЬ. --no-cache отвергать кэшированные сервером данные. -E, --html-extension сохранять HTML-документы с расширением .html. --ignore-length игнорировать поле заголовка Content-Length. --header=СТРОКА вставить СТРОКУ между заголовками. --max-redirect максимально допустимое число перенаправлений на страницу. --proxy-user=ПОЛЬЗОВАТЕЛЬ установить ПОЛЬЗОВАТЕЛЯ в качестве имени пользователя для прокси. --proxy-password=ПАРОЛЬ установить ПАРОЛЬ в качестве пароля для прокси. --referer=URL включить в HTTP-запрос заголовок Referer: URL. --save-headers сохранять HTTP-заголовки в файл. -U, --user-agent=АГЕНТ идентифицировать себя как АГЕНТ вместо Wget/ВЕРСИЯ. --no-http-keep-alive отключить поддержание активности HTTP (постоянные подключения). --no-cookies не использовать кукисы. --load-cookies=ФАЙЛ загрузить кукисы из ФАЙЛА перед сеансом. --save-cookies=ФАЙЛ сохранить кукисы в ФАЙЛ после сеанса. --keep-session-cookies загрузить и сохранить кукисы сеанса (непостоянные). --post-data=СТРОКА использовать метод POST; отправка СТРОКИ в качестве данных. --post-file=ФАЙЛ использовать метод POST; отправка содержимого ФАЙЛА. --content-disposition Учитывать заголовок Content-Disposition при выборе имён для локальных файлов (ЭКСПЕРИМЕНТАЛЬНЫЙ). --auth-no-challenge Отправить базовые данные аутентификации HTTP не дожидаясь ответа от сервера. Опции HTTPS (SSL/TLS): --secure-protocol=ПР выбор безопасного протокола: auto, SSLv2, SSLv3 или TLSv1. --no-check-certificate не проверять сертификат сервера. --certificate=FILE файл сертификата пользователя. --certificate-type=ТИП тип сертификата пользователя: PEM или DER. --private-key=ФАЙЛ файл секретного ключа. --private-key-type=ТИП тип секретного ключа: PEM или DER. --ca-certificate=ФАЙЛ файл с набором CA. --ca-directory=КАТ каталог, в котором хранится список CA. --random-file=ФАЙЛ файл со случайными данными для SSL PRNG. --egd-file=ФАЙЛ файл, определяющий сокет EGD со случайными данными. Опции FTP: --ftp-user=ПОЛЬЗОВАТЕЛЬ установить ftp-пользователя в ПОЛЬЗОВАТЕЛЬ. --ftp-password=ПАРОЛЬ установить ftp-пароль в ПАРОЛЬ. --no-remove-listing не удалять файлы файлы .listing. --no-glob выключить маски для имён файлов FTP. --no-passive-ftp отключить "пассивный" режим передачи. --retr-symlinks при рекурсии загружать файлы по ссылкам (не каталоги). --preserve-permissions сохранять права доступа удалённых файлов. Рекурсивная загрузка: -r, --recursive включение рекурсивной загрузки. -l, --level=ЧИСЛО глубина рекурсии (inf и 0 - бесконечность). --delete-after удалять локальные файлы после загрузки. -k, --convert-links делать ссылки локальными в загруженном HTML. -K, --backup-converted перед преобразованием файла X делать резервную копию X.orig. -m, --mirror короткая опция, эквивалентная -N -r -l inf --no-remove-listing. -p, --page-requisites загрузить все изображения и проч., необходимые для отображения HTML-страницы. --strict-comments включить строгую (SGML) обработку комментариев HTML. Разрешения/запреты при рекурсии: -A, --accept=СПИСОК список разрешённых расширений, разделённых запятыми. -R, --reject=СПИСОК список запрещённых расширений, разделённых запятыми. -D, --domains=СПИСОК список разрешённых доменов, разделённых запятыми. --exclude-domains=СПИСОК список запрещённых доменов, разделённых запятыми. --follow-ftp следовать по ссылкам FTP в HTML-документах. --follow-tags=СПИСОК список используемых тегов HTML, разделённых запятыми. --ignore-tags=СПИСОК список игнорируемых тегов HTML, разделённых запятыми. -H, --span-hosts заходить на чужие хосты при рекурсии. -L, --relative следовать только по относительным ссылкам. -I, --include-directories=СПИСОК список разрешённых каталогов. -X, --exclude-directories=СПИСОК список исключаемых каталогов. -np, --no-parent не подниматься в родительский каталог.
Дополнительно
Поиск: CLI • Cookie • FTP • HTTP • HTTPS • Linux • POST • Web-разработка • Windows • wget • Форма