Утилита командной строки Wget

14.09.2018

Теги: CLICookieFTPHTTPHTTPSLinuxPOSTWeb-разработка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 • Форма

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.