Pierwsza stabilna wersja narzędzia do pobierania treści internetowych GNU Wget2

Po trzech i pół roku rozwoju zaprezentowano pierwszą stabilną wersję projektu GNU Wget2, w ramach której opracowano całkowicie przeprojektowaną wersję programu do automatyzacji rekurencyjnego pobierania zawartości GNU Wget. GNU Wget2 został zaprojektowany i napisany od podstaw i wyróżnia się przeniesieniem podstawowej funkcjonalności klienta sieciowego do biblioteki libwget, której można używać oddzielnie w aplikacjach. Narzędzie jest licencjonowane na licencji GPLv3+, a biblioteka na licencji LGPLv3+.

Zamiast stopniowo przerabiać istniejącą bazę kodu, zdecydowano się zrobić wszystko od nowa i utworzyć oddzielną gałąź Wget2, aby wdrożyć pomysły na restrukturyzację, zwiększenie funkcjonalności i wprowadzenie zmian psujących kompatybilność. Z wyjątkiem wycofywania protokołu FTP i formatu WARC, wget2 może w większości sytuacji działać jako przezroczysty zamiennik klasycznego narzędzia wget.

Biorąc to pod uwagę, wget2 ma pewne udokumentowane różnice w zachowaniu, zapewnia około 30 dodatkowych opcji i przestaje obsługiwać kilkadziesiąt opcji. Uwzględniono przetwarzanie takich opcji jak „-ask-password”, „-header”, „-exclude-directories”, „-ftp*”, „-warc*”, „-limit-rate”, „-relative”. zatrzymany” i „--unlink”.

Kluczowe innowacje obejmują:

  • Przeniesienie funkcjonalności do biblioteki libwget.
  • Przejście na architekturę wielowątkową.
  • Możliwość ustanawiania wielu połączeń równolegle i pobierania do wielu wątków. Możliwe jest również równoległe pobieranie jednego pliku podzielonego na bloki przy użyciu opcji „-chunk-size”.
  • Obsługa protokołu HTTP/2.
  • Użyj nagłówka HTTP If-Modified-Since, aby pobrać tylko zmodyfikowane dane.
  • Przełącz się na korzystanie z zewnętrznych ograniczników przepustowości, takich jak strumień.
  • Obsługa nagłówka Accept-Encoding, transferu skompresowanych danych oraz algorytmów kompresji brotli, zstd, lzip, gzip, deflate, lzma i bzip2.
  • Obsługa protokołu TLS 1.3, OCSP (Online Certyfikat Status Protocol) do sprawdzania unieważnionych certyfikatów, mechanizmu HSTS (HTTP Strict Transport Security) do wymuszania przekierowania do HTTPS i HPKP (HTTP Public Key Pinning) do powiązania certyfikatu.
  • Możliwość wykorzystania GnuTLS, WolfSSL i OpenSSL jako backendów dla TLS.
  • Obsługa szybkiego otwierania połączeń TCP (TCP FastOpen).
  • Wbudowana obsługa formatu Metalink.
  • Obsługa międzynarodowych nazw domen (IDNA2008).
  • Możliwość jednoczesnej pracy przez kilka serwerów proxy (jeden strumień będzie ładowany przez jeden serwer proxy, a drugi przez inny).
  • Wbudowana obsługa kanałów informacyjnych w formatach Atom i RSS (na przykład do skanowania i pobierania linków). Dane RSS/Atom można pobrać z pliku lokalnego lub przez sieć.
  • Obsługa wyodrębniania adresów URL z map witryn. Dostępność parserów do wyodrębniania linków z plików CSS i XML.
  • Obsługa dyrektywy „include” w plikach konfiguracyjnych i dystrybucja ustawień w kilku plikach (/etc/wget/conf.d/*.conf).
  • Wbudowany mechanizm buforowania zapytań DNS.
  • Możliwość przekodowania treści poprzez zmianę kodowania dokumentu.
  • Rozliczanie pliku „robots.txt” podczas pobierania rekurencyjnego.
  • Niezawodny tryb zapisu z wywołaniem fsync() po zapisaniu danych.
  • Możliwość wznawiania przerwanych sesji TLS, a także buforowania i zapisywania parametrów sesji TLS do pliku.
  • Tryb „--input-file-” do ładowania adresów URL przychodzących przez standardowy strumień wejściowy.
  • Sprawdzanie zakresu pliku cookie w odniesieniu do katalogu sufiksów domeny publicznej (Lista sufiksów publicznych) w celu odizolowania od siebie różnych witryn hostowanych w tej samej domenie drugiego poziomu (na przykład „a.github.io” i „b.github. io”).
  • Obsługuje pobieranie transmisji strumieniowej ICEcast/SHOUTcast.

Źródło: opennet.ru

Dodaj komentarz