Перший стабільний реліз утиліти для завантаження web-контенту GNU Wget2

Після трьох з половиною років розробки представлено перший стабільний реліз проекту GNU Wget2, який розвиває повністю перероблений варіант програми для автоматизації рекурсивного завантаження контенту GNU Wget. GNU Wget2 спроектований і переписаний з нуля і примітний винесення базової функціональності web-клієнта в бібліотеку libwget, яка може окремо застосовуватися в додатках. Утиліта постачається під ліцензією GPLv3+, а бібліотека під LGPLv3+.

Замість поступової переробки існуючої кодової бази було вирішено переробити все з нуля та заснувати окрему гілку Wget2 для втілень ідей щодо реструктуризації, нарощування функціональності та внесення змін, що порушують сумісність. За винятком припинення підтримки протоколу FTP і формату WARC, wget2 у більшості ситуацій може бути прозорою заміною класичної утиліти wget.

При цьому wget2 має деякі документовані відмінності у поведінці, надає близько 30 додаткових опцій та припиняє підтримку кількох десятків опцій. У тому числі припинено обробку таких опцій, як «ask-password», «header», «exclude-directories», «ftp*», «warc*», «limit-rate», «relative » та «-unlink».

З ключових новацій можна відзначити:

  • Винесення функціональності до бібліотеки libwget.
  • Перехід на багатопотокову архітектуру.
  • Можливість паралельної установки кількох з'єднань та завантаження у кілька потоків. У тому числі можливе розпаралелювання завантаження одного файлу з розбивкою на блоки за допомогою опції «-chunk-size».
  • Підтримка протоколу HTTP/2.
  • Використання заголовка HTTP If-Modified-Since для завантаження лише змінених даних.
  • Перехід застосування зовнішніх обмежувачів пропускної спроможності, таких як 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 як бекенд для TLS.
  • Підтримка швидкого відкриття TCP-з'єднань (TCP FastOpen).
  • Вбудована підтримка формату Metalink.
  • Підтримка інтернаціональних доменних назв (IDNA2008).
  • Можливість одночасно роботи через кілька проксі-серверів (один потік завантажуватиметься через один проксі, в другий через інший).
  • Вбудована підтримка стрічок новин у форматах Atom та RSS (наприклад, для сканування та завантаження посилань). Дані RSS/Atom можуть бути завантажені з локального файлу або мережі.
  • Підтримка вилучення URL із файлів Sitemap. Наявність парсерів для отримання посилань з файлів CSS і XML.
  • Підтримка директиви 'include' у конфігураційних файлах та розподіл налаштувань за кількома файлами (/etc/wget/conf.d/*.conf).
  • Вбудований механізм кешування запитів DNS.
  • Можливість перекодування вмісту зі зміною кодування документа.
  • Облік файлу robots.txt при рекурсивних завантаженнях.
  • Після збереження даних режим надійного запису з викликом fsync().
  • Можливість відновлення перерваних TLS-сеансів, а також кешування та збереження файлів параметрів TLS-сеансу.
  • Режим "-input-file -" для завантаження URL, що надходять через стандартний вхідний потік.
  • Перевірка області дії Cookie за каталогом публічних суфіксів доменів (Public Suffix List) для ізоляції один від одного різних сайтів, розміщених в одному домені другого рівня (наприклад, a.github.io і b.github.io).
  • Підтримка завантаження потокового мовлення у форматі ICEcast/SHOUTcast.

Джерело: opennet.ru

Додати коментар або відгук