Wget

来自 ArchWiki

GNU Wget 是一个自由软件,用于使用 HTTP、HTTPS、FTP 和 FTPS (FTPS 自 1.18 版本起) 检索文件。它是一个非交互式的命令行工具,因此可以很容易地从脚本中调用。

安装

wget 1.x

安装 wget 软件包。git 版本位于 AUR 中,名称为 wget-gitAUR

wget2

wget2 是一个命令行语法几乎相同的替代品,它是 “GNU Wget 的继任者”,并且是“从头开始设计和编写的”。这个重写版本“采用多线程,并使用许多特性来实现快速操作。在许多情况下,由于 HTTP2、HTTP 压缩、并行连接和 If-Modified-Since HTTP 标头的使用,Wget2 的下载速度比 Wget1.x 快得多。” [1]

为了使用 wget2,安装 wget2AUR,从 AUR 获取。请注意,这依赖于 pandoc,这是一个依赖性很强的软件包;您也可以 安装 wget2-no-docsAUR,同样在 AUR 中,以避免这种依赖性。

配置

配置在 /etc/wgetrc 中执行。默认配置文件不仅文档齐全;而且也很少需要更改它。有关更复杂的选项,请参阅 wget(1) § OPTIONS

FTP 自动化

通常,SSH 用于在网络中安全地传输文件。然而,与 scp 和通过 SSH 的 rsyncing 相比,FTP 资源占用更少。FTP 不安全,但当在受防火墙保护的环境中,在 CPU 密集型系统上,传输大量数据时,使用 FTP 可能证明是有益的。

wget ftp://root:somepassword@10.13.X.Y//ifs/home/test/big/"*.tar"

3,562,035,200 74.4M/s   in 47s

在这种情况下,Wget 以 74.4MB/秒的速度传输了一个 3.3 GiB 的文件。

简而言之,此过程是

  • 可脚本化的
  • 比 ssh 更快
  • 比可以替换字符串变量的语言更容易使用
  • 具备 globbing 功能

代理

Wget 使用标准的代理环境变量。请参阅 代理设置

要使用代理身份验证功能

$ wget --proxy-user "DOMAIN\USER" --proxy-password "PASSWORD" URL

不包括使用 HTML 身份验证表单的代理。

pacman 集成

为了让 pacman 自动使用 Wget 和带有身份验证的代理,请将 Wget 命令放入 /etc/pacman.conf[options] 部分

XferCommand = /usr/bin/wget --proxy-user "domain\user" --proxy-password="password" --passive-ftp --quiet --show-progress --continue --output-document=%o %u
警告: 请注意,以纯文本形式存储密码是不安全的。请确保只有 root 用户可以读取此文件,方法是使用 chmod 600 /etc/pacman.conf

用法

本节介绍 Wget 的一些用例场景。

基本用法

Wget 最基本和最常见的用例之一是从互联网下载文件。

$ wget <url>

当您已经知道要下载的文件的 URL 时,这可能比通常在浏览器上下载并手动将其移动到正确目录的例程要快得多。不用说,仅从最简单的用法来看,您可能就可以看到一些利用它进行某些自动化下载的方法(如果那是您想要的)。

归档完整网站

Wget 可以归档完整网站,同时通过将绝对链接更改为相对链接来保留正确的链接目标。

$ wget --recursive --no-parent --convert-links 'target-url-here'

对于动态网站,可以使用一些额外的选项将其转换为静态 HTML。

$ wget --recursive --no-parent --page-requisites --adjust-extension --convert-links --backup-converted 'target-url-here'

wget 还提供了绕过下载预防机制的选项。

$ wget --recursive --no-parent --convert-links --random-wait --execute robots=off --user-agent "Mozilla/5.0" 'target-url-here'

如果第三方内容要包含在下载中,则可以同时使用 -H/--span-hosts 开关和 -r/--recursive 来递归到链接的主机。