Efter tre og et halvt års udvikling præsenteres den første stabile udgivelse af projektet GNU Wget2, som udvikler en fuldstændig omarbejdet version af programmet til automatisering af rekursiv download af indhold GNU Wget. GNU Wget2 er designet og genopbygget fra bunden og er bemærkelsesværdig for at have flyttet kernefunktionaliteten af webklienten til biblioteket libwget, som kan anvendes særskilt i applikationer. Værktøjet leveres under GPLv3+-licensen, mens biblioteket leveres under LGPLv3+-licensen.
I stedet for gradvist at omarbejde den eksisterende kodebase blev det besluttet at ombygge alt fra bunden af og grundlægge en separat gren Wget2 til implementering af ideer til omstrukturering, funktionalitetstilføjelse og ændringer, der bryder kompatibiliteten. Bortset fra ophøret af understøttelse af FTP-protokollen og WARC-formatet kan wget2 i de fleste situationer fungere som en gennemsigtig erstatning for det klassiske værktøj wget.
Samtidig har wget2 nogle dokumenterede forskelle i adfærd, tilbyder omkring 30 ekstra muligheder og ophører med at støtte flere dusin muligheder. Blandt andet er behandlingen af sådanne muligheder som "—ask-password", "—header", "—exclude-directories", "—ftp*", "—warc*", "—limit-rate", "—relative" og "—unlink" blevet stoppet.
Af nøgleinnovationer kan nævnes:
- Flytning af funktionalitet til biblioteket libwget.
- Overgang til en flertrådet arkitektur.
- Mulighed for parallelt at etablere flere forbindelser og downloade i flere tråde. Dette inkluderer muligheden for at parallellisere download af én fil ved at opdele den i blokke ved hjælp af indstillingen "—chunk-size".
- Understøttelse af HTTP/2-protokollen.
- Brug af HTTP-headeren If-Modified-Since til kun at downloade ændrede data.
- Overgang til brug af eksterne båndbreddebegrænsere, såsom trickle.
- Understøttelse af headeren Accept-Encoding, overførsel af data i komprimeret form samt komprimeringsalgoritmerne brotli, zstd, lzip, gzip, deflate, lzma og bzip2.
- Understøttelse af TLS 1.3, OCSP (Online Certificate Status Protocol) til kontrol af tilbagekalte certifikater, HSTS (HTTP Strict Transport Security) til at tvinge omdirigering til HTTPS og HPKP (HTTP Public Key Pinning) til at knytte certifikater.
- Mulighed for at bruge GnuTLS, WolfSSL og OpenSSL som backend til TLS.
- Understøttelse af hurtig åbning af TCP-forbindelser (TCP FastOpen).
- Indbygget understøttelse af Metalink-formatet.
- Understøttelse af internationaliserede domenenavne (IDNA2008).
- Mulighed for samtidig drift gennem flere proxyer -servere (én strøm vil blive indlæst via én proxy, den anden gennem en anden).
- Indbygget støtte til nyhedsfeeds i formaterne Atom og RSS (f.eks. til scanning og indlæsning af links). RSS/Atom-data kan indlæses fra en lokal fil eller over nettet.
- Understøttelse af udtrækning af URL’er fra Sitemap-filer. Tilstedeværelse af parsere til udtrækning af links fra CSS- og XML-filer.
- Understøttelse af direktivet ‘include’ i konfigurationsfiler og fordeling af indstillinger over flere filer (/etc/wget/conf.d/*.conf).
- Indbygget cachemekanisme til DNS-forespørgsler.
- Mulighed for at re-kode indhold med ændring af dokumentets tegnsæt.
- Hensyntagen til filen ‘robots.txt’ ved rekursive indlæsninger.
- Pålidelig skrivefunktion med kald til fsync() efter gemming af data.
- Mulighed for at genoptage afbrudte TLS-sessioner, samt caching og gemme TLS-sessionparametre i en fil.
- ‘--input-file --’ tilstand for at indlæse URL'er, der kommer via standard inputstrøm.
- Kontrol af cookie-gyldighed efter kataloget for offentlige domænesuffikser (Public Suffix List) for at isolere forskellige websteder, der er hostet på samme andens niveau domæne (f.eks. ‘a.github.io’ og ‘b.github.io’).
- Understøttelse af streamingindlæsning i formaterne ICEcast / SHOUTcast.
Kilde: opennet.ru
