Po třech a půl letech vývoje byla představena první stabilní verze projektu GNU Wget2, která vyvíjí zcela přepracovanou verzi programu pro automatizaci rekurzivního stahování obsahu GNU Wget. GNU Wget2 byl navržen a přepsán od nuly a je pozoruhodný tím, že přesunul základní funkcionalitu webového klienta do knihovny libwget, kterou lze v aplikacích používat samostatně. Nástroj je licencován pod licencí GPLv3+ a knihovna je licencována pod licencí LGPLv3+.
Místo postupného přepracování stávající kódové základny bylo rozhodnuto předělat vše od nuly a založit samostatnou pobočku Wget2, která by implementovala nápady na restrukturalizaci, zvýšení funkčnosti a provádění změn, které narušují kompatibilitu. S výjimkou ukončení podpory protokolu FTP a formátu WARC může wget2 ve většině situací fungovat jako transparentní náhrada za klasickou utilitu wget.
Jak již bylo řečeno, wget2 má některé zdokumentované rozdíly v chování, poskytuje asi 30 dalších možností a přestává podporovat několik desítek možností. Včetně zpracování takových možností jako „-ask-password“, „-header“, „-exclude-directories“, „-ftp*“, „-warc*“, „-limit-rate“, „-relative“ bylo zastaveno " a "--unlink".
Mezi klíčové inovace patří:
- Přesouvání funkcí do knihovny libwget.
- Přechod na vícevláknovou architekturu.
- Schopnost vytvořit více připojení paralelně a stáhnout do více vláken. Je také možné paralelizovat stahování jednoho souboru rozděleného do bloků pomocí volby „-chunk-size“.
- Podpora protokolu HTTP/2.
- Použijte HTTP hlavičku If-Modified-Since ke stažení pouze upravených dat.
- Přepněte na používání externích omezovačů šířky pásma, jako je trik.
- Podpora hlavičky Accept-Encoding, komprimovaného přenosu dat a kompresních algoritmů brotli, zstd, lzip, gzip, deflate, lzma a bzip2.
- Podpora TLS 1.3, OCSP (Online Certificate Status Protocol) pro kontrolu zrušených certifikátů, mechanismus HSTS (HTTP Strict Transport Security) pro vynucení přesměrování na HTTPS a HPKP (HTTP Public Key Pinning) pro vazbu certifikátu.
- Schopnost používat GnuTLS, WolfSSL a OpenSSL jako backendy pro TLS.
- Podpora rychlého otevírání TCP spojení (TCP FastOpen).
- Vestavěná podpora formátu Metalink.
- Podpora pro mezinárodní názvy domén (IDNA2008).
- Schopnost současně pracovat přes několik proxy serverů (jeden stream bude načten přes jeden proxy a druhý přes jiný).
- Vestavěná podpora pro zpravodajské kanály ve formátech Atom a RSS (například pro skenování a stahování odkazů). Data RSS/Atom lze stáhnout z místního souboru nebo přes síť.
- Podpora pro extrahování adres URL ze souborů Sitemap. Dostupnost parserů pro extrahování odkazů ze souborů CSS a XML.
- Podpora direktivy 'include' v konfiguračních souborech a distribuce nastavení do několika souborů (/etc/wget/conf.d/*.conf).
- Vestavěný mechanismus mezipaměti dotazů DNS.
- Možnost překódování obsahu změnou kódování dokumentu.
- Zohlednění souboru „robots.txt“ během rekurzivního stahování.
- Spolehlivý režim zápisu s voláním fsync() po uložení dat.
- Schopnost obnovit přerušené relace TLS, stejně jako ukládat parametry relace TLS do mezipaměti a ukládat do souboru.
- Režim "--input-file-" pro načítání adres URL přicházejících přes standardní vstupní proud.
- Kontrola rozsahu souboru cookie proti adresáři přípon veřejné domény (seznam veřejných přípon), aby se navzájem izolovaly různé weby hostované ve stejné doméně druhé úrovně (například „a.github.io“ a „b.github. io”).
- Podporuje stahování streamování ICEcast/SHOUTcast.
Zdroj: opennet.ru