Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

GNU Wget (или просто Wget , ранее Geturl , также обозначаемый как имя пакета, wget ) - это компьютерная программа, которая получает контент с веб-серверов . Это часть проекта GNU . Его название происходит от World Wide Web и получить . Он поддерживает загрузку через HTTP , HTTPS и FTP .

Его функции включают рекурсивную загрузку, преобразование ссылок для просмотра локального HTML в автономном режиме и поддержку прокси. Он появился в 1996 году, совпав с бумом популярности Интернета, что привело к его широкому использованию среди пользователей Unix и распространению с большинством основных дистрибутивов Linux . Написанный на переносимом языке C , Wget может быть легко установлен в любой Unix-подобной системе. Wget был перенесен на Microsoft Windows , macOS , OpenVMS , HP-UX , AmigaOS , MorphOS и Solaris . Начиная с версии 1.14 Wget может сохранять свои выходные данные в стандарте веб-архивирования WARC.формат. [4]

Он использовался в качестве основы для графических программ, таких как GWget для рабочего стола GNOME .

История [ править ]

Wget происходит от более ранней программы того же автора, названной Geturl, [5] разработка которой началась в конце 1995 года. Название изменилось на Wget после того, как автору стало известно о более ранней программе Amiga под названием GetURL, написанной Джеймсом Бертоном в AREXX .

Wget заполнил пробел в несовместимом программном обеспечении для загрузки из Интернета, доступном в середине 1990-х годов. Ни одна программа не могла надежно использовать HTTP и FTP для загрузки файлов. Существующие программы либо поддерживали FTP (например, NcFTP и dl), либо были написаны на Perl , который еще не был повсеместным. Хотя Wget был вдохновлен функциями некоторых из существующих программ, он поддерживал как HTTP, так и FTP и мог быть построен с использованием только стандартных инструментов разработки, имеющихся в каждой системе Unix.

В то время многие пользователи Unix боролись за чрезвычайно медленные университетские и коммутируемые Интернет- соединения, что привело к растущей потребности в агенте загрузки, который мог бы справляться с временными сбоями сети без помощи оператора-человека.

В 2010 году Челси Мэннинг использовала Wget для загрузки 250 000 дипломатических телеграмм США и 500 000 армейских отчетов, которые стали известны как журналы войны в Ираке и журналы афганской войны, отправленные на WikiLeaks . [6]

Особенности [ править ]

Надежность [ править ]

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

Рекурсивная загрузка [ править ]

Wget может опционально работать как веб-сканер , извлекая ресурсы, на которые есть ссылки со страниц HTML, и загружая их последовательно, повторяя процесс рекурсивно, пока не будут загружены все страницы или не будет достигнута максимальная глубина рекурсии, указанная пользователем. Загруженные страницы сохраняются в структуре каталогов, аналогичной структуре на удаленном сервере. Эта «рекурсивная загрузка» обеспечивает частичное или полное зеркальное отображение веб-сайтов через HTTP. Ссылки на загруженных HTML-страницах можно настроить так, чтобы они указывали на локально загруженный материал для просмотра в автономном режиме . При выполнении такого типа автоматического зеркалирования веб-сайтов Wget поддерживаетСтандарт исключения роботов (если не используется опция -e robots=off).

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

При рекурсивной загрузке через HTTP или FTP Wget может быть проинструктирован проверять временные метки локальных и удаленных файлов и загружать только удаленные файлы, более новые, чем соответствующие локальные. Это позволяет легко зеркалировать сайты HTTP и FTP , но считается неэффективным и более подверженным ошибкам по сравнению с программами, разработанными для зеркалирования с нуля, такими как rsync . С другой стороны, Wget не требует специального серверного программного обеспечения для этой задачи.

Неинтерактивность [ править ]

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

Переносимость [ править ]

Написанный на языке C с высокой степенью переносимости с минимальными зависимостями от сторонних библиотек, Wget требует немного больше, чем компилятор C и интерфейс типа BSD для работы в сети TCP / IP . Разработанная как программа Unix, вызываемая из оболочки Unix , программа была перенесена на множество Unix-подобных сред и систем, включая Microsoft Windows через Cygwin и macOS . Он также доступен как родная программа Microsoft Windows как один из пакетов GnuWin .

Другие особенности [ править ]

  • Wget поддерживает загрузку через прокси-серверы , которые широко используются для обеспечения доступа в Интернет внутри корпоративных брандмауэров, а также для кэширования и быстрой доставки часто используемого контента.
  • Там, где это возможно, используются постоянные HTTP-соединения.
  • IPv6 поддерживается в системах, которые включают соответствующие интерфейсы.
  • SSL / TLS поддерживается для зашифрованных загрузок с использованием библиотеки OpenSSL или GnuTLS .
  • Файлы размером более 2 ГиБ которые поддерживаются на 32-разрядных системах , которые включают в себя соответствующие интерфейсы.
  • Скорость загрузки может быть снижена, чтобы не использовать всю доступную пропускную способность .
  • Может сохранять свои выходные данные в стандартном формате WARC для веб-архивирования с дедупликацией из связанного файла CDX по мере необходимости. [4]

Использование Wget [ править ]

Основное использование [ править ]

Типичное использование GNU Wget состоит из его вызова из командной строки с предоставлением одного или нескольких URL-адресов в качестве аргументов.

# Загрузите титульную страницу example.com в файл # с именем "index.html".wget http://www.example.com/
# Загрузите исходный код Wget с ftp-сайта GNU.wget ftp://ftp.gnu.org/pub/gnu/wget/wget-latest.tar.gz

Более сложное использование включает автоматическую загрузку нескольких URL-адресов в иерархию каталогов.

# Загрузить * .gif с веб-сайта # (подстановка, например "wget ​​http://www.server.com/dir/*.gif", работает только с ftp)
wget -e robots = off -r -l 1 - no-parent -A .gif ftp://www.example.com/dir/
# Загрузите титульную страницу example.com вместе с # изображениями и таблицами стилей, необходимыми для отображения страницы, и # преобразуйте URL-адреса внутри нее, чтобы они ссылались на локально доступный контент.wget -p -k http://www.example.com/
# Загрузить все содержимое example.com
wget -r -l 0 http://www.example.com/

Дополнительные примеры [ править ]

Загрузите зеркало с ошибками для только что купленной книги, рекурсивно перейдите по всем локальным ссылкам и сделайте файлы пригодными для просмотра в автономном режиме. Используйте случайное ожидание до 5 секунд между каждой загрузкой файла и записывайте результаты доступа в «myLog.log». В случае сбоя повторите попытку до 7 раз с интервалом 14 секунд между каждой попыткой. (Команда должна быть в одной строке.)

Собирайте только определенные ссылки, перечисленные построчно в локальном файле «my_movies.txt». Используйте случайное ожидание от 0 до 33 секунд между файлами и используйте регулировку пропускной способности 512 килобайт в секунду . В случае сбоя повторите попытку до 22 раз с 48 секундами между каждой попыткой. Не отправлять отслеживающий пользовательский агент или HTTP-референт на сайт с ограничениями и игнорировать исключения роботов. Поместите все захваченные файлы в локальный каталог «фильмы» и соберите результаты доступа к локальному файлу «my_movies.log». Подходит для загрузки определенных наборов файлов, не перегружая сеть:

wget -t 22 --waitretry = 48 --wait = 33 --random-wait --referer = "" --user-agent = "" --limit-rate = 512k -e robots = off -o ./my_movies.log -P ./movies -i ./my_movies.txt

Вместо пустого referer и user-agent используйте реальный, который не вызывает сообщение « ERROR: 403 Forbidden » с ограниченного сайта. Также возможно создать файл .wgetrc, содержащий некоторые значения по умолчанию. [7] Чтобы обойти сеансы с отслеживанием файлов cookie:

# Использование Wget для загрузки контента, защищенного реферером и куки. # 1. Получите базовый URL-адрес и сохраните его файлы cookie в файл. # 2. Получите защищенный контент с помощью сохраненных файлов cookie. wget --cookies = on --keep-session-cookies --save-cookies = cookie.txt http: // first_pagewget --referer = http: // первая_страница --cookies = on --load-cookies = cookie.txt --keep-session-cookies --save-cookies = cookie.txt http: // вторая_страница

Зеркальное отображение и преобразование CGI, ASP или PHP и других в HTML для просмотра в автономном режиме:

# Зеркальное копирование веб-сайта в статическую копию для локального просмотра. # Это означает, что все ссылки будут изменены, чтобы указывать на локальные файлы. # Примечание --html-extension преобразует любые файлы, сгенерированные CGI, ASP или PHP, в HTML (или что-нибудь еще, кроме .html). wget --mirror -w 2 -p --html-extension --convert-links -P $ { dir_prefix } http://www.yourdomain.com

Авторы и авторские права [ править ]

GNU Wget был написан Хрвое Никшичем при участии многих других людей, включая Дэна Харклесса, Яна Эбботта и Мауро Тортонези. Значительные вклады указаны в файле AUTHORS, включенном в дистрибутив, а все оставшиеся задокументированы в журналах изменений , также включенных в программу. В настоящее время Wget поддерживается Джузеппе Скривано, Тимом Рюсеном и Даршитом Шахом. [8]

Авторские права на Wget принадлежат Free Software Foundation , чья политика требует передачи авторских прав для всех нетривиальных вкладов в программное обеспечение GNU. [9]

Лицензия [ править ]

GNU Wget распространяется в соответствии с условиями Стандартной общественной лицензии GNU версии 3 или более поздней за исключением специального исключения, которое разрешает распространение двоичных файлов, связанных с библиотекой OpenSSL . Текст исключения следующий: [3]

Дополнительное разрешение согласно разделу 7 GNU GPL версии 3

Если вы изменяете эту программу или любую защищенную работу, связывая или комбинируя ее с библиотекой OpenSSL проекта OpenSSL (или модифицированной версией этой библиотеки), содержащей части, подпадающие под условия лицензий OpenSSL или SSLeay, Free Software Foundation предоставляет Вам дополнительное разрешение на передачу полученной работы. Соответствующий исходный код для такой комбинации, не являющейся исходной, должен включать исходный код используемых частей OpenSSL, а также код рассматриваемой работы.

Это ожидается [ кем? ], что предложение исключения будет удалено, как только Wget будет изменен для связи с библиотекой GnuTLS .

Документация Wget в виде справочного руководства по Texinfo распространяется в соответствии с условиями лицензии GNU Free Documentation License версии 1.2 или новее. Страница человек обычно распространяются на Unix-подобных системах , автоматически генерируется из подмножества руководства Texinfo и падает в соответствии с условиями той же лицензии.

Развитие [ править ]

Wget разрабатывается открытым способом, большинство проектных решений обычно обсуждается в общедоступном списке рассылки [10], за которым следуют пользователи и разработчики. Отчеты об ошибках и исправления передаются в один и тот же список.

Исходный вклад [ править ]

Предпочтительный метод внесения вклада в код и документацию Wget - обновление исходного кода в виде текстовых исправлений, генерируемых утилитой diff . Патчи, предназначенные для включения в Wget, отправляются в список рассылки [10], где они проверяются разработчиками. В исходные тексты устанавливаются исправления, которые проходят тщательную проверку сопровождающими. Инструкции по созданию патча, а также рекомендации по стилю изложены в вики проекта. [11]

Исходный код также можно отслеживать через репозиторий удаленного управления версиями, в котором хранится история изменений, начиная с выпуска 1.5.3. В репозитории сейчас работает Git . [12] До этого исходный код размещался (в обратном порядке) на: Bazaar , [13] Mercurial , Subversion и через CVS .

Выпуск [ править ]

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

Релизы нумеруются как версии в формате major.minor [.revision] , например Wget 1.11 или Wget 1.8.2 . Увеличение номера основной версии означает большие и, возможно, несовместимые изменения в поведении Wget или радикальную переработку кода. Увеличение младшего номера версии означает добавление новых функций и исправлений ошибок. Новая ревизия указывает на выпуск, который по сравнению с предыдущей ревизией содержит только исправления ошибок. Нулевой номер версии опущен, что означает, что, например, Wget 1.11 совпадает с 1.11.0. Wget не использует четное и нечетное число выпусков, популярное в Linux.

Популярные ссылки [ править ]

Wget появляется в фильме «Социальная сеть», выпущенном Columbia Pictures в 2010 году . Главный герой, основанный на образе соучредителя Facebook Марка Цукерберга , использует Wget для объединения фотографий студентов из различных каталогов жилых домов Гарвардского университета .

Известные релизы [ править ]

Следующие выпуски представляют собой важные вехи в развитии Wget. Функции, перечисленные рядом с каждым выпуском, отредактированы для краткости и не представляют собой исчерпывающую информацию о выпуске, которая доступна в файле NEWS, распространяемом с Wget. [5]

  • Geturl 1.0, выпущенный в январе 1996 года, был первым общедоступным выпуском. Первое объявление на английском языке можно отнести к новостному сообщению Usenet, которое, вероятно, относится к Geturl 1.3.4, выпущенному в июне. [14]
  • Wget 1.4.0, выпущенный в ноябре 1996 года, был первой версией, в которой использовалось имя Wget . Это был также первый выпуск распределен в соответствии с условиями GNU GPL , GetURL будучи отпускаемые по специальной холостом гарантийном лицензии .
  • Wget 1.4.3, выпущенный в феврале 1997 года, был первой версией, выпущенной как часть проекта GNU с авторскими правами, переданными FSF .
  • Wget 1.5.3, выпущенный в сентябре 1998 года, стал вехой в популярности программы. Эта версия была включена во многие дистрибутивы на основе Linux , что сделало программу доступной для гораздо более широкой аудитории.
  • Wget 1.6, выпущенный в декабре 1999 года, включает в себя множество исправлений ошибок для (к тому времени устаревшего) выпуска 1.5.3, во многом благодаря усилиям Дэна Харклесса.
  • Wget 1.7, выпущенный в июне 2001 года, представил поддержку SSL , файлы cookie и постоянные соединения .
  • В Wget 1.8, выпущенном в декабре 2001 года, добавлено регулирование полосы пропускания , новые индикаторы выполнения и обход графа гиперссылок в ширину .
  • Wget 1.9, выпущенный в октябре 2003 года, включал экспериментальную поддержку IPv6 и возможность отправлять данные POST на HTTP-серверы.
  • Wget 1.10, выпущена в июне 2005 года, представил поддержку больших файлов , IPv6 поддержку на двойном семейные системах, NTLM авторизации и SSL улучшений. Сопровождение взял на себя Мауро Тортонези.
  • Wget 1.11, выпущенный в январе 2008 года, перешел на версию 3 Стандартной общественной лицензии GNU и добавил предварительную поддержку Content-Dispositionзаголовка, который часто используется сценариями CGI для указания имени файла для загрузки. В код аутентификации HTTP также были внесены улучшения, связанные с безопасностью. Мика Коуэн взял на себя сопровождение проекта.
  • В Wget 1.12, выпущенном в сентябре 2009 г., добавлена ​​поддержка синтаксического анализа URL-адресов из содержимого CSS в Интернете и обработки интернационализированных идентификаторов ресурсов .
  • Wget 1.13, выпущенный в августе 2011 года, поддерживает HTTP / 1.1, исправляет некоторые проблемы с переносимостью и по умолчанию использует библиотеку GnuTLS для безопасных соединений. [15]
  • Wget 1.14, выпущенный в августе 2012 года, улучшил поддержку TLS и добавил поддержку RFC  2617 Digest Access Authentication.
  • Wget 1.15, выпущенный в январе 2014 г., добавил - только https и поддержку Perfect-Forward Secrecy.
  • Wget 1.16, выпущенный в октябре 2014 года, изменил вывод индикатора выполнения по умолчанию, закрыл CVE - 2014-4877 , добавил поддержку libpsl для проверки доменов cookie и представил start-pos, позволяющий начинать загрузку с указанной позиции.
  • Wget 1.17, выпущенный в ноябре 2015 года, удалил FTP пассивный к активному откату из соображений конфиденциальности, добавил поддержку FTPS и «if-modified-Since».
  • Wget 1.18, выпущенный в июне 2016 года, решил проблему CVE - 2016-4971 и добавил параметры «--bind-dns-address» и «--dns-servers».
  • Wget 1.19, выпущенный в феврале 2017 года, добавил новые возможности для обработки файла Metalink; версия 1.19.1 добавила параметр — retry-on-http-error, чтобы повторить попытку загрузки, если веб-сервер отвечает заданным кодом состояния HTTP.
  • Wget 1,20, выпущенного ноября 2018, добавил --retry-on-host-errorдля большей надежности и --accept-regex, --reject-regexвариантов рекурсивного FTP извлечений.

Связанные работы [ править ]

GWget [ править ]

GWget - это бесплатный графический интерфейс пользователя для Wget. Он разработан Давидом Седеньо Фернандесом и является частью проекта GNOME . GWget поддерживает все основные функции Wget, а также параллельную загрузку. [16]

Cliget [ править ]

Cliget - это загрузчик дополнений для Firefox с открытым исходным кодом, который использует Curl , Wget и Aria2. Его разработал Зайд Абдулла. [17] [18] [19]

Wget2 [ править ]

В настоящее время разрабатывается GNU Wget2. [20] [21] Он будет иметь много улучшений по сравнению с Wget, в частности, во многих случаях Wget2 загружается намного быстрее, чем Wget1.x из-за поддержки следующих протоколов и технологий: [22]

  • HTTP / 2 ,
  • HTTP-сжатие ,
  • параллельные соединения,
  • использование HTTP-заголовка If-Modified-Since ,
  • TCP Fast Open .

См. Также [ править ]

  • cURL
  • HTTrack
  • lftp
  • Поисковый робот
  • Команда PowerShell iwr Invoke-WebRequest

Ссылки [ править ]

  1. ^ Шах, Darshit (9 января 2021). "wget-1.21.1 выпущен [стабильный]" . Фонд свободного программного обеспечения . Проверено 15 января 2021 года .
  2. ^ "Выпуски · Wget / wget2 · GitLab" . Фонд свободного программного обеспечения. 30 августа 2019 . Дата обращения 10 февраля 2020 .
  3. ^ a b "Файл README" . Проверено 1 декабря 2014 .
  4. ^ a b Скривано, Джузеппе (6 августа 2012 г.). «Выпущен GNU wget 1.14» . Выпущен GNU wget 1.14 . Фонд свободного программного обеспечения, Inc . Проверено 25 февраля +2016 .
  5. ^ a b «НОВОСТИ GNU Wget - история видимых пользователем изменений» . Svn.dotsrc.org. 20 марта 2005 года Архивировано из оригинала 13 марта 2007 года . Проверено 8 декабря 2012 года . Wget 1.4.0 [ранее известный как Geturl] - это обширная переработанная версия Geturl.
  6. Сэнгер, Дэвид и Эрик Шмитт (8 февраля 2014 г.). «Сноуден использовал недорогой инструмент для лучшего АНБ» The New York Times . Проверено 10 февраля 2014 .
  7. ^ Уловка Wget для загрузки с сайтов с ограниченным доступом
  8. ^ "Wget - Проект GNU" . 30 ноября 2018 . Проверено 30 ноября 2018 года .
  9. ^ «Почему FSF получает авторские права от участников - Проект GNU - Фонд свободного программного обеспечения (FSF)» . Gnu.org . Проверено 8 декабря 2012 года .
  10. ^ а б "Гман Ткацкий станок" . News.gmane.org . Проверено 8 декабря 2012 года .
  11. ^ "PatchGuidelines - Wget Wgiki" . Wget.addictivecode.org. 22 сентября 2009 . Проверено 8 декабря 2012 года .
  12. ^ "Доступ к репозиторию" . 31 июля 2012 . Проверено 7 июня 2013 года .
  13. ^ "Доступ к репозиторию" . 22 мая 2010 . Проверено 20 июня 2010 года .
  14. Никшич, Хрвое (24 июня 1996 г.). «Geturl: программа для неинтерактивного скачивания» . comp.infosystems.www.announce . Проверено 17 ноября +2016 .
  15. ^ Файл Wget NEWS
  16. ^ Домашняя страница GWget
  17. ^ "заидка / клигет" . GitHub . Проверено 25 августа +2016 .
  18. ^ «Встречайте cliget Developer :: Дополнения для Firefox» . addons.mozilla.org . Проверено 25 августа +2016 .
  19. ^ "клигет" . addons.mozilla.org . Проверено 25 августа +2016 .
  20. ^ "wget" . gnu.org .
  21. ^ "Фиксирует · мастер · Wget / Wget2" . GitLab .
  22. ^ "wget2" . GitLab .

Внешние ссылки [ править ]

  • Официальный сайт