De eerste stabiele release van het hulpprogramma voor het downloaden van GNU-webinhoud Wget2

Na drie en een half jaar ontwikkeling is de eerste stabiele release van het GNU Wget2-project gepresenteerd, waarin een volledig opnieuw ontworpen versie van het programma is ontwikkeld voor het automatiseren van het recursieve downloaden van GNU Wget-inhoud. GNU Wget2 is helemaal opnieuw ontworpen en herschreven en valt op door het verplaatsen van de basisfunctionaliteit van een webclient naar de libwget-bibliotheek, die afzonderlijk in applicaties kan worden gebruikt. Het hulpprogramma is gelicentieerd onder GPLv3+ en de bibliotheek is gelicentieerd onder LGPLv3+.

In plaats van de bestaande codebasis geleidelijk te herwerken, werd besloten om alles helemaal opnieuw te doen en een aparte Wget2-tak op te richten om ideeën voor herstructurering, uitbreiding van de functionaliteit en het aanbrengen van wijzigingen die de compatibiliteit verbreken, te implementeren. Met uitzondering van de beëindiging van het FTP-protocol en het WARC-formaat, kan wget2 in de meeste situaties fungeren als een transparante vervanging voor het klassieke wget-hulpprogramma.

Wget2 vertoont echter enkele gedocumenteerde verschillen in gedrag, biedt ongeveer 30 extra opties en ondersteunt geen enkele tientallen opties meer. Inclusief de verwerking van opties als “-ask-password”, “-header”, “-exclude-directories”, “-ftp*”, “-warc*”, “-limit-rate”, “-relative” is gestopt " en "--ontkoppelen".

Belangrijke innovaties zijn onder meer:

  • Functionaliteit verplaatsen naar de libwget-bibliotheek.
  • Overgang naar multi-threaded architectuur.
  • Mogelijkheid om meerdere verbindingen parallel tot stand te brengen en naar meerdere threads te downloaden. Het is ook mogelijk om de download van één bestand, verdeeld in blokken, te parallelliseren met behulp van de optie “-chunk-size”.
  • Ondersteuning voor HTTP/2-protocol.
  • Gebruik de If-Modified-Since HTTP-header om alleen de gewijzigde gegevens te downloaden.
  • Schakel over naar het gebruik van externe bandbreedtebegrenzers zoals trickle.
  • Ondersteuning voor Accept-Encoding header, gecomprimeerde gegevensoverdracht en brotli, zstd, lzip, gzip, deflate, lzma en bzip2 compressie-algoritmen.
  • Ondersteuning voor TLS 1.3, OCSP (Online Certificate Status Protocol) voor het controleren van ingetrokken certificaten, HSTS (HTTP Strict Transport Security) mechanisme voor het forceren van omleiding naar HTTPS en HPKP (HTTP Public Key Pinning) voor certificaatbinding.
  • Mogelijkheid om GnuTLS, WolfSSL en OpenSSL te gebruiken als backends voor TLS.
  • Ondersteuning voor het snel openen van TCP-verbindingen (TCP FastOpen).
  • Ingebouwde ondersteuning voor Metalink-indeling.
  • Ondersteuning voor geïnternationaliseerde domeinnamen (IDNA2008).
  • De mogelijkheid om tegelijkertijd via meerdere proxyservers te werken (de ene stream wordt via de ene proxy geladen en de tweede via een andere).
  • Ingebouwde ondersteuning voor nieuwsfeeds in Atom- en RSS-formaten (bijvoorbeeld voor het scannen en downloaden van links). RSS/Atom-gegevens kunnen worden gedownload vanuit een lokaal bestand of via het netwerk.
  • Ondersteuning voor het extraheren van URL's uit sitemaps. Beschikbaarheid van parsers voor het extraheren van links uit CSS- en XML-bestanden.
  • Ondersteuning voor de 'include'-richtlijn in configuratiebestanden en distributie van instellingen over verschillende bestanden (/etc/wget/conf.d/*.conf).
  • Ingebouwd cachingmechanisme voor DNS-query's.
  • Mogelijkheid om inhoud te hercoderen door de documentcodering te wijzigen.
  • Rekening houden met het bestand “robots.txt” tijdens recursieve downloads.
  • Betrouwbare schrijfmodus met fsync()-aanroep na het opslaan van gegevens.
  • De mogelijkheid om onderbroken TLS-sessies te hervatten, evenals TLS-sessieparameters in de cache op te slaan en in een bestand op te slaan.
  • "--input-file-"-modus voor het laden van URL's die via de standaard invoerstroom binnenkomen.
  • Het controleren van de reikwijdte van de cookie aan de hand van de map met achtervoegsels van het publieke domein (Public Suffix List) om verschillende sites die worden gehost in hetzelfde tweede-niveaudomein van elkaar te isoleren (bijvoorbeeld “a.github.io” en “b.github. io").
  • Ondersteunt het downloaden van ICEcast/SHOUTcast-streaming.

Bron: opennet.ru

Voeg een reactie