ยูทิลิตี้รุ่นแรกที่เสถียรสำหรับการดาวน์โหลดเนื้อหาเว็บ GNU Wget2

หลังจากสามปีครึ่งของการพัฒนา ได้มีการนำเสนอโครงการ GNU Wget2 รุ่นเสถียรรุ่นแรก ซึ่งพัฒนาโปรแกรมเวอร์ชันที่ออกแบบใหม่ทั้งหมดสำหรับการดาวน์โหลดเนื้อหา GNU Wget แบบเรียกซ้ำโดยอัตโนมัติ GNU Wget2 ได้รับการออกแบบและเขียนใหม่ตั้งแต่ต้น และมีความโดดเด่นในการย้ายฟังก์ชันพื้นฐานของเว็บไคลเอ็นต์ไปยังไลบรารี libwget ซึ่งสามารถใช้แยกกันในแอปพลิเคชันได้ ยูทิลิตี้นี้ได้รับอนุญาตภายใต้ GPLv3+ และไลบรารีได้รับอนุญาตภายใต้ LGPLv3+

แทนที่จะค่อยๆ ปรับปรุงฐานโค้ดที่มีอยู่ มีการตัดสินใจที่จะทำซ้ำทุกอย่างตั้งแต่เริ่มต้น และสร้างสาขา Wget2 แยกต่างหากเพื่อใช้แนวคิดในการปรับโครงสร้างใหม่ เพิ่มฟังก์ชันการทำงาน และทำการเปลี่ยนแปลงที่ทำลายความเข้ากันได้ ยกเว้นการเลิกใช้โปรโตคอล FTP และรูปแบบ WARC แล้ว wget2 สามารถทำหน้าที่เป็นการทดแทนที่โปร่งใสสำหรับยูทิลิตี้ wget แบบคลาสสิกในสถานการณ์ส่วนใหญ่

ดังที่กล่าวไปแล้ว wget2 มีการบันทึกความแตกต่างในด้านพฤติกรรม มีตัวเลือกเพิ่มเติมประมาณ 30 ตัวเลือก และหยุดรองรับตัวเลือกหลายสิบตัวเลือก รวมถึงการประมวลผลตัวเลือกเช่น “-ask-password”, “-header”, “-exclude-directories”, “-ftp*”, “-warc*”, “-limit-rate”, “-relative” ได้รับ หยุด " และ "--ยกเลิกการเชื่อมโยง"

นวัตกรรมที่สำคัญได้แก่:

  • การย้ายฟังก์ชันการทำงานไปยังไลบรารี libwget
  • การเปลี่ยนไปใช้สถาปัตยกรรมแบบมัลติเธรด
  • ความสามารถในการสร้างการเชื่อมต่อหลายรายการพร้อมกันและดาวน์โหลดไปยังหลายเธรด นอกจากนี้ยังเป็นไปได้ที่จะขนานการดาวน์โหลดไฟล์หนึ่งไฟล์ที่แบ่งออกเป็นบล็อกโดยใช้ตัวเลือก "-chunk-size"
  • รองรับโปรโตคอล HTTP/2
  • ใช้ส่วนหัว HTTP If-Modified-Since เพื่อดาวน์โหลดเฉพาะข้อมูลที่แก้ไข
  • เปลี่ยนไปใช้ตัวจำกัดแบนด์วิธภายนอก เช่น หยด
  • รองรับส่วนหัว 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
  • รองรับคำสั่ง 'รวม' ในไฟล์การกำหนดค่าและการกระจายการตั้งค่าไปยังไฟล์ต่างๆ (/etc/wget/conf.d/*.conf)
  • กลไกการแคชแบบสอบถาม DNS ในตัว
  • ความเป็นไปได้ในการบันทึกเนื้อหาโดยการเปลี่ยนการเข้ารหัสเอกสาร
  • การบัญชีสำหรับไฟล์ "robots.txt" ระหว่างการดาวน์โหลดแบบเรียกซ้ำ
  • โหมดการเขียนที่เชื่อถือได้พร้อมการเรียก fsync() หลังจากบันทึกข้อมูล
  • ความสามารถในการดำเนินการเซสชัน TLS ที่ถูกขัดจังหวะต่อ รวมถึงแคชและบันทึกพารามิเตอร์เซสชัน TLS ลงในไฟล์
  • โหมด "--input-file-" สำหรับการโหลด URL ที่มาจากสตรีมอินพุตมาตรฐาน
  • การตรวจสอบขอบเขตของคุกกี้กับไดเร็กทอรีของส่วนต่อท้ายที่เป็นสาธารณสมบัติ (รายการส่วนต่อท้ายสาธารณะ) เพื่อแยกออกจากไซต์ต่างๆ ที่โฮสต์ในโดเมนระดับที่สองเดียวกัน (เช่น "a.github.io" และ "b.github ไอโอ”)
  • รองรับการดาวน์โหลดสตรีมมิ่ง ICEcast/SHOUTcast

ที่มา: opennet.ru

เพิ่มความคิดเห็น