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