Nach dreieinhalb Jahren Entwicklung wurde die erste stabile Version des GNU Wget2-Projekts vorgestellt, die eine vollstĂ€ndig ĂŒberarbeitete Variante des Programms zur automatisierten rekursiven Download von Inhalten darstellt. GNU Wget2 wurde von Grund auf neu konzipiert und programmiert und fĂ€llt durch die Auslagerung der grundlegenden Web-Client-FunktionalitĂ€t in die Bibliothek libwget auf, die unabhĂ€ngig in Anwendungen eingesetzt werden kann. Das Dienstprogramm wird unter der GPLv3+ Lizenz ausgeliefert, die Bibliothek unter der LGPLv3+.
Anstatt die bestehende Codebasis schrittweise zu ĂŒberarbeiten, wurde beschlossen, alles von Grund auf neu zu erstellen und einen separaten Branch Wget2 fĂŒr die Umsetzung von Ideen zur Umstrukturierung, Funktionserweiterung und nicht abwĂ€rtskompatiblen Ănderungen zu grĂŒnden. Mit Ausnahme der Einstellung der UnterstĂŒtzung fĂŒr das FTP-Protokoll und das WARC-Format kann wget2 in den meisten Situationen als transparente Alternative zum klassischen wget auftreten.
Wget2 weist dokumentierte Unterschiede im Verhalten auf und bietet etwa 30 zusĂ€tzliche Optionen, wĂ€hrend die UnterstĂŒtzung fĂŒr Dutzende von Optionen eingestellt wurde. Dazu gehört die Verarbeitung von Optionen wie ââask-passwordâ, ââheaderâ, ââexclude-directoriesâ, ââftp*â, ââwarc*â, ââlimit-rateâ, âârelativeâ und ââunlinkâ wurde eingestellt.
Zu den wichtigsten Neuerungen gehören:
- Auslagerung von Funktionen in die Bibliothek libwget.
- Umstellung auf eine multithreaded Architektur.
- Möglichkeit der parallelen Einrichtung mehrerer Verbindungen und des Downloads in mehreren Streams. Auch das parallele Herunterladen einer Datei mit Blockaufteilung ist möglich, indem die Option ââchunk-sizeâ verwendet wird.
- UnterstĂŒtzung des HTTP/2-Protokolls.
- Verwendung des HTTP-Headers If-Modified-Since, um nur geÀnderte Daten herunterzuladen.
- Wechsel zur Verwendung externer BandbreitenbeschrÀnkungen, wie z. B. trickle.
- UnterstĂŒtzung des Accept-Encoding-Headers, Ăbertragung von Daten in komprimierter Form und der Komprimierungsalgorithmen brotli, zstd, lzip, gzip, deflate, lzma und bzip2.
- UnterstĂŒtzung von TLS 1.3, dem OCSP-Protokoll (Online Certificate Status Protocol) zur ĂberprĂŒfung von widerrufenen Zertifikaten, dem HSTS-Mechanismus (HTTP Strict Transport Security) zur erzwungenen Weiterleitung auf HTTPS und HPKP (HTTP Public Key Pinning) zur Bindung von Zertifikaten.
- Möglichkeit zur Verwendung von GnuTLS, WolfSSL und OpenSSL als Backend fĂŒr TLS.
- UnterstĂŒtzung des TCP-FastOpen-Modus.
- Integrierte UnterstĂŒtzung des Metalink-Formats.
- UnterstĂŒtzung fĂŒr internationalisierte von Domainnamen (IDNA2008).
- Möglichkeit, gleichzeitig ĂŒber mehrere Proxys zu arbeiten-Server (ein Stream wird ĂŒber einen Proxy, der andere ĂŒber einen anderen geladen).
- Integrierte UnterstĂŒtzung fĂŒr Nachrichtenfeeds in den Formaten Atom und RSS (zum Beispiel zum Scannen und Laden von Links). RSS/Atom-Daten können aus einer lokalen Datei oder ĂŒber das Netzwerk geladen werden.
- UnterstĂŒtzung zum Abrufen von URLs aus Sitemap-Dateien. Vorhandensein von Parsern zum Extrahieren von Links aus CSS- und XML-Dateien.
- UnterstĂŒtzung der Direktive 'include' in Konfigurationsdateien und Verteilung von Einstellungen ĂŒber mehrere Dateien (/etc/wget/conf.d/*.conf).
- Integrierter DNS-Abfrage-Caching-Mechanismus.
- Möglichkeit zur Neukodierung von Inhalten mit Wechsel der Dokumentencodierung.
- BerĂŒcksichtigung der Datei 'robots.txt' bei rekursiven Downloads.
- Der zuverlÀssige Schreibmodus mit einem Aufruf von fsync() nach dem Speichern von Daten.
- Die Möglichkeit, unterbrochene TLS-Sitzungen wiederherzustellen sowie TLS-Sitzungsparameter zwischenzuspeichern und in eine Datei zu speichern.
- Modus ââinput-file ââ zum Laden von URLs, die ĂŒber den Standard-Eingabestrom eingehen.
- ĂberprĂŒfung des Cookie-GĂŒltigkeitsbereichs anhand der Public Suffix List zur Isolation verschiedener Websites, die unter derselben zweitstufigen Domain gehostet werden (z. B. âa.github.ioâ und âb.github.ioâ).
- UnterstĂŒtzung fĂŒr das Streaming von Inhalten im ICEcast / SHOUTcast-Format.
Quelle: opennet.ru
