Першы стабільны рэліз утыліты для загрузкі 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

Дадаць каментар