Команда wget
Wget – это мощная утилита для скачивания файлов, с ее помощью можно загружать файлы по протоколам HTTP, HTTPS и FTP. При этом поддерживается скачивание с использованием прокси, а также работа в фоновом режиме.
Кроме этого, с помощью wget можно скачивать веб страницы или даже целые веб-сайты. Для этого используется рекурсивный обход всех найденных на странице ссылок и создание локальной копии сайта с воссозданием его структуры.
Wget хорошо работает с медленным или нестабильным подключением к интернету. В случае разрыва соединения wget будет повторять попытки скачивания до тех пор, пока весь файл не будет загружен. При этом продолжение загрузки будет начинаться с того места, где она остановилась.
Синтаксис команды wget выглядит следующим образом:
wget
Утилита wget доступна на большинстве дистрибутивов Linux. Но, если в вашей системе ее нет, то вы можете установить ее самостоятельно. В Ubuntu для этого нужно выполнить команду:
apt-get install wget
В общем случае для скачивания файла через терминал Linux достаточно ввести команду «wget» и через пробел указать URL адрес, после чего начнется загрузка указанного документа. Например, команда на скачивание файла может выглядеть вот так:
wget https://releases.ubuntu.com/18.04.4/ubuntu-18.04.4-live-server-amd64.iso
Если нужно скачать несколько файлов подряд, то их адреса можно передать утилите wget за один раз. Для этого просто указываем их через пробел. Например:
wget https://releases.ubuntu.com/18.04.4/ubuntu-18.04.4-live-server-amd64.iso https://releases.ubuntu.com/18.04.4/ubuntu-18.04.4-live-server-amd64.iso
При необходимости, для скачиваемого файла можно указать новое название. Для этого нужно использовать опцию «-O». В этом случае команда для скачивания файла будет выглядеть так:
wget -O ubuntu.iso https://releases.ubuntu.com/18.04.4/ubuntu-18.04.4-live-server-amd64.iso
В случае прерывания загрузки ее можно продолжить. Для этого нужно запустить команду wget еще раз, но в этот раз с добавлением опции «-c». Команда перезапуска загрузки выглядит примерно так:
wget -c https://releases.ubuntu.com/18.04.4/ubuntu-18.04.4-live-server-amd64.iso
Если во время скачивания файла вы хотите продолжить работу с терминалом Linux, то загрузку можно выполнить в фоновом режиме. Для этого нужно использовать опцию «-b». Команда для скачивания файла в фоновом режиме выглядит примерно так:
wget -b https://releases.ubuntu.com/18.04.4/ubuntu-18.04.4-live-server-amd64.iso
Это основные опции команды «wget», которые используются чаще всего. Для того чтобы ознакомиться со всеми доступными опциями введите команду «man wget».
Скачать файл с помощью elinks
Еще одна ситуация, когда вам нужно скачать файл из командной строки linux, вы знаете где его найти, но у вас нет прямой ссылки. Тогда все ранее описанные утилиты не помогут. Но вы можете использовать один из консольных браузеров, например, elinks. Если эта программа еще не установлена, то вы можете найти ее в официальных репозиториях своих дистрибутивов.
Запустите браузер, например, с помощью команды:
В первом окне нажмите Enter:
Затем введите URL страницы, например, не будем далеко ходить и снова скачаем ядро с kernel.org:
Когда вы откроете сайт, останется только выбрать URL для загрузки:
Далее выберите что нужно сделать с файлом, например, сохранить (save), а также выберите имя для нового файла:
В следующем окне вы увидите информацию о состоянии загрузки:
Как установить wget на windows
Сразу оговоримся что большого различия между windows 7,10 и xp нету, так что инструкцию можно считать универсальной.
1 шаг — Скачиваем программу
2 шаг — Распаковываем содержимое архива на диск C: в папку wget.
3 шаг — Настройка программы
Наводим курсор мыши на кнопку ПУСК — открываем проводник — слева находим Мой компьютер(нажимаем правой клавишей мыши — свойства). Переходим во вкладку «Дополнительно» и нажимаем кнопку «Переменные среды»
В окне системные переменные находим переменную Path нажимаем кнопку изменить и в значение переменной в самом конце добавляем «;c:\wget» (не забывайте про «;» )
Подробное видео установки на Windows 10 смотрите ниже:
Основные принципы при выборе и покупки домена Покупка домена – Подробнее:
От мечты к делу. Создание сайта Некоторые люди мечтают создать Подробнее:
Что такое раскрутка? Раскрутка инстаграм – это продвижение аккаунта в Подробнее:
Общее описание Иногда перед вебмастером встает задача по созданию сайта, Подробнее:
Загрузка файла с помощью curl
Утилита curl предназначена для решения задач другого типа задач. Она больше подходит для отладки приложений и просмотра заголовков. Но иногда применяется и для загрузки файлов. По умолчанию, curl будет отправлять полученные данные сразу в стандартный вывод, поэтому она более удобна для загрузки скриптов:
Если же вы хотите записать загруженные данные в файл, то нужно использовать опцию -O и обязательно в верхнем регистре:
Когда загрузка файла в linux будет завершена, он будет находится в текущей папке. Вывод утилиты состоит из нескольких колонок, по которым можно детально отследить как происходит процесс загрузки:
- % — показывает на сколько процентов загрузка завершена на данный момент;
- Total — полный размер файла;
- Reсeived — количество полученных данных;
- Xferd — количество отправленных на сервер данных, работает только при выгрузке файла;
- Average Speed Dload — средняя скорость загрузки;
- AVerage Speed Upload — скорость отдачи для выгрузки файлов;
- Time Total — отображает время, которое уйдет на загрузку всего файла;
- Time Spend — сколько времени потрачено на загрузку файла;
- Time Left — время, которое осталось до конца загрузки файла;
- Current Speed — отображает текущую скорость загрузки или отдачи.
Если вы хотите скачать файл из командной строки linux и сохранить его с произвольным именем, используйте опцию -o в нижнем регистре:
Например, если для этого файла не задать имя, то он запишется с именем скрипта, а это не всегда удобно. Если остановиться на отличиях curl от wget, то здесь поддерживается больше протоколов: FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMTP, RTMP и RTSP, а также различные виды шифрования SSL.
Как скачивать сразу несколько файлов
Для одновременной загрузки нескольких файлов можно воспользоваться опцией -i и задать путь к текстовому файлу со списку URL для загрузки:
wget -i linux-distros.txt
Содержимое файла linux-distros.txt может выглядеть следующим образом:
https://mirrors.edge.kernel.org/archlinux/iso/2018.06.01/archlinux-2018.06.01-x86_64.iso https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso https://download.fedoraproject.org/pub/fedora/linux/releases/28/Server/x86_64/iso/Fedora-Server-dvd-x86_64-28-1.1.iso
Каждый URL в списке должен начинаться с новой строки.
Команда curl
Curl – еще одна мощная утилита для скачивания файлов, которая доступна из терминала Linux. С ее помощью можно скачивать файлы по протоколам HTTP, HTTPS, FTP, FTPS, TFTP, Telnet, SCP, SFTP, DICT, LDAP, а также POP3, IMAP и SMTP. Также curl поддерживает работу через прокси, веб-аутентификацию, отправку данных через http, работу с cookie-файлами и многое другое.
Синтаксис команды curl выглядит следующим образом:
curl
Команда curl может отсутствовать в вашем дистрибутиве Linux. Но, вы можете установить ее самостоятельно. В Ubuntu для этого нужно выполнить следующую команду:
sudo apt-get install curl
По умолчанию, команда curl выводит скачанное прямо в терминал. Это может быть полезно в некоторых случаях, но чаще всего требуется сохранение скачанного в виде файла. Для этого следует использовать опцию «-O». Например, команда на скачивание файла с помощью curl может выглядеть примерно так:
Если нужно скачать сразу несколько файлов, то их можно указать через пробел один за другим. При этом для каждого из файлов нужно указать опцию «-O». Выглядит это примерно так:
curl -O https://releases.ubuntu.com/18.04.4/ubuntu-18.04.4-live-server-amd64.iso -O https://releases.ubuntu.com/18.04.4/ubuntu-18.04.4-live-server-amd64.iso
При желании можно изменить имя для скачиваемого файла. Для этого нужно использовать опцию «-o» и после нее указать новое имя для файла. Например:
curl -o ubuntu.iso https://releases.ubuntu.com/18.04.4/ubuntu-18.04.4-live-server-amd64.iso
Если загрузка была прервана, то ее можно продолжить с того места, где она остановилась. Для этого нужно еще раз выполнить команду «curl», но с добавлением опции «-C —». Например:
curl -o ubuntu.iso -C - https://releases.ubuntu.com/18.04.4/ubuntu-18.04.4-live-server-amd64.iso
Это основные опции команды «curl», которые применяются чаще всего. Для того чтобы посмотреть все доступные опции выполните команду «man curl».
Опции
Синтаксис опций очень свободный. У каждой опции, как правило есть как длинное, так и короткое имя. Их можно записывать как до URL, так и после. Между опцией и ее значением не обязательно ставить пробел, например вы можете написать -o log или -olog. Эти значения эквивалентны. Также если у опций нет параметров, не обязательно начинать каждую с дефиса, можно записать их все вместе: -drc и -d -r -c. Эти параметры wget тоже эквивалентны.
А теперь давайте перейдем к списку опций. У wget слишком много опций, мы разберем только основные.
- -V (—version) — вывести версию программы
- -h (—help) — вывести справку
- -b (—background) — работать в фоновом режиме
- -o файл (—out-file) — указать лог файл
- -d (—debug) — включить режим отладки
- -v (—verbose) — выводить максимум информации о работе утилиты
- -q (—quiet) — выводить минимум информации о работе
- -i файл (—input-file) — прочитать URL из файла
- —force-html — читать файл указанный в предыдущем параметре как html
- -t (—tries) — количество попыток подключения к серверу
- -O файл (—output-document) — файл в который будут сохранены полученные данные
- -с (—continue) — продолжить ранее прерванную загрузку
- -S (—server-response) — вывести ответ сервера
- —spider — проверить работоспособность URL
- -T время (—timeout) — таймаут подключения к серверу
- —limit-rate — ограничить скорость загрузки
- -w (—wait) — интервал между запросами
- -Q (—quota) — максимальный размер загрузки
- -4 (—inet4only) — использовать протокол ipv4
- -6 (—inet6only) — использовать протокол ipv6
- -U (—user-agent)- строка USER AGENT отправляемая серверу
- -r (—recursive)- рекурсивная работа утилиты
- -l (—level) — глубина при рекурсивном сканировании
- -k (—convert-links) — конвертировать ссылки в локальные при загрузке страниц
- -P (—directory-prefix) — каталог, в который будут загружаться файлы
- -m (—mirror) — скачать сайт на локальную машину
- -p (—page-requisites) — во время загрузки сайта скачивать все необходимые ресурсы
Кончено это не все ключи wget, но здесь и так слишком много теории, теперь давайте перейдем к практике. Примеры wget намного интереснее.
Параметры HTTP
- —cookies=on/off — Включает или выключает использование cookie. Сервер отправляет клиенту cookie, используя заголовок «Set-Cookie» и клиент отвечает таким же cookie. Благодаря этому сервер может вести статистику посетителей. По умолчанию cookie используются, но запись их на диск выключена.
- —load-cookiesfile — Загружать cookie изfile перед первой загрузкой HTTP.file имеет текстовый формат, какcookies.txt у Netscape. Этот параметр используется при зеркалировании. Для этого Wget отправляет те же cookies, которые отправляет ваш браузер при соединении с сервером HTTP. Это включается данным параметром — просто укажите Wget путь кcookies.txt . Разные браузеры хранят cookie в разных папках:
Параметр —load-cookies будет работать с cookie в формате Netscape, который поддерживается Wget.
Если вы не можете использовать параметр —load-cookies, то все равно есть выход. Если ваш обозреватель поддерживает Запишите имя и значение cookie и вручную укажите Wget отправку этих cookie:wget —cookies=off —header «Cookie: I=I»
—save-cookies file — Сохранить cookie изfile в конце сессии. Устаревшие cookie не сохраняются.
—ignore-length — Некоторые серверы HTTP (точнее, скрипты CGI) отправляют заголовки»Content-Length», которые указывают Wget, что загружено еще не все. И Wget загружает один документ несколько раз. С этим параметром, Wget будет игнорировать заголовки «Content-Length».
—header=additional-header — Определяетadditional-header , отправляемый серверу HTTP. Он должен содержать : и символы после него. Вы можете определить несколько дополнительных заголовков через использование —header несколько раз.
wget —header=’Accept-Charset: iso-8859-2′ —header=’Accept-Language: hr’ https://kyrych.ru/Указание пустой строки в значении заголовка очистит все определенные пользователем до этого заголовки.
—proxy-user=user и —proxy-passwd=password — Определяет имя пользователяuser и пароль password для авторизации сервере прокси. Будет использован тип авторизации «basic».
—referer=url — Добавляет заголовок `Referer:url ‘ в запрос HTTP. Используется при загрузке страниц, которые передаются правильно только если сервер знает, с какой страницы вы пришли.
-s (—save-headers) — Сохранять заголовки, отправляемые серверам HTTP.
-U agent-string ( —user-agent=agent-string) — Идентифицироваться, какagent-string при запросе на HTTP сервер. Протокол HTTP позволяет определять себя использованием заголовка агента. Wget по умолчанию идентифицируется, как Wget/version , гдеversion — это версия Wget. Некоторые серверы выдают требуемую информацию только для обозревателей, идентифицирующихся как «Mozilla» или Microsoft «Internet Explorer». Этот параметр позволяет обмануть такие серверы.
Опции
Синтаксис опций очень свободный. У каждой опции, как правило есть как длинное, так и короткое имя. Их можно записывать как до URL, так и после. Между опцией и ее значением не обязательно ставить пробел, например вы можете написать -o log или -olog. Эти значения эквивалентны. Также если у опций нет параметров, не обязательно начинать каждую с дефиса, можно записать их все вместе: -drc и -d -r -c. Эти параметры wget тоже эквивалентны.
А теперь давайте перейдем к списку опций. У wget слишком много опций, мы разберем только основные.
- -V (—version) — вывести версию программы
- -h (—help) — вывести справку
- -b (—background) — работать в фоновом режиме
- -o файл (—out-file) — указать лог файл
- -d (—debug) — включить режим отладки
- -v (—verbose) — выводить максимум информации о работе утилиты
- -q (—quiet) — выводить минимум информации о работе
- -i файл (—input-file) — прочитать URL из файла
- —force-html — читать файл указанный в предыдущем параметре как html
- -t (—tries) — количество попыток подключения к серверу
- -O файл (—output-document) — файл в который будут сохранены полученные данные
- -с (—continue) — продолжить ранее прерванную загрузку
- -S (—server-response) — вывести ответ сервера
- —spider — проверить работоспособность URL
- -T время (—timeout) — таймаут подключения к серверу
- —limit-rate — ограничить скорость загрузки
- -w (—wait) — интервал между запросами
- -Q (—quota) — максимальный размер загрузки
- -4 (—inet4only) — использовать протокол ipv4
- -6 (—inet6only) — использовать протокол ipv6
- -U (—user-agent)— строка USER AGENT отправляемая серверу
- -r (—recursive)- рекурсивная работа утилиты
- -l (—level) — глубина при рекурсивном сканировании
- -k (—convert-links) — конвертировать ссылки в локальные при загрузке страниц
- -P (—directory-prefix) — каталог, в который будут загружаться файлы
- -m (—mirror) — скачать сайт на локальную машину
- -p (—page-requisites) — во время загрузки сайта скачивать все необходимые ресурсы
Кончено это не все ключи wget, но здесь и так слишком много теории, теперь давайте перейдем к практике. Примеры wget намного интереснее.
Команды wget для windows
Давайте откроем небольшую инструкцию под названием — как скачать сайт целиком на windows!
Я уже писал ранее статью о командах wget и повторю здесь самые основные:
wget -r -k -l 7 -p -E -nc https://site.com/ — скачивает сайт целиком и полностью
-r | — | указывает на то, что нужно рекурсивно переходить по ссылкам на сайте, чтобы скачивать страницы. |
-k | — | используется для того, чтобы wget преобразовал все ссылки в скаченных файлах таким образом, чтобы по ним можно было переходить на локальном компьютере (в автономном режиме). |
-p | — | указывает на то, что нужно загрузить все файлы, которые требуются для отображения страниц (изображения, css и т.д.). |
-l | — | определяет максимальную глубину вложенности страниц, которые wget должен скачать (по умолчанию значение равно 5, в примере мы установили 7). В большинстве случаев сайты имеют страницы с большой степенью вложенности и wget может просто «закопаться», скачивая новые страницы. Чтобы этого не произошло можно использовать параметр -l. |
-E | — | добавлять к загруженным файлам расширение .html. |
-nc | — | при использовании данного параметра существующие файлы не будут перезаписаны. Это удобно, когда нужно продолжить загрузку сайта, прерванную в предыдущий раз. |
Да кстати, иногда wget может ругаться на некоторые сертификаты(самоподписанные например) для этого существует команда: —no-check-certificate
НАЙДЕННЫЕ ОШИБКИ
Вы можете отправлять отчеты об ошибках в GNU Wget на адрес <"[email protected]"> (на английском).
Перед отправкой:
- 1.
- Убедитесь, что поведение программы действительно ошибочно. Если Wget «вылетает», то это ошибка. Если поведение Wget не соответствует документации, то это ошибка. Если все работает странно, но вы не уверены, как оно должно работать на самом деле, то это тоже может быть ошибкой.
- 2.
- Попытайтесь повторить ситуацию с выдачей ошибки за минимальное количество действий.
Не спешите отправлять .wgetrc, попробуйте проделать все действия, приведшие к ошибке с другим файлом настроек (или вообще без него).
- 3.
- Запустите Wget с параметром -d и отправьте журнал (или его части). Намного легче отыскивать ошибки при наличии таких журналов.
- 4.
- Если Wget выдал ошибку, то попытайтесь запустить его в отладчике, например "gdb `which wget` core" и введите "where" для получения обратной трассировки.
Команда wget для загрузки нескольких файлов
Если вы хотите загрузить несколько файлов в одно и то же время, вы можете создать текстовый файл (например download.txt), где разместить все URL-адреса файлов, которые вы хотите загрузить. Для создания текстового файла выполните следующие действия:
touch download.txt
После этого вы можете отредактировать файл с nano и ввести все URL-адреса всех файлов, которые вы хотите загрузить:
nano download.txt
http://example.com/file1.zip http://example.com/file2.zip http://example.com/file3.zip
После сохранения файла, вы можете использовать опцию -i, чтобы загрузить все файлы, сохраненные в этом текстовом файле:
wget -i download.txt
Использование wget Linux
Команда wget linux, обычно поставляется по умолчанию в большинстве дистрибутивов, но если нет, ее можно очень просто установить. Например установка с помощью yum будет выглядеть следующим образом:
А в дистрибутивах основанных на Debian:
Теперь перейдем непосредственно к примерам:
1. Загрузка файла
Команда wget linux скачает один файл и сохранит его в текущей директории. Во время загрузки мы увидим прогресс, размер файла, дату его последнего изменения, а также скорость загрузки:
Опция -О позволяет задать имя сохраняемому файлу, например, скачать файл wget с именем wget.zip:
Вы можете скачать несколько файлов одной командой даже по разным протоколам, просто указав их URL:
4. Взять URL из файла
Вы можете сохранить несколько URL в файл, а затем загрузить их все, передав файл опции -i. Например создадим файл tmp.txt, со ссылками для загрузки wget, а затем скачаем его:
5. Продолжить загрузку
Утилита wget linux рассчитана на работу в медленных и нестабильных сетях. Поэтому если вы загружали большой файл, и во время загрузки было потеряно соединение, то вы можете скачать файл wget с помощью опции -c.
6. Загрузка файлов в фоне
Опция -b заставляет программу работать в фоновом режиме, весь вывод будет записан в лог файл, для настройки лог файла используются специальные ключи wget:
7. Ограничение скорости загрузки
Команда wget linux позволяет не только продолжать загрузку файлов, но и ограничивать скорость загрузки. Для этого есть опция —limit-rate. Например ограничим скорость до 100 килобит:
Здесь доступны, как и в других подобных командах индексы для указания скорости — k — килобит, m — мегабит, g — гигабит, и так далее.
8. Подключение по логину и паролю
Некоторые ресурсы требуют аутентификации, для загрузки их файлов. С помощью опций —http-user=username, –http-password=password и —ftp-user=username, —ftp-password=password вы можете задать имя пользователя и пароль для HTTP или FTP ресурсов.
Или:
9. Загрузить и выполнить
Вы, наверное, уже видели такие команды. wget позволяет сразу же выполнять скачанные скрипты:
Если опции -O не передать аргументов, то скачанный файл будет выведен в стандартный вывод, затем мы его можем перенаправить с интерпретатор bash, как показано выше.
По умолчанию wget сохраняет файл в текущую папку, но это поведение очень легко изменить с помощью опции -P:
11. Передать информацию о браузере
Некоторые сайты фильтруют ботов, но мы можем передать фальшивую информацию о нашем браузере (user-agent) и страницу с которой мы пришли (http-referer).
12. Количество попыток загрузки
По умолчанию wget пытается повторить загрузку 20 раз, перед тем как завершить работу с ошибкой. Количество раз можно изменить с помощью опции —tries:
13. Квота загрузки
Если вам доступно только ограниченное количество трафика, вы можете указать утилите, какое количество информации можно скачивать, например разрешим скачать файлов из списка только на десять мегабайт:
Здесь работают те же индексы для указания размера — k, m, g, и т д.
14. Скачать сайт
Wget позволяет не только скачивать одиночные файлы, но и целые сайты, чтобы вы могли их потом просматривать в офлайне. Использование wget, чтобы скачать сайт в linux выглядит вот так:
Шпаргалка по Wget
- linux
- bash/sh и т.д.
GNU Wget — это маленька полезная и открыто распостраняемая утилита для загрузки файлов из интернет. Она поддерживает протоколы HTTP, HTTPS, и FTP, загрузку с серверов прокси по протоколу HTTP. Среди возможностей программы стоит отметить:
- Обход сайта: Wget может переходить по ссылкам на HTML страницах и создавать локальные копии удаленных сайтов web, при этом возможно полное восстановление структуры папок сайта («recursive downloading» — рекурсивная загрузка). Во время такой работы Wget ищет файл с правами доступа для роботов (/robots.txt). Возможна также конвертация ссылок в загруженных файлах HTML для дальнейшего просмотра сайта в автономном режиме («off-line browsing»).
- Проверка заголовков файлов: Wget может считывать заголовки файлов (это доступно по протоколам HTTP и FTP) и сравнивать их с заголовкам ранее загруженных файлов, после чего может загрузить новые версии файлов. Это позволяет использовать Wget для зеркального хранения сайтов или набора файлов на FTP.
- Продолжение загрузки: если во время загрузки возникнет проблема, то Wget будет пытаться продолжить загрузку файла. Если сервер, с которого загружается файл, поддерживает докачку файлоа, то Wget продолжит загружать файл именно с того места, где оборвалась загрузка.
Заключение
Утилита Wget является OpenSource и распространяется бесплатно, более исчерпывающую информацию можно найти на официальном сайте: https://www.gnu.org/software/wget/, правда, на Английском языке. В среде Unix подобных систем утилита Wget прочно закрепилась. Wget берет свое начало аж с 1996 года, что весьма не малый срок для любой программы. Сама же утилита написана на языке программирования C. Имеется в репозиториях практически всех дистрибутивов Linux.
Думаю, вы не догадывались о таких обширных возможностях такой на первый взгляд простой утилиты.
Несмотря на такой обширный список возможностей, есть вероятность, что вам будет недостаточно одной лишь утилиты Wget. Существует и другая утилита, которая более продвинута в плане скачивания файлов – Curl. Но, о ней как-нибудь в следующий раз.
А на этом сегодня все, надеюсь, данная статья будет вам полезна.
Хотелось бы выразить огромную благодарность тем, кто принимает активное участие в жизни и развитии журнала, огромное спасибо вам за это.Журнал Cyber-X