用于下载 GNU Web 内容的实用程序 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 协议支持。
  • 使用 If-Modified-Since HTTP 标头仅下载修改后的数据。
  • 改用外部带宽限制器,例如trickle。
  • 支持 Accept-Encoding 标头、压缩数据传输以及 brotli、zstd、lzip、gzip、deflate、lzma 和 bzip2 压缩算法。
  • 支持 TLS 1.3、用于检查吊销证书的 OCSP(在线证书状态协议)、用于强制重定向到 HTTPS 的 HSTS(HTTP 严格传输安全)机制和用于证书绑定的 HPKP(HTTP 公钥固定)。
  • 能够使用 GnuTLS、WolfSSL 和 OpenSSL 作为 TLS 的后端。
  • 支持快速打开 TCP 连接(TCP FastOpen)。
  • 内置 Metalink 格式支持。
  • 支持国际化域名 (IDNA2008)。
  • 同时通过多个代理服务器工作的能力(一个流将通过一个代理加载,第二个流将通过另一个代理加载)。
  • 内置支持 Atom 和 RSS 格式的新闻源(例如,用于扫描和下载链接)。 RSS/Atom 数据可以从本地文件或通过网络下载。
  • 支持从站点地图中提取 URL。 可以使用解析器从 CSS 和 XML 文件中提取链接。
  • 支持配置文件中的“include”指令以及跨多个文件(/etc/wget/conf.d/*.conf)分布设置。
  • 内置DNS查询缓存机制。
  • 通过更改文档编码来重新编码内容的可能性。
  • 在递归下载期间考虑“robots.txt”文件。
  • 保存数据后调用 fsync() 的可靠写入模式。
  • 能够恢复中断的 TLS 会话,以及缓存 TLS 会话参数并将其保存到文件中。
  • “--input-file-”模式用于加载来自标准输入流的 URL。
  • 根据公共域后缀目录(公共后缀列表)检查 Cookie 的范围,以隔离同一二级域中托管的不同站点(例如,“a.github.io”和“b.github.io”)。 io”)。
  • 支持下载ICEcast/SHOUTcast流媒体。

来源: opennet.ru

添加评论