Утилита WGET заберет данные с удаленной системы

Однако Wget располагает уникальными функциями, которых нет в Curl, в частности, возможностью рекурсивно загружать целые Web-узлы, а не отдельные файлы. В данной статье рассказывается, как использовать Wget для типовых административных задач. Этот инструмент значительно облегчает перестройку сервера и автоматизированные загрузки.

Загружаем и устанавливаем Wget

Бесплатную утилиту Wget можно загрузить из сайта GNU (http://www.gnu.org/software/wget/wget.html). Существуют двоичные файлы Wget для большинства версий операционных систем Linux, Unix и Windows. Можно скомпилировать собственный программный код из исходного текста. На отдельном Web-узле (http://xoomer.virgilio.it/hherold) размещена новейшая версия для Windows, заимствованная из Web-узла GNU. Как и для многих других инструментов командной строки с открытым исходным кодом на основе Linux и Unix, существует множество разновидностей утилиты, в том числе версии с графическим интерфейсом для Windows. Довольно много версий с графическим интерфейсом для Windows можно найти, если провести поиск в Web по ключевым словам Wget, Windows и GUI.

В данной статье рассматривается базовая версия GNU, обновленная и напрямую перенесенная из Linux/Unix. Изучая функции инструмента, можно обнаружить другие версии и интерфейсы, более подходящие для конкретных нужд. Например, wGetGui (http://www.jensroesner.de/wgetgui) показывает большинство параметров Wget в доступном графическом окне, но не так удобна для использования в сценариях или пакетных файлах, как версии с командной строкой. В WinWGet (http://www.cybershade.us/winwget) базовая функциональность Wget расширена за счет поддержки заданий для загрузки из сети, что позволяет подготовить несколько заданий в элегантном интерфейсе Windows.

Чтобы настроить Wget на использование HTTPS, необходимо установить библиотеки OpenSSL, которые представляют собой простые DLL-файлы из загружаемого пакета Wget. Следует распаковать файл Wget.zip и добавить каталог Wget в путь поиска, или скопировать файлы wget.exe, libeay32.dll и ssleay32.dll в папку, для которой задан путь (например, C:windows, C:windowssystem32). Среди загружаемых файлов Wget имеется справочный файл для Windows (wget.hlp). Список многочисленных параметров командной строки можно получить в любое время, введя команду

wget help

Работать с Wget просто. Чтобы извлечь удаленную Web-страницу, следует открыть командную строку и ввести команду

wget http:///
index.html

Если Web-страница, выбираемая по умолчанию, неизвестна, то достаточно ввести

wget http://

и Wget загрузит домашнюю страницу по умолчанию, точно так же, как при вводе URL в браузер. По умолчанию, Wget сохраняет файлы в каталоге, из которого запущена команда. Указать другой путь можно с помощью параметра -P . Если извлеченный файл представлен в формате HTML, то открыть его можно в текстовом редакторе (например, Notepad). Если открыть файл в браузере, то скорее всего, будет воспроизведена лишь частичная копия Web-узла, так как в данном примере извлекается только Web-страница по умолчанию, без вспомогательных файлов, таких как графические изображения и таблицы стилей.

Возможности Wget заметно расширяются, если использовать инструмент с параметрами командной строки. Например, параметр -r обесапечивает рекурсивное извлечение. По команде

wget -r http://

Wget исследует сайт и загружает все обнаруженные Web-страницы, графические изображения и Web-страницы, на которые есть ссылки. Глубина рекурсии -- пять уровней. Другими словами, утилита извлекает первую Web-страницу, находит ссылки на этой странице, извлекает Web-страницы, на которые указывают ссылки, и повторяет этот процесс до тех пор, пока не будет достигнут пятый уровень. Ограничить глубину исследования можно, указав уровень с помощью ключа -l n. Например, команда

wget -r -l 2 http://

задает поиск на Web-узле на два уровня в глубину. При использовании рекурсии следует соблюдать осторожность, иначе можно заполнить извлеченными страницами весь жесткий диск. Кроме того, вы можете навлечь на себя гнев Web-администраторов, так как инструмент пытается извлечь все обнаруженные файлы как можно быстрее и создает лишнюю нагрузку на сайт, особенно если пропускная способность вашего (и узла) канала связи невелика. С помощью параметра -w можно вежливо указать время ожидания (в секундах) между загрузкой страниц.

Извлеченные файлы сохраняются в новом каталоге, названном по имени Web-узла. В предыдущем примере, Wget создал бы каталог с именем www.targetwebsite.com и сохранил локальную копию сайта в этом каталоге. Этот каталог создается в каталоге, из которого был запущен инструмент, если с помощью параметра -P path не указано другое место. Например,

wget -r -l 2 -P C:wgetstuff
http://

обеспечивает загрузку Web-узла в C:wgetstuffwww.targetwebsite.com. В этой папке будет сохранено содержимое собственно Web-узла - например, такие файлы, как index.html, каталоги с именами /images и /css, и любые другие основные и вспомогательные файлы для этого сайта.

Ссылки, обнаруженные в извлекаемых страницах, используются для доставки новых Web-страниц и файлов, поэтому для инструмента не требуется, чтобы на целевом Web-узле были активизированы режим просмотра каталогов или индексация сайта. Предположим, index.html - главная страница Web-узла, и содержит ссылки на три изображения. Wget сохранит всего четыре файла, независимо от того, какие файлы могут находиться в каталоге. Wget рекурсивно извлекает любые файлы, на которые указаны ссылки - даже с других сайтов. При этом создается каталог для каждого файла, связанного с оригиналом, до рекурсивного предела. Инструмент создает каталоги для других Web-узлов параллельно с каталогом Web-узла из первоначального запроса Wget.

Wget обеспечивает и более передовые функции просмотра Web, в том числе аутентификацию, файлы-маяки (пользовательские и сеансовые) и Web-прокси. Можно настроить множество параметров просмотра, например, источник ссылки (referrer) и пользовательского агента. Можно назначать методы POST или настроить Wget на выполнение инструкций в файле robots.txt или Robots META tag на сайте.

Выбор определенных файлов и каталогов

С помощью параметров -I directory list и -A file extension list можно настроить Wget на загрузку файлов только из указанных каталогов или файлов определенных типов. Например, команда

wget -r -I /images http://

загружает только содержимое каталога /images. Команда

wget -r -A jpg,gif http://

загружает только изображения JPEG и GIF. Эти параметры полезны для фильтрации загружаемого контента, чтобы сэкономить как пространство на жестком диске, так и полосу пропускания канала связи.

Ограничения Wget

В сущности, Wget строит локальную копию удаленного Web-узла, но при этом, утилите свойственны некоторые ограничения - особенно при извлечении файлов из сложных узлов. Wget проходит Web-узел только по ссылкам, и вероятно, не соберет все данные, доступные при прямом посещении сайта. Например, невозможна навигация по событиям, таким как щелчки мышью для загрузки файла (вместо прямой ссылки на файл на Web-странице). Аналогично, из динамически формируемых Web-страниц удается извлечь только статический HTML-контент, переданный в данное время для данного типа браузера. Wget лучше всего подходить для сбора простых файлов и загрузки с простых Web-узлов.

Узлы FTP

Wget - хорошая альтернатива встроенному FTP-клиенту Windows, благодаря совместимости с универсальными символами и сохранению меток даты и времени оригинального файла. Для загрузки по расписанию только новейших файлов из удаленного каталога FTP можно использовать команду

wget -N ftp:///path/to/files/*.*

Благодаря параметру -N извлекаются только файлы, более новые, чем загруженные ранее. В данном примере, Wget регистрируется на удаленном FTP-сервере через анонимное соединение (при необходимости, можно использовать ftp://user:password@host/path, чтобы указать имя пользователя и пароль), переходит в указанный каталог и пытается загрузить только новые файлы.

Автоматизация административных задач

Утилита Wget особенно полезна, если нужно дистанционно загружать файлы на сервер исключительно с применением командной строки. Например, можно установить соединение Telnet с удаленным сервером Windows и выполнить команду

wget -P C:downloads "http://"

чтобы загрузить исправление от Microsoft на этот сервер Windows. Кавычки обеспечивают корректную передачу URL в программу Wget, что бывает очень важно, в зависимости от сложности URL. Кроме того, механизм работает только с традиционными процедурами загрузки файлов, доступных через статический URL. Например, такие инструменты, как Wget, непригодны для загрузки программ с использованием нового интерактивного элемента управления ActiveX Genuine Windows компании Microsoft.

Применяйте Wget

Wget резко ускоряет процесс настройки конфигурации нового компьютера, и местонахождение исходных файлов хорошо документировано. Например, команду для загрузки новой программы или исправления можно скопировать в конфигурационный документ, чтобы впоследствии точно знать, откуда и для какой цели была загружена программа. Если компьютер придется восстанавливать заново, то можно скопировать команды из таких документов в консоль и быстро получить установочные файлы. Wget - простой, но полезный инструмент для управления и работы с данными из удаленных систем.

Джефф Феллинг (jeff@blackstatic.com) - редактор Windows IT Security и директор по информационной безопасности и проектированию инфраструктуры компании aQuantive.