Wget

来自 Arch Linux 中文维基

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 快得多"。

要使用 wget2,请从 AUR 安装 wget2AUR}。需要注意的是,这需要对 pandoc 进行 makedepend,依赖度较高;您也可以安装 AUR中的 wget2-no-docsAUR 来避免依赖。

配置[编辑 | 编辑源代码]

可在 /etc/wgetrc 中配置。默认配置文件不仅文档详尽,而且很少需要修改。更多复杂选项,请参见 wget(1) § OPTIONS

FTP 自动化[编辑 | 编辑源代码]

通常,SSH 用于在网络之间安全地传输文件。不过,相比于通过 SSH 运行的 scp 和rsync,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.3GiB 的文件。

简而言之,该程序

  • 可编写脚本
  • 比 ssh 更快
  • 可替代字符串变量的语言易于使用
  • globbingcapable

代理[编辑 | 编辑源代码]

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
警告: 请注意,以纯文本存储密码并不安全。可使用 chmod 600 /etc/pacman.conf 确保只有 root 才能读取该文件。

用法[编辑 | 编辑源代码]

本节将解释 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'

And if third-party content is to be included in the download, -H/--span-hosts switch can be used alongside -r/--recursive to recurse to linked hosts.