ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ· ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ 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