Wget – это утилита командной строки с открытым исходным кодом для загрузки файлов и веб-страниц из Интернета.
Она получает данные из Интернета и отображает их в терминале или сохраняет в файл.
Утилита wget является неинтерактивной.
Вы можете получить максимальную отдачу от нее с помощью скриптов или даже запланировать загрузку файлов.
Обычно веб-браузеры, такие как Firefox или Chromium, также загружают файлы, но по умолчанию они отображают информацию в графическом окне и требуют от пользователя взаимодействия с ними.
В качестве альтернативы другие пользователи системы Linux используют команду curl для передачи данных с сетевого сервера.
🖧 В чем разница между curl и Wget?
В статье показано, как использовать команду wget для загрузки веб-страниц и файлов из Интернета.
- Установка wget на Linux
- Загрузка файла с помощью команды wget
- Отправка загруженных данных в стандартный вывод
- Сохранение загруженных файлов с другим именем файла
- Скачивание последовательности файлов
- Скачивание нескольких страниц и файлов
- Возобновление частичной загрузки
- Управление рекурсивными загрузками с помощью команды wget
- Преобразование ссылок для локального просмотра
- Загрузка определенных типов файлов
- Загрузка файлов с FTP-сервера
- Установка максимального размера загрузки с помощью команды wget
- Установка ограничения скорости загрузки с помощью команды wget
- Зеркалирование сайта с помощью команды wget
- Чтение URL-адресов из текстового файла
- Расширение сокращенного URL-адреса
- Изменение заголовков HTML
- Просмотр заголовков ответов с помощью команды wget
- Запуск команды wget в качестве web spider
- Запуск команды wget в фоновом режиме
- Запуск wget в режиме отладки
- Изменение User-Agent команды wget
- Заключение
Установка wget на Linux
Чтобы установить wget на Linux-системы на базе Ubuntu/Debian, выполните следующие действия:
$ apt-get install wget
Чтобы установить Wget на RHEL/CentOS/AlmaLinux/Rocky Linux:
$ yum install wget
Чтобы установить wget на Fedora:
$ dnf install wget
Загрузка файла с помощью команды wget
Вы можете скачать файл с помощью команды wget, указав определенную ссылку на URL.
Если ваш URL по умолчанию содержит index.html, то загружается стартовая страница.
По умолчанию содержимое загружается в файл с тем же именем в текущем рабочем каталоге.
Команда wget также предоставляет несколько опций для передачи вывода в less или tail.
wget http://example.com | tail -n 6 --2021-11-30 12:31:40-- http://example.com/ Resolving example.com (example.com)... 93.184.216.34, 2606:2800:220:1:248:1893:25c8:1946 Connecting to example.com (example.com)|93.184.216.34|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 1256 (1.2K) Saving to: ‘index.html.1’ 100%[======================================>] 1,256 --.-K/s in 0s 2021-11-30 12:31:41 (55.8 MB/s) - ‘index.html.1’ saved [1256/1256]
Отправка загруженных данных в стандартный вывод
Вы можете использовать параметр -output-document с символом тире – для отправки загруженных данных на стандартный вывод.
$ wget http://example.com --output-document - | head -n8 --2021-11-30 12:34:41-- http://example.com/ Resolving example.com (example.com)... 93.184.216.34, 2606:2800:220:1:248:1893:25c8:1946 Connecting to example.com (example.com)|93.184.216.34|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 1256 (1.2K) Saving to: ‘STDOUT’ 100%[======================================>] 1,256 --.-K/s in 0s <!doctype html> <html> <head> <title>Example Domain</title> <meta charset="utf-8" /> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> 2021-11-30 12:34:41 (75.0 MB/s) - written to stdout [1256/1256]
Сохранение загруженных файлов с другим именем файла
Вы можете использовать опцию -output-document или -O, чтобы указать другое файла вашей загрузки.
$ wget https://itsecforu.ru --output-document foo.html $ wget https://itsecforu.ru -O foofoofoo.html
Скачивание последовательности файлов
Wget может загрузить несколько файлов, если вы знаете их расположение и шаблон имен файлов.
Вы можете использовать синтаксис Bash для указания диапазона целых чисел, чтобы представить последовательность имен файлов от начала до конца.
$ wget https://itsecforu.ru/filename_{1..7}.webp
Скачивание нескольких страниц и файлов
Вы можете скачать несколько файлов с помощью команды wget, указав все URL-адреса, содержащие файлы для загрузки.
$ wget URL1 URL2 URL3
Возобновление частичной загрузки
Если вы загружаете большие файлы, в процессе загрузки могут возникать перерывы.
Wget может определить, где остановилось скачивание, прежде чем продолжить частичную загрузку.
Это удобно, если вы загружаете большие файлы, например, ISO дистрибутива Fedora 35 Linux.
Чтобы продолжить загрузку, используйте опцию -continue или -c.
$ wget --continue https://itsecforu/security-linux-distro.iso
Управление рекурсивными загрузками с помощью команды wget
Используйте опцию -recursive или -r, чтобы включить рекурсивные загрузки с помощью команды wget.
Рекурсивный режим wget проходит по указанному URL сайта и переходит по всем ссылкам до уровня глубины по умолчанию или заданного максимального уровня.
$ wget -r https://itsecforu.ru
По умолчанию максимальная глубина рекурсивной загрузки равна 5.
Однако wget предоставляет опцию -l для указания максимальной глубины рекурсии.
$ wget -r -l 11 https://itsecforu.ru
Вы можете задать бесконечную рекурсию с помощью опции ‘-l 0’.
Например, wget загрузит все файлы на сайте, если вы установите максимальную глубину в ноль (-l 0).
Преобразование ссылок для локального просмотра
Опция -convert-links – это еще одна важная опция wget, которая преобразует ссылки, чтобы сделать их пригодными для локального просмотра.
$ wget -r l 3 --convert-links itsecforu.ru
Загрузка определенных типов файлов
Вы можете использовать опцию -A в команде wget для загрузки файлов определенных типов во время рекурсивной загрузки.
Например, используйте следующую команду wget для загрузки файлов pdf с веб-сайта.
$ wget -A '*.pdf -r itsecforu.ru
Обратите внимание, что по умолчанию максимальный уровень глубины рекурсивного поиска ограничен 5.
Загрузка файлов с FTP-сервера
Команда wget может пригодиться, когда вам нужно скачать файлы с FTP-сервера.
$ wget --ftp-user=username --ftp-password=password ftp://192.168.1.13/foofoo.pdf
📓 Как отправлять файлы в пассивном режиме по FTP
В приведенном выше примере wget загрузит файл ‘foofoo.pdf’ с FTP-сервера, расположенного по адресу 192.168.1.10.
Вы также можете использовать опцию -r recursive с протоколом FTP для рекурсивной загрузки файлов FTP.
$ wget -r --ftp-user=username --ftp-password=pass ftp://192.168.1.13/
Установка максимального размера загрузки с помощью команды wget
Вы можете установить максимальный размер загрузки при рекурсивном получении файлов с помощью опции флага -quota.
Вы можете указать размер загрузки в байтах (по умолчанию), килобайтах (суффикс k) или мегабайтах (суффикс m).
Процесс загрузки будет прерван при превышении лимита.
$ wget -r --quota=1024m itsecforu.ru
Обратите внимание, что квоты на загрузку не влияют на загрузку одного файла.
Установка ограничения скорости загрузки с помощью команды wget
Вы также можете использовать опцию флага wget -limit-rate для ограничения скорости загрузки при скачивании файлов.
Например, следующая команда загрузит файл ‘foofoo.tar.gz’ и ограничит скорость загрузки до 256 КБ/с.
$ wget --limit-rate=256k URL/ foofoo.tar.gz
Обратите внимание, что вы можете выразить желаемую скорость загрузки в байтах (без суффикса), килобайтах (используя суффикс k) или мегабайтах (используя суффикс m).
Зеркалирование сайта с помощью команды wget
С помощью опции -mirror можно загрузить или зеркалировать весь сайт, включая его структуру каталогов.
Зеркалирование сайта аналогично рекурсивной загрузке без максимального уровня глубины.
Вы также можете использовать опцию -recursive -level inf -timestamping -no-remove-listing, что означает бесконечную рекурсию.
Вы также можете использовать wget для архивирования сайта с опциями -no-cookies -page-requisites -convert-links.
Он загрузит полные страницы и гарантирует, что копия сайта будет самодостаточной и похожей на оригинальный сайт.
$ wget --mirror --convert-links itsecforu.ru $ wget -recursive --level inf --timestamping –no-remove-listing
Обратите внимание, что при архивировании сайта будет загружено много данных, особенно если сайт старый.
Чтение URL-адресов из текстового файла
Команда wget может считывать несколько URL из текстового файла с помощью опции -i.
Входной текстовый файл может содержать несколько URL, но каждый URL должен начинаться с новой строки.
$cat URLS.txt itisgood.ru itsecforu.ru
Пример команды:
$ wget -i URLS.txt
Расширение сокращенного URL-адреса
Вы можете использовать опцию wget -max-redirect для просмотра сокращенных URL перед посещением сайта.
Сокращенные URL необходимы для печатных СМИ или социальных сетей с ограничением количества символов.
Кроме того, сокращенные URL могут быть подозрительными, поскольку их назначение скрыто по умолчанию.
Примечание: Более эффективная практика заключается в комбинировании опций -head и -location для просмотра HTTP-заголовков и разгадки конечного адреса URL.
Это позволяет заглянуть в сокращенный URL без загрузки полного ресурса.
wget --max-redirect 0 https://t.co/GVr5v9554B?amp=1 --2021-11-30 13:50:53-- https://t.co/GVr5v9554B?amp=1 Resolving t.co (t.co)... 104.244.42.69, 104.244.42.133, 104.244.42.5, ... Connecting to t.co (t.co)|104.244.42.69|:443... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: https://bit.ly/ [following] 0 redirections exceeded.
Примечание: Предполагаемое место назначения раскрывается в выходной строке, начинающейся с location.
Изменение заголовков HTML
Информация заголовков HTTP – это одно из метаданных, встроенных в пакеты, которые компьютеры посылают для обмена данными.
Например, каждый раз, когда вы посещаете веб-сайт, ваш браузер отправляет заголовки HTTP-запросов.
Вы можете использовать опцию -debug, чтобы узнать информацию о заголовках, которую wget отправляет вашему браузеру при каждом запросе.
$ wget --debug itsecforu.ru DEBUG output created by Wget 1.14 on linux-gnu. URI encoding = ‘UTF-8’ Converted file name 'index.html' (UTF-8) -> 'index.html' (UTF-8) Converted file name 'index.html' (UTF-8) -> 'index.html' (UTF-8) --2021-11-30 13:52:50-- https://itsecforu.ru/ Resolving itsecforu.ru (itsecforu.ru)... 31.31.198.167, 2a00:f940:2:2:1:3:0:153 Caching itsecforu.ru => 31.31.198.167 2a00:f940:2:2:1:3:0:153 Connecting to itsecforu.ru (itsecforu.ru)|31.31.198.167|:80... connected. Created socket 3. Releasing 0x00000000011d2900 (new refcount 1). ---request begin--- GET / HTTP/1.1 User-Agent: Wget/1.14 (linux-gnu) Accept: */* Host: itsecforu.ru Connection: Keep-Alive ---request end--- HTTP request sent, awaiting response... ---response begin--- HTTP/1.1 301 Moved Permanently Server: nginx Date: Tue, 30 Nov 2021 07:29:55 GMT Content-Type: text/html Transfer-Encoding: chunked Connection: keep-alive Location: https://itsecforu.ru:443/ ---response end--- 301 Moved Permanently Registered socket 3 for persistent reuse. Location: https://itsecforu.ru:443/ [following] Skipping 162 bytes of body: [<html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html> ] done. URI content encoding = None Converted file name 'index.html' (UTF-8) -> 'index.html' (UTF-8) Converted file name 'index.html' (UTF-8) -> 'index.html' (UTF-8) --2021-11-30 13:52:50-- https://itsecforu.ru/ Found itsecforu.ru in host_name_addresses_map (0x11d2900) Connecting to itsecforu.ru (itsecforu.ru)|31.31.198.167|:443... connected. Created socket 4. Releasing 0x00000000011d2900 (new refcount 1). Initiating SSL handshake. Handshake successful; connected socket 4 to SSL handle 0x00000000012b6950 certificate: subject: /CN=www.itsecforu.ru issuer: /C=BE/O=GlobalSign nv-sa/CN=GlobalSign GCC R3 DV TLS CA 2020 X509 certificate successfully verified and matches host itsecforu.ru
Просмотр заголовков ответов с помощью команды wget
Вы можете использовать опцию -debug также для просмотра информации о заголовках ответов в возвращаемых ответах.
Запуск команды wget в качестве web spider
Вы можете заставить команду wget работать как спайдера используя опцию -spider.
По сути, она не будет загружать веб-страницы, а только проверит их наличие.
Более того, о любых неработающих URL-адресах будет также сообщено.
$ wget -r --spider itsecforu.ru
Запуск команды wget в фоновом режиме
Вы можете использовать опцию -b / -background для запуска процесса wget в фоновом режиме.
Это необходимо, если вы загружаете большие файлы, для завершения которых потребуется больше времени.
$ wget -b itsecforu.ru/latest.tar.gz
По умолчанию вывод процесса wget перенаправляется в ‘wget-log’.
Однако вы можете указать другой файл журнала с помощью опции -o.
Чтобы следить за процессом wget, используйте команду tail.
$ tail -f wget-log
Запуск wget в режиме отладки
Когда вы запускаете wget в режиме отладки, вывод включает информацию об удаленном сервере, такую как заголовки запросов и ответов wget.
Заголовки запросов и ответов очень важны для системных администраторов и веб-разработчиков.
$ wget --debug itsecforu.ru
Изменение User-Agent команды wget
Вы можете изменить User Agent по умолчанию с помощью опции -user-agent.
Например, вы можете использовать ‘Mozilla/4.0’ в качестве wget User-Agent для получения itsecforu.ru с помощью следующей команды.
$ wget --user-agent='Mozilla/4.0' itsecforu.ru
Заключение
Команда wget в Linux предоставляет эффективный способ получения и загрузки данных из Интернета без использования браузера.
Как и универсальная команда curl, wget может обрабатывать любые сложные сценарии загрузки, такие как загрузка больших файлов, неинтерактивная загрузка и загрузка нескольких файлов.