След три години и половина разработки, е представена първата стабилна версия на проекта GNU Wget2, който развива напълно преработен вариант на програмата за автоматизирано рекурсивно сваляне на съдържание GNU Wget. GNU Wget2 е проектиран и пренаписан от нулата и се отличава с изнасянето на основната функционалност на уеб клиента в библиотеката 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.
Източник: opennet.ru
