Nach dreieinhalb Jahren Entwicklung wurde die erste stabile Version des GNU Wget2-Projekts vorgestellt, das eine vollstĂ€ndig ĂŒberarbeitete Version des Programms zur Automatisierung des rekursiven Herunterladens von Inhalten GNU Wget weiterentwickelt. GNU Wget2 wurde von Grund auf neu konzipiert und programmiert und zeichnet sich dadurch aus, dass die grundlegende FunktionalitĂ€t des Web-Clients in die Bibliothek libwget ausgelagert wurde, die unabhĂ€ngig in Anwendungen verwendet werden kann. Das Tool wird unter der Lizenz GPLv3+ bereitgestellt, die Bibliothek unter 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, Erweiterung der FunktionalitĂ€t und zur EinfĂŒhrung von inkompatiblen Ă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 transparenter Ersatz fĂŒr das klassische Tool wget fungieren.
Dabei weist wget2 einige dokumentierte Unterschiede im Verhalten auf, bietet etwa 30 zusĂ€tzliche Optionen und stellt die UnterstĂŒtzung mehrerer Dutzend Optionen ein. Dazu gehört die Einstellung der Verarbeitung solcher Optionen wie ââask-passwordâ, ââheaderâ, ââexclude-directoriesâ, ââftp*â, ââwarc*â, ââlimit-rateâ, âârelativeâ und ââunlinkâ.
Zu den wichtigsten Neuerungen gehören:
- Auslagerung der FunktionalitÀt in die Bibliothek libwget.
- Ăbergang zu einer mehrthreadigen Architektur.
- Möglichkeit der parallelen Einrichtung mehrerer Verbindungen und des Herunterladens in mehreren Streams. Es ist auch möglich, das Herunterladen einer Datei mithilfe der Option ââchunk-sizeâ in Blöcke aufzuteilen und parallel durchzufĂŒhren.
- UnterstĂŒtzung des Protokolls HTTP/2.
- Verwendung des HTTP-Headers If-Modified-Since, um nur geÀnderte Daten herunterzuladen.
- Wechsel zur Nutzung Ă€uĂerer Bandbreitenbegrenzer wie Trickle.
- UnterstĂŒtzung des Headers Accept-Encoding, Ăbertragung von Daten in komprimierter Form und der Komprimierungsalgorithmen Brotli, zstd, lzip, gzip, deflate, lzma und bzip2.
- UnterstĂŒtzung fĂŒr TLS 1.3, das OCSP-Protokoll (Online Certificate Status Protocol) zur ĂberprĂŒfung zurĂŒckgezogener Zertifikate, den HSTS-Mechanismus (HTTP Strict Transport Security) zur erzwungenen Umleitung auf HTTPS und HPKP (HTTP Public Key Pinning) zur Bindung von Zertifikaten.
- Möglichkeit der Verwendung von GnuTLS, WolfSSL und OpenSSL als Backends fĂŒr TLS.
- UnterstĂŒtzung des Modus zum schnellen Ăffnen von TCP-Verbindungen (TCP FastOpen).
- Eingebaute UnterstĂŒtzung fĂŒr das Metalink-Format.
- UnterstĂŒtzung fĂŒr Internationalisierung Domainnamen (IDNA2008).
- Die Möglichkeit, gleichzeitig ĂŒber mehrere Proxys zu arbeiten -Server (eine Verbindung wird ĂŒber einen Proxy geladen, die zweite ĂŒber einen anderen).
- Eingebaute UnterstĂŒtzung fĂŒr Nachrichtenströme 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 Extrahieren von URLs aus Sitemap-Dateien. VerfĂŒgbarkeit von Parsern zum Extrahieren von Links aus CSS- und XML-Dateien.
- UnterstĂŒtzung der 'include'-Direktive in Konfigurationsdateien und Verteilung von Einstellungen auf mehrere Dateien (/etc/wget/conf.d/*.conf).
- Eingebauter Cache-Mechanismus fĂŒr DNS-Anfragen.
- Die Möglichkeit, den Inhalt mit einer Ănderung der Dokumentkodierung neu zu kodieren.
- BerĂŒcksichtigung der Datei ârobots.txtâ bei rekursiven Downloads.
- Sichere Schreibweise mit Aufruf von fsync() nach dem Speichern von Daten.
- Die Möglichkeit, unterbrochene TLS-Sitzungen wieder aufzunehmen sowie TLS-Sitzungsparameter zu cachen und in einer Datei zu speichern.
- Modus ââinput-file ââ zum Laden von URLs, die ĂŒber den Standard-Eingabestrom eingehen.
- ĂberprĂŒfung des Geltungsbereichs von Cookies anhand des Verzeichnisses öffentlicher Domain-Endungen (Public Suffix List), um verschiedene Websites, die unter einer zweiten Ebene-Domain gehostet werden, voneinander zu isolieren (z. B. âa.github.ioâ und âb.github.ioâ).
- UnterstĂŒtzung fĂŒr das Laden von Streaming-Inhalten im Format ICEcast/SHOUTcast.
Quelle: opennet.ru
