Η πρώτη σταθερή έκδοση του βοηθητικού προγράμματος για τη λήψη περιεχομένου ιστού GNU Wget2

Μετά από τρεισήμισι χρόνια ανάπτυξης, παρουσιάστηκε η πρώτη σταθερή έκδοση του έργου GNU Wget2, αναπτύσσοντας μια πλήρως επανασχεδιασμένη έκδοση του προγράμματος για την αυτοματοποίηση της αναδρομικής λήψης περιεχομένου GNU Wget. Το GNU Wget2 σχεδιάστηκε και ξαναγράφτηκε από την αρχή και είναι αξιοσημείωτο για τη μεταφορά της βασικής λειτουργικότητας ενός προγράμματος-πελάτη ιστού στη βιβλιοθήκη libwget, η οποία μπορεί να χρησιμοποιηθεί ξεχωριστά σε εφαρμογές. Το βοηθητικό πρόγραμμα έχει άδεια χρήσης σύμφωνα με το GPLv3+ και η βιβλιοθήκη έχει άδεια χρήσης με το LGPLv3+.

Αντί να αναθεωρηθεί σταδιακά η υπάρχουσα βάση κώδικα, αποφασίστηκε να επαναληφθούν τα πάντα από την αρχή και να δημιουργηθεί ένας ξεχωριστός κλάδος Wget2 για την εφαρμογή ιδεών αναδιάρθρωσης, αύξησης της λειτουργικότητας και πραγματοποίησης αλλαγών που διακόπτουν τη συμβατότητα. Με εξαίρεση την κατάργηση του πρωτοκόλλου FTP και τη μορφή WARC, το wget2 μπορεί να λειτουργήσει ως διαφανής αντικατάσταση του κλασικού βοηθητικού προγράμματος wget στις περισσότερες περιπτώσεις.

Τούτου λεχθέντος, το wget2 έχει κάποιες τεκμηριωμένες διαφορές στη συμπεριφορά, παρέχει περίπου 30 πρόσθετες επιλογές και σταματά να υποστηρίζει αρκετές δεκάδες επιλογές. Συμπεριλαμβανομένης της επεξεργασίας επιλογών όπως "-ask-password", "-header", "-exclude-directories", "-ftp*", "-warc*", "-limit-rate", "-relative" έχει γίνει σταμάτησε " και "--αποσύνδεση".

Οι βασικές καινοτομίες περιλαμβάνουν:

  • Μετακίνηση λειτουργικότητας στη βιβλιοθήκη libwget.
  • Μετάβαση στην αρχιτεκτονική πολλαπλών νημάτων.
  • Δυνατότητα δημιουργίας πολλαπλών συνδέσεων παράλληλα και λήψης σε πολλαπλά νήματα. Είναι επίσης δυνατό να παραλληλιστεί η λήψη ενός αρχείου χωρισμένο σε μπλοκ χρησιμοποιώντας την επιλογή "-chunk-size".
  • Υποστήριξη πρωτοκόλλου HTTP/2.
  • Χρησιμοποιήστε την κεφαλίδα If-Modified-Since HTTP για λήψη μόνο των τροποποιημένων δεδομένων.
  • Μεταβείτε στη χρήση εξωτερικών περιοριστών εύρους ζώνης, όπως το trickle.
  • Υποστήριξη για την κεφαλίδα Accept-Encoding, τη μεταφορά συμπιεσμένων δεδομένων και τους αλγόριθμους συμπίεσης brotli, zstd, lzip, gzip, deflate, lzma και bzip2.
  • Υποστήριξη για TLS 1.3, OCSP (Online Certificate Status Protocol) για έλεγχο ανακληθέντων πιστοποιητικών, μηχανισμό HSTS (HTTP Strict Transport Security) για αναγκαστική ανακατεύθυνση σε HTTPS και HPKP (HTTP Public Key Pinning) για δέσμευση πιστοποιητικού.
  • Δυνατότητα χρήσης GnuTLS, WolfSSL και OpenSSL ως backend για TLS.
  • Υποστήριξη για γρήγορο άνοιγμα συνδέσεων TCP (TCP FastOpen).
  • Ενσωματωμένη υποστήριξη μορφής Metalink.
  • Υποστήριξη διεθνοποιημένων ονομάτων τομέα (IDNA2008).
  • Η δυνατότητα ταυτόχρονης εργασίας μέσω πολλών διακομιστών μεσολάβησης (μία ροή θα φορτωθεί μέσω ενός διακομιστή μεσολάβησης και η δεύτερη μέσω ενός άλλου).
  • Ενσωματωμένη υποστήριξη για ροές ειδήσεων σε μορφές Atom και RSS (για παράδειγμα, για σάρωση και λήψη συνδέσμων). Τα δεδομένα RSS/Atom μπορούν να ληφθούν από ένα τοπικό αρχείο ή μέσω του δικτύου.
  • Υποστήριξη για εξαγωγή διευθύνσεων URL από Χάρτες ιστότοπου. Διαθεσιμότητα αναλυτών για εξαγωγή συνδέσμων από αρχεία CSS και XML.
  • Υποστήριξη για την οδηγία 'include' σε αρχεία διαμόρφωσης και διανομή ρυθμίσεων σε πολλά αρχεία (/etc/wget/conf.d/*.conf).
  • Ενσωματωμένος μηχανισμός προσωρινής αποθήκευσης ερωτημάτων DNS.
  • Δυνατότητα επανακωδικοποίησης περιεχομένου αλλάζοντας την κωδικοποίηση του εγγράφου.
  • Λογιστική για το αρχείο "robots.txt" κατά τις αναδρομικές λήψεις.
  • Αξιόπιστη λειτουργία εγγραφής με κλήση fsync() μετά την αποθήκευση δεδομένων.
  • Δυνατότητα συνέχισης των διακοπτόμενων συνεδριών TLS, καθώς και προσωρινής αποθήκευσης και αποθήκευσης παραμέτρων περιόδου λειτουργίας TLS σε ένα αρχείο.
  • Λειτουργία "--input-file-" για τη φόρτωση διευθύνσεων URL που προέρχονται από την τυπική ροή εισόδου.
  • Έλεγχος της εμβέλειας του Cookie σε σχέση με τον κατάλογο επιθημάτων δημόσιου τομέα (Λίστα επιθημάτων δημόσιου τομέα) για την απομόνωση μεταξύ τους διαφορετικών τοποθεσιών που φιλοξενούνται στον ίδιο τομέα δεύτερου επιπέδου (για παράδειγμα, "a.github.io" και "b.github. io»).
  • Υποστηρίζει τη λήψη ροής ICEcast/SHOUTcast.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο