Первый стабильный релиз утилиты для загрузки web-контента GNU Wget2
После трёх с половиной лет разработки представлен первый стабильный релиз проекта GNU Wget2, развивающего полностью переработанный вариант программы для автоматизации рекурсивной загрузки контента GNU Wget. GNU Wget2 спроектирован и переписан с нуля и примечателен выносом базовой функциональности web-клиента в библиотеку libwget, которая может обособленно применяться в приложениях. Утилита поставляется под лицензией GPLv3+, а библиотека под LGPLv3+.
Вместо постепенной переработки существующей кодовой базы было решено переделать всё с нуля и основать отдельную ветку Wget2 для воплощений идей по реструктуризации, наращивания функциональности и внесения изменений, нарушающих совместимость. За исключением прекращения поддержки протокола FTP и формата WARC, wget2 в большинстве ситуаций может выступать в роли прозрачной замены классической утилиты wget.
При этом wget2 имеет некоторые документированные различия в поведении, предоставляет около 30 дополнительных опций и прекращает поддержку нескольких десятков опций. В том числе прекращена обработка таких опций, как »--ask-password»,»--header»,»--exclude-directories»,»--ftp*»,»--warc*»,»--limit-rate»,»--relative» и »--unlink».
Из ключевых новшеств можно отметить:
- Вынос функциональности в библиотеку libwget.
- Переход на многопоточную архитектуру.
- Возможность параллельной установки нескольких соединений и загрузки в несколько потоков. В том числе возможно распараллеливание загрузки одного файла с разбивкой на блоки при помощи опции »--chunk-size».
- Поддержка протокола HTTP/2.
- Использование HTTP-заголовка If-Modified-Since для загрузки только изменившихся данных.
- Переход на применение внешних ограничителей пропускной способности, таких как trickle.
- Поддержка заголовка Accept-Encoding, передачи данных в сжатом виде и алгоритмов сжатия brotli, zstd, lzip, gzip, deflate, lzma и bzip2.
- Поддержка TLS 1.3, протокола OCSP (Online Certificate Status Protocol) для проверки отозванных сертификатов, механизма HSTS (HTTP Strict Transport Security) для принудительного перенаправления на HTTPS и HPKP (HTTP Public Key Pinning) для привязки сертификатов.
- Возможность использования GnuTLS, WolfSSL и OpenSSL в качестве бэкендов для TLS.
- Поддержка режима быстрого открытия TCP-соединений (TCP FastOpen).
- Встроенная поддержка формата Metalink.
- Поддержка интернационализированных доменных имён (IDNA2008).
- Возможность одновременно работы через несколько прокси-серверов (один поток будет загружаться через один прокси, в второй через другой).
- Встроенная поддержка новостных лент в форматах Atom и RSS (например, для сканирования и загрузки ссылок). Данные RSS/Atom могут быть загружены из локального файла или по сети.
Поддержка извлечения URL из файлов Sitemap. Наличие парсеров для извлечения ссылок из файлов CSS и XML.
- Поддержка директивы 'include' в файлах конфигурации и распределение настроек по нескольким файлам (/etc/wget/conf.d/*.conf).
- Встроенный механизм кэширования запросов DNS.
- Возможность перекодирования содержимого со сменой кодировки документа.
- Учёт файла «robots.txt» при рекурсивных загрузках.
- Режим надёжной записи с вызовом fsync () после сохранения данных.
- Возможность возобновления прерванных TLS-сеансов, а также кэширования и сохранения в файл параметров TLS-сеанса.
- Режим »--input-file — » для загрузки URL, поступающих через стандартных входной поток.
- Проверка области действия Cookie по каталогу публичных суффиксов доменов (Public Suffix List) для изоляции друг от друга разных сайтов, размещённых в одном домене второго уровня (например, «a.github.io» и «b.github.io»).
Поддержка загрузки потокового вещания в формате ICEcast / SHOUTcast.
Источник: http://www.opennet.ru/opennews/art.shtml? num=55873
© OpenNet