🖧 Советы и рекомендации по использованию команды wget в системах Linux

Мануал

Wget – это утилита командной строки с открытым исходным кодом для загрузки файлов и веб-страниц из Интернета.

Она получает данные из Интернета и отображает их в терминале или сохраняет в файл.

Утилита wget является неинтерактивной.

Вы можете получить максимальную отдачу от нее с помощью скриптов или даже запланировать загрузку файлов.

Обычно веб-браузеры, такие как Firefox или Chromium, также загружают файлы, но по умолчанию они отображают информацию в графическом окне и требуют от пользователя взаимодействия с ними.

В качестве альтернативы другие пользователи системы Linux используют команду curl для передачи данных с сетевого сервера.

🖧 В чем разница между curl и Wget?

В статье показано, как использовать команду wget для загрузки веб-страниц и файлов из Интернета.

Содержание
  1. Установка wget на Linux
  2. Загрузка файла с помощью команды wget
  3. Отправка загруженных данных в стандартный вывод
  4. Сохранение загруженных файлов с другим именем файла
  5. Скачивание последовательности файлов
  6. Скачивание нескольких страниц и файлов
  7. Возобновление частичной загрузки
  8. Управление рекурсивными загрузками с помощью команды wget
  9. Преобразование ссылок для локального просмотра
  10. Загрузка определенных типов файлов
  11. Загрузка файлов с FTP-сервера
  12. Установка максимального размера загрузки с помощью команды wget
  13. Установка ограничения скорости загрузки с помощью команды wget
  14. Зеркалирование сайта с помощью команды wget
  15. Чтение URL-адресов из текстового файла
  16. Расширение сокращенного URL-адреса
  17. Изменение заголовков HTML
  18. Просмотр заголовков ответов с помощью команды wget
  19. Запуск команды wget в качестве web spider
  20. Запуск команды wget в фоновом режиме
  21. Запуск wget в режиме отладки
  22. Изменение User-Agent команды wget
  23. Заключение

Установка 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 может обрабатывать любые сложные сценарии загрузки, такие как загрузка больших файлов, неинтерактивная загрузка и загрузка нескольких файлов.

 

Добавить комментарий