Après trois ans et demi de développement, la première version stable du projet GNU Wget2 est présentée, développant une variante entièrement révisée du programme pour automatiser le téléchargement récursif de contenu GNU Wget. GNU Wget2 a été conçu et réécrit à partir de zéro et se distingue par le transfert de la fonctionnalité de base du client web dans la bibliothèque libwget, qui peut être utilisée indépendamment dans les applications. L'outil est distribué sous la licence GPLv3+, et la bibliothèque sous LGPLv3+.
Au lieu de retravailler progressivement le code existant, il a été décidé de tout refaire à partir de zéro et de fonder une branche distincte Wget2 pour mettre en œuvre les idées de restructuration, d'augmentation des fonctionnalités et d'introduction de modifications non compatibles. À l'exception de l'arrêt du support du protocole FTP et du format WARC, wget2 peut servir, dans la plupart des situations, de remplacement transparent de l'outil classique wget.
Cependant, wget2 présente certaines différences de comportement documentées, propose environ 30 options supplémentaires et cesse de supporter plusieurs dizaines d'options. Cela inclut l'arrêt du traitement d'options telles que «—ask-password», «—header», «—exclude-directories», «—ftp*», «—warc*», «—limit-rate», «—relative» et «—unlink».
Parmi les principales nouveautés, on peut noter :
- Le transfert de fonctionnalités vers la bibliothèque libwget.
- Passage à une architecture multiprocessus.
- Possibilité d'établir plusieurs connexions simultanées et de télécharger en plusieurs flux. Il est également possible de paralléliser le téléchargement d'un seul fichier en le divisant en blocs à l'aide de l'option «—chunk-size».
- Support du protocole HTTP/2.
- Utilisation de l'en-tête HTTP If-Modified-Since pour ne télécharger que les données modifiées.
- Passage à l'utilisation de limiteurs de bande passante externes, tels que trickle.
- Support de l'en-tête Accept-Encoding, transmission des données en format compressé et algorithmes de compression brotli, zstd, lzip, gzip, deflate, lzma et bzip2.
- Support de TLS 1.3, du protocole OCSP (Online Certificate Status Protocol) pour vérifier les certificats révoqués, du mécanisme HSTS (HTTP Strict Transport Security) pour forcer la redirection vers HTTPS et HPKP (HTTP Public Key Pinning) pour lier les certificats.
- Possibilité d'utiliser GnuTLS, WolfSSL et OpenSSL comme backends pour TLS.
- Support du mode d'ouverture rapide des connexions TCP (TCP FastOpen).
- Support intégré du format Metalink.
- Support pour l'internationalisation complets (IDNA2008).
- Possibilité de fonctionner simultanément via plusieurs proxys -serveurs (un flux sera téléchargé via un proxy, un autre via un autre).
- Support intégré pour les flux d'actualités au format Atom et RSS (par exemple, pour scanner et télécharger des liens). Les données RSS/Atom peuvent être chargées à partir d'un fichier local ou par le réseau.
- Support de l'extraction des URL à partir des fichiers Sitemap. Disponibilité de parseurs pour extraire des liens à partir de fichiers CSS et XML.
- Support de la directive 'include' dans les fichiers de configuration et répartition des paramètres sur plusieurs fichiers (/etc/wget/conf.d/*.conf).
- Mécanisme intégré de mise en cache des requêtes DNS.
- Possibilité de re-codage du contenu avec changement d'encodage de document.
- Prise en compte du fichier 'robots.txt' lors des téléchargements récursifs.
- Mode d'enregistrement fiable avec appel à fsync() après la sauvegarde des données.
- Possibilité de reprendre les sessions TLS interrompues, ainsi que de mettre en cache et d'enregistrer dans un fichier les paramètres de session TLS.
- Mode '--input-file --' pour télécharger des URL fournies via le flux d'entrée standard.
- Vérification du domaine d'application des cookies selon le répertoire de suffixes publics de domaines (Public Suffix List) pour isoler les différents sites hébergés sur un même domaine de second niveau (par exemple, 'a.github.io' et 'b.github.io').
- Support du téléchargement de streaming au format ICEcast / SHOUTcast.
Source : opennet.ru
