Wget - Wget

Wget
Wget 1.13.4.png
Снимок экрана Wget, работающего в Ubuntu и загружающего эту страницу в Википедии о себе.
Автор (ы) оригинала Хрвое Никшич
Разработчики) Джузеппе Скривано, Тим Рюсен, Даршит Шах
Первый выпуск Январь 1996 г . ; 25 лет назад ( 1996-01 )
Стабильный выпуск
1.21.2  Отредактируйте это в Викиданных / 7 сентября 2021 г . ; 34 дней назад ( 7 сентября 2021 г. )
Репозиторий
Написано в C
Операционная система Кроссплатформенность
Тип FTP-клиент / HTTP-клиент
Лицензия GPL-3.0 или новее
Веб-сайт www .gnu .org / software / wget /

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

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

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

История

Wget происходит от более ранней программы того же автора, названной Geturl, разработка которой началась в конце 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 .

Функции

Надежность

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 по мере необходимости.

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

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

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

Лицензия

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

Дополнительное разрешение согласно разделу 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 разрабатывается открыто, большинство проектных решений обычно обсуждается в общедоступном списке рассылки, за которым следят пользователи и разработчики. Отчеты об ошибках и исправления передаются в один и тот же список.

Исходный вклад

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

Исходный код также можно отслеживать через репозиторий удаленного управления версиями, в котором хранится история изменений, начиная с выпуска 1.5.3. В репозитории сейчас работает Git . До этого исходный код размещался (в обратном порядке) на: Bazaar , 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.

  • Geturl 1.0, выпущенный в январе 1996 года, был первым общедоступным выпуском. Первое объявление на английском языке можно отнести к новостному сообщению Usenet, которое, вероятно, относится к Geturl 1.3.4, выпущенному в июне.
  • 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 для безопасных соединений.
  • 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 извлечений.

Wget2

Wget2
Первый выпуск 26 сентября 2021 г . ; 15 дней назад ( 2021-09-26 )
Стабильный выпуск
2.0  Отредактируйте это в Викиданных / 26 сентября 2021 г . ; 15 дней назад ( 26 сентября 2021 г. )
Предварительный выпуск
1.99.2  Отредактируйте это в Викиданных / 30 августа 2019 г . ; 2 года назад ( 30 августа 2019 г. )
Репозиторий git .savannah .gnu .org / cgit / wget / wget2 .git
Лицензия GPL-3.0 или новее
Веб-сайт www .gnu .org / software / wget /

GNU Wget2 2.0.0 был выпущен 26 сентября 2021 года. Он находится под лицензией GPL-3.0 или более поздней версии и является оболочкой Libwget, которая находится под лицензией LGPL-3.0 или более поздней версии . В нем много улучшений по сравнению с Wget, в частности, во многих случаях Wget2 загружается намного быстрее, чем Wget1.x, благодаря поддержке следующих протоколов и технологий:

Сопутствующие работы

Снимок экрана GWget 1.0.4 в Fedora v12 с установленным GNOME v2.28.2

GWget

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

Cliget

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

Клоны

Для встроенных систем характерен ограниченный размер хранилища, и обычно они используют клоны GNU Wget, которые имеют только базовые параметры, обычно только для загрузки:

Смотрите также

Примечания

использованная литература

внешние ссылки