Die erste stabile Version des Dienstprogramms zum Herunterladen von GNU-Webinhalten Wget2

Nach dreieinhalb Jahren Entwicklungszeit wurde die erste stabile Version des GNU Wget2-Projekts vorgestellt, das eine völlig neu gestaltete Version des Programms zur Automatisierung des rekursiven Herunterladens von GNU Wget-Inhalten entwickelt. GNU Wget2 wurde von Grund auf entworfen und neu geschrieben und zeichnet sich dadurch aus, dass es die Grundfunktionalität eines Webclients in die libwget-Bibliothek verlagert, die separat in Anwendungen verwendet werden kann. Das Dienstprogramm ist unter GPLv3+ lizenziert und die Bibliothek ist unter LGPLv3+ lizenziert.

Anstatt die bestehende Codebasis schrittweise zu überarbeiten, wurde beschlossen, alles von Grund auf zu überarbeiten und einen separaten Wget2-Zweig einzurichten, um Ideen zur Umstrukturierung, zur Erhöhung der Funktionalität und zur Durchführung von Änderungen, die die Kompatibilität beeinträchtigen, umzusetzen. Mit Ausnahme der Abschaffung des FTP-Protokolls und des WARC-Formats kann wget2 in den meisten Situationen als transparenter Ersatz für das klassische Dienstprogramm wget dienen.

Abgesehen davon weist wget2 einige dokumentierte Verhaltensunterschiede auf, bietet etwa 30 zusätzliche Optionen und unterstützt mehrere Dutzend Optionen nicht mehr. Einschließlich der Verarbeitung von Optionen wie „-ask-password“, „-header“, „-exclude-directories“, „-ftp*“, „-warc*“, „-limit-rate“, „-relative“. gestoppt " und "--unlink".

Zu den wichtigsten Innovationen gehören:

  • Verschieben der Funktionalität in die libwget-Bibliothek.
  • Übergang zur Multithread-Architektur.
  • Möglichkeit, mehrere Verbindungen parallel herzustellen und in mehrere Threads herunterzuladen. Es ist auch möglich, den Download einer in Blöcke unterteilten Datei mithilfe der Option „-chunk-size“ zu parallelisieren.
  • Unterstützung des HTTP/2-Protokolls.
  • Verwenden Sie den HTTP-Header If-Modified-Since, um nur die geänderten Daten herunterzuladen.
  • Wechseln Sie zur Verwendung externer Bandbreitenbegrenzer wie Trickle.
  • Unterstützung für Accept-Encoding-Header, komprimierte Datenübertragung und die Komprimierungsalgorithmen brotli, zstd, lzip, gzip, deflate, lzma und bzip2.
  • Unterstützung für TLS 1.3, OCSP (Online Certificate Status Protocol) zur Überprüfung widerrufener Zertifikate, HSTS-Mechanismus (HTTP Strict Transport Security) zum Erzwingen der Umleitung zu HTTPS und HPKP (HTTP Public Key Pinning) zur Zertifikatsbindung.
  • Möglichkeit, GnuTLS, WolfSSL und OpenSSL als Backends für TLS zu verwenden.
  • Unterstützung für schnelles Öffnen von TCP-Verbindungen (TCP FastOpen).
  • Integrierte Unterstützung für das Metalink-Format.
  • Unterstützung für internationalisierte Domainnamen (IDNA2008).
  • Die Möglichkeit, gleichzeitig über mehrere Proxyserver zu arbeiten (ein Stream wird über einen Proxy geladen und der zweite über einen anderen).
  • Integrierte Unterstützung für Newsfeeds im Atom- und RSS-Format (z. B. zum Scannen und Herunterladen von Links). RSS/Atom-Daten können aus einer lokalen Datei oder über das Netzwerk heruntergeladen werden.
  • Unterstützung für das Extrahieren von URLs aus Sitemaps. 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).
  • Integrierter DNS-Abfrage-Caching-Mechanismus.
  • Möglichkeit der Neukodierung von Inhalten durch Änderung der Dokumentkodierung.
  • Berücksichtigung der Datei „robots.txt“ bei rekursiven Downloads.
  • Zuverlässiger Schreibmodus mit fsync()-Aufruf nach dem Speichern der Daten.
  • Die Möglichkeit, unterbrochene TLS-Sitzungen fortzusetzen sowie TLS-Sitzungsparameter zwischenzuspeichern und in einer Datei zu speichern.
  • „--input-file-“-Modus zum Laden von URLs, die über den Standard-Eingabestream kommen.
  • Überprüfen des Umfangs des Cookies anhand des Verzeichnisses öffentlicher Domain-Suffixe (Public Suffix List), um verschiedene Websites, die in derselben Second-Level-Domain gehostet werden (z. B. „a.github.io“ und „b.github“), voneinander zu isolieren. io“).
  • Unterstützt das Herunterladen von ICEcast/SHOUTcast-Streaming.

Source: opennet.ru

Kommentar hinzufügen