12
7月
2023
17:25

用 Wget2 替换 Wget 实用程序

12 7月 2023 17:25

Wget2 实用程序提供与 Wget 相同的功能,但由于请求并行执行,速度提高了 5-10 倍。

要下载整个站点(镜像)或检查现有站点是否有损坏的链接 (404) 或下载一个文件,请使用 Wget 命令行实用程序。 该实用程序有一个免费且改进的替代品 - Wget2,由另一位程序员编写。

Wget2 的主要改进是多线程,因此站点加载或通过链接“绕过”的速度加快了 5-10 倍。

该程序必须从源代码编译。

https://github.com/rockdaboot/wget2

  1. 首先我更新了软件包:

    sudo apt-get update
    sudo apt-get upgrade

  2. 安装编译所需的包:

    sudo apt-get install autoconf autogen automake autopoint libtool python3 rsync tar pkg-config doxygen pandoc gettext libgnutls30 libidn12 flex libpsl5 libnghttp2-14 lcov

  3. 编译安装

给她的指示 “从 tarball 下载并构建”:

wget https://gnuwget.gitlab.io/wget2/wget2-latest.tar.gz

tar xf wget2-latest.tar.gz
cd wget2-
./配置
使
进行检查
须藤进行安装

该程序将安装在文件夹中 /usr/local/bin/wget2

  1. 呼叫帮助:

    man wget2

使用 wget2 实用程序与 wget 没有什么不同 - 程序密钥是相同的。

  1. 运行示例:检查站点是否有“损坏的”404 链接:

    wget2 -o out.log -m -l 3 --save-content-on "404" -T 2 http://example.com/

其中:

-o - 日志文件
-m - “镜像” - 包含文件夹和文件的镜像副本
-l 3 - 转换的嵌套级别

--save-content-on "404" - 仅在返回 404 代码时保存
-T 2 - 响应等待时间。

只会保存诸如“404”之类的服务页面,这些页面是使用内部链接抓取网站时未找到的结果,并且可以从地址中识别出错误的链接。

通过这些设置,将连续发出请求,这对于本地网站来说是最佳的。
对于其他人的网站,我建议添加暂停 -w 2 - 请求之间的等待时间(以秒 (2s) 为单位)。


MAN Wget2 俄语

WGET2(1) GNU Wget2 2.0.1 WGET2(1)

名称
获取2- 递归metalink/文件/网站下载器。

简要概述
wget2 [选项]...[URL]...

描述
GNU Wget2 是一个免费实用程序,用于从 Internet 上以非交互方式下载文件。 它支持 HTTP 和 HTTPS 协议,以及通过 HTTP(s) 代理检索信息。

Wget2 是一个非交互式工具,这意味着它可以在用户未登录时在后台运行。 这允许您开始检索信息并断开与系统的连接,从而允许 Wget2 完成其工作。 相反,大多数网络浏览器需要用户持续存在,这在传输大量数据时可能是一个很大的障碍。

Wget2 可以跟踪 HTML、XHTML、CSS、RSS、Atom 和站点地图文件中的链接来创建远程网站的本地版本,完全重新创建原始站点的目录结构。 有时称为递归加载。 但是,Wget2 遵守机器人排除标准 (/robots.txt)。 可以指示 Wget2 将下载文件中的链接转换为指向本地文件以供离线查看。

Wget2 旨在为缓慢或不稳定的网络连接提供可靠性;如果由于网络问题导致下载失败,该实用程序将重试,直到恢复整个文件。 如果服务器支持部分下载,则将从中断处继续。

Wget2 选项

选项语法

选项是可选的附加参数,可用于控制程序的行为。 - 大约。 翻译者

每个选项都有长形式,有时也有短形式。 长选项更容易记住,但打字需要更长的时间。 您可以自由组合不同风格的选项。 所以你可以写:

wget2 -r --tries=10 https://example.com/ -o log

带参数的选项和参数本身之间的空格可以省略。 您可以编写 -olog,而不是 -o log。

您可以组合多个不需要参数的选项,例如:

wget2 -drc URL

什么是等效的

wget2 -d -r -c URL

由于参数后面可能会指定其他选项,因此可以用 -- 分隔它们。 因此,以下命令将尝试加载 -x URL,并向日志报告失败:

wget2 -o log -- -x URL

接受逗号分隔的参数列表的选项遵循添加 -no 清除其值的约定。 这对于清理 .wgetrc 设置可能很有用。 例如,如果您的 .wget2rc 将排除目录设置为 /cgi-bin,则 --no-exclude-directories 选项将首先重置此设置,然后将其设置为排除 /priv 和 /trash。 您还可以清除 .wget2rc 文件中的列表。

wget2 --no-exclude-directories -X /priv,/trash

大多数不带参数的选项都是布尔选项,之所以如此命名是因为可以使用“布尔”变量捕获它们的状态。 布尔参数可以是肯定的也可以是否定的(以 --no- 开头)。 所有这些选项都有几个共同的属性。

通过在选项名称前加上 --no- 前缀,可以将肯定选项转换为否定选项;通过省略 --no- 前缀,否定选项可以转换为肯定选项。 这可能看起来多余 - 如果“积极”选项的默认设置是不执行某些操作,那么为什么要提供一种显式关闭它的方法呢? 但启动文件实际上可能会更改默认值。 例如,在 .wget2rc 中使用 TimeStamping=on 选项告诉 WGET2 仅下载更新的文件。 使用 --no-timestamping 选项是从命令行恢复该选项的出厂默认值的唯一方法。

Wget2 的基本启动选项

-V, --version
显示 Wget2 版本。

-h, -help
打印描述所有 WGET2 命令行选项的帮助消息。

-b, --background
启动后立即将应用程序发送到后台。 如果未通过 -o 指定输出文件,则输出将重定向到“wget-log”文件。

-e, -execute-command
执行该命令,就像它是 .wget2rc 的一部分一样。 以这种方式声明的命令将在 .wget2rc 中的命令之后执行,从而超出其优先级。 如果您需要指定多个 WGET2RC 命令,请使用 -e 的多个实例。

--hyperlink
使用超链接而不是下载文件的名称,以便可以通过单击从终端打开它们。 目前只有少数终端仿真器支持超链接。 如果您知道您的终端支持超链接,请启用此选项。

日志和输入文件选项

-o,--output-file = logfile
将所有运行时消息打印到日志文件。 否则,错误消息将写入标准流。

-a,-append-output = logfile
添加到日志文件。 这与 -o 相同,只是它附加到日志而不是覆盖旧的日志文件。 如果日志文件不存在,则创建一个新文件。

-d, --debug
启用调试,这意味着如果 WGET2 未按预期工作,则需要提供对 WGET2 开发人员很重要的各种信息。 因为系统管理员可能决定在没有调试支持的情况下编译 wget2,在这种情况下 -d 将不起作用。 请注意,使用调试支持进行编译始终是安全的,除非显式指定 -d 选项,否则使用调试支持编译的 WGET2 将不会输出调试消息。

-q, -quiet
关闭 WGET2 的输出。

-v, --verbose
启用所有可用数据的多字输出。 默认情况下输出是详细的。

-nv, --no-verbose
禁用详细输出。 此模式并非完全静默(使用 -Q ),这意味着错误消息和基本信息仍将被打印。

--report-speed=type
显示水平速度指示条,其中包含类型中的速度值。 type 唯一接受的值是字节(这是默认值)和位。 仅当设置了 --progress=bar 时,此选项才有效。

-i,--input-file=file
从带有 URL 列表的本地或外部文件文件中读取 URL。 如果将“-”指定为文件,则从标准输入读取 URL。 使用 ./- 读取字面名为“./-”的文件。

如果使用此选项,则不需要在命令行上指定 URL。 如果命令行和 --input-file 文件上都有 URL,那么命令行上传递的 URL 将首先被提取。 该文件应包含一个地址列表,每行一个 URL,但 --force- 选项之一除外,该选项指定不同的格式。
如果您指出 --force-html, 该文档将被视为 HTML。在这种情况下,您可能会遇到相对链接问题,可以通过添加以下代码来解决: «base href="url"»标签 在文件中或通过指示--base=url 在命令行上。

如果您指出 --force-css,带有链接的文档将被视为 CSS。

如果您指出 --force-sitemap,该文档将被视为 XML SiteMap。

如果您指出 --force-atom,该文档将被视为 Atom feed。

如果您指出 --force-rss,该文档将被视为 RSS 提要。

如果您指出 --force-metalink,该文档将被视为对Metalink的描述。

如果您的相对链接有问题,您应该使用 --base=url 在命令行上。
-F, --force-html
当使用 --input-file=file 选项将网页视为输入文件时,强制将其视为 HTML 文件。 这将允许您通过相对链接从本地磁盘上的现有 HTML 文件中提取文件,方法是在 HTML 中添加“”,或在命令行上使用 -base 选项。

--force-css
读取输入文件并将其解析为 CSS。 这允许您从本地驱动器上的现有 CSS 文件中提取链接。 您将需要 -base 开关来正确处理相关链接。

--force-sitemap
读取输入文件并将其解析为 Sitemap XML。 这允许您从本地驱动器上的现有站点地图中提取链接。 您将需要 -base 开关来正确处理相关链接。

--force-atom
将输入文件读取并解析为 Atom XML 提要。 这允许您从本地磁盘上现有的 Atom XML feed 文件中提取链接。 您将需要 -base 开关来正确处理相关链接。

--force-rss

读取输入文件并将其解析为 RSS XML 提要。 这允许您从本地驱动器上现有的 RSS XML 提要文件中提取链接。 您将需要 -base 开关来正确处理相关链接。

--force-metalink
读取输入文件并将其解析为 Metalink 文件。 这允许您从本地驱动器上的现有 Metalink 文件检索链接。 您将需要 -base 开关来正确处理相关链接。

-B, --base=URL
当从通过 -i/input -file 选项指定的 HTML 文件读取链接时(与 -force... 选项一起,或者当从服务器远程检索输入文件时,将其描述为 HTML、CSS、Atom 或 RSS),允许使用 URL 作为参考点的相对链接。 这相当于在输入 HTML 文件中具有“BASE”标记,并将 URL 作为“href”属性的值。

例如,如果您指定 https://example.com/bar/a.html 作为基本 URL,则输入文件中 ../baz/b.html 链接中的 Wget2 将检索 https://example.com/baz/b.html 处的文件。

--config=FILE
指定要使用的配置文件的位置。 如果您指定多个文件,无论是使用逗号分隔的列表还是多个配置选项,这些文件都会按从左到右的顺序读取。 环境变量 $SYSTEM_WGET2RC 和($WGET2RC 或 ~/.wget2rc)中列出的文件按该顺序读取,然后是用户提供的配置文件。 如果指定,$WGET2RC 会替换 ~/.wget2rc。

--no-config
清除配置文件的内部列表。 因此,如果要阻止读取任何配置文件,请在命令行上使用 --no-config 选项。

--no-config 其次是 --config=file 跳过读取标准文件,只读取配置文件 file。
wget 将尝试在支持的平台上解析配置文件中写入的文件名,并使用波形符 ~ 作为用户的目录名。 要使用以“~”字符开头的文件,请使用“./~”或绝对路径。

--rejected-log=logfile 【尚未实现】
将所有已撤销的配置文件 URL 记录为逗号分隔列表。 值包括拒绝原因、URL 以及找到的父 URL。

--local-db
允许读取/写入本地文件数据库(默认:启用)。

有 --hsts、--hpkp、--ocsp 等文件。

当指定时 --no-local-db 可以禁用读/写,方便测试。
该选项不影响读取配置文件。

--stats-dns=[FORMAT:]FILE
将 DNS 统计信息以 FORMAT 格式保存到 FILE 文件中。
格式可以是“人类”或“csv”。
输出文件“-”代表stdout,“h”是人类可读格式的缩写。

输出的CSV文件格式如下:
Hostname, IP, Port, Duration
其中:
Duration- 响应时间以毫秒为单位。

--stats-tls=[FORMAT:]FILE
将(安全连接的)TLS 统计信息以 FORMAT 格式保存到 FILE 文件中。
格式可以是“人类”或“csv”。

输出文件“-”代表stdout,“h”是人类可读格式的缩写。

输出的CSV文件格式如下:
Hostname, TLSVersion, FalseStart, TFO, Resumed, ALPN, HTTPVersion, Certificates, Duration
其中:
T对于 SSL3、TLS1.0、TLS1.1、TLS1.2 和 TLS1.3,lsversion 可以是 1,2,3,4,5。 -1 表示“否”。
Falsestart- 是否使用了 False Start 连接。 -1(如果不适用)。
Tfo- 连接是否使用 TCP“快速打开”。 如果 TFO 被禁用,则为 -1。
Resumed- TLS 会话是否已恢复。
ALPN 是 ALPN 协商字符串。
HTTPVersion- 对于 HTTP 1.1 等于 0,对于 HTTP 2.0 等于 1。
Certificates 是服务器证书链的大小。
Duration- 持续时间以毫秒为单位表示。

--stats-ocsp=[FORMAT:]FILE
将 OCSP 统计信息以 FORMAT 格式保存到 FILE 文件中。
格式可以是“人类”或“csv”。 输出文件“-”代表stdout,“h”是人类可读格式的缩写。

输出的CSV文件格式如下:
Hostname, Stapling, Valid, Revoked, Ignored

其中:
Stapling OCSP 响应是否已缝合。
Valid 有多少服务器证书对 OCSP 有效。
Revoked 有多少个有关 OCSP 的服务器证书已被吊销。
Ignored 有多少服务器证书在 OCSP 方面被忽略。

--stats-server=[FORMAT:]FILE
将服务器统计信息以 FORMAT 格式保存到 FILE 文件中。
格式可以是“人类”或“csv”。 输出文件“-”代表stdout,“h”是人类可读格式的缩写。
输出的CSV文件格式如下:
Hostname, IP, Scheme, HPKP, NewHPKP, HSTS, CSP
其中:
Scheme - 数值 0、1、2 分别表示: None, http, https
HPKP- HTTP 公钥固定值 0、1、2、3 表示“无 HPKP”、“HPKP 匹配”、“HPKP 不匹配”、“HPKP 错误”。
NewHPKP- 服务器是否发送HPKP标头(Public-Key-Pins)
HSTS- 服务器是否发送了 HSTS(严格传输安全)标头?
CSP- 服务器是否发送 CSP(内容安全策略)标头。

--stats-site=[FORMAT:]FILE
将站点统计信息以 FORMAT 格式保存到 FILE 文件中。
格式可以是“人类”或“csv”。 输出文件“-”代表stdout,“h”是人类可读格式的缩写。
输出的 CSV 文件格式如下:
ID, ParentID, URL, Status, Link, Method, Size, SizeDecompressed, TransferTime, ResponseTime, Encoding, Verification
其中:
ID 是用于记录统计信息的唯一 ID。
ParentID 是父文档的 ID,适用于 --recursive 递归模式。
URL 是文档的 URL(地址)。
Status 是 HTTP 响应代码,如果无响应则为 0。
Link - 1 表示“直接链接”,0 表示“重定向链接”。
Method - 1、2、3 分别表示 GET、HEAD 和 POST 请求类型。
Size 是下载的请求体大小(HEAD 请求的理论值为 0)。
SizeDecompressed 是解压缩后的请求体大小(HEAD 请求的理论值为 0)。
TransferTime 表示从请求开始到下载完成所花费的时间,单位为毫秒。
ResponseTime 表示从请求开始到收到第一个数据包响应所花费的时间,单位为毫秒。
Encoding - 0、1、2、3、4、5 表示服务器上的压缩类型:'identity'、'gzip'、'deflate'、'lzma/xz'、'bzip2'、'brotli'、'zstd'、'lzip'。
Verification 表示 PGP 验证状态。0、1、2、3 分别表示 'none'、'valid'、'invalid'、'bad'、'missing'。

下载选项

-bind-address=ADDRESS
创建 TCP/IP 客户端连接时,绑定到本地计算机上的特定 IP 地址。 地址可以指定为主机名或 IP 地址。 如果您的计算机有多个 IP 地址,此选项会很有用。

--bind-interface=INTERFACE
创建 TCP/IP 客户端连接时,绑定到本地计算机上的接口。 Interface 可以指定为网络接口的名称。 如果您的计算机有多个网络接口,此选项会很有用。 但是,该选项仅在 wget2 以提升的权限运行时才有效(在 GNU/Linux 上:root/sudo 或 sudo setcap cap_net_raw+ep“wget | wget2 的路径”)。

-t, --tries=number
设置尝试次数。 指定 0 或 Inf 以无限重复。 默认情况下,程序会重试请求 20 次,但“连接被拒绝”或“未找到”(404) 等致命错误则不会重试。

--retry-on-http-error=list
提供以逗号分隔的 HTTP 代码列表,WGET2 将针对这些代码重试下载。 列表元素可以包含通配符。 如果 HTTP 代码以字符开头 ! 该代码将不会被加载。 当尝试下载有异常的内容时,该选项非常有用。 例如,重试除 404 错误代码之外的所有失败下载:
wget2 --retry-on-http-error=*,!404 https://example.com/

请记住,“200”是唯一的禁止代码。 如果它包含在状态列表中,wget2 将忽略它。 使用 --tries 选项设置最大下载尝试次数。

-O, --output-document=file
这些文档不会写入各自单独的文件,而是会合并在一起写入文件。 如果使用“-”作为文件,文档将打印到标准输出,禁用链接转换。 使用 ./- 打印到字面名为“-”的文件。 为了避免 WGET2 状态消息与文件内容混合,请结合使用 -q 和“-”(这与 WGET 1.x 的行为方式不同)。

将“-r”或“-p”与“-o”一起使用可能无法按您的预期工作:Wget2 不会仅将第一个文件下载到文件中,然后将其余文件下载到其正常名称:所有下载的内容都将放置在文件中。

仅当给定的输出文件不存在时才接受与 -NC 的组合。

当与“-c”选项结合使用时,WGET2 将尝试继续下载名称传递给该选项的文件,无论实际文件是否存在于磁盘上。 这允许用户下载现有文件旁边具有临时名称的文件。

请注意,仅在加载单个文档时才允许使用“-k”组合,因为在这种情况下,它只是将所有相对 URI 转换为外部 URI;当多个 URI 全部加载到一个文件中时,“-k”对于多个 URI 没有任何意义;仅当输出是常规文件时才能使用“-k”。

兼容性说明:WGET 1.X 在处理“-o”选项时使用类似于 shell 重定向的机制。 Wget2 不以相同的方式处理该选项。 因此,该文件并不总是会再次创建。 除非实际写入,否则文件的时间戳不会受到影响。 因此,现在支持“-c”和“-n”与此选项结合使用。

-nc, --no-clobber
如果在同一目录中多次下载文件,Wget2 的行为取决于多个选项,包括 -nc。

在某些情况下,再次下载时本地文件会被损坏或覆盖。 在其他情况下,将保存原始文件。

运行不带“-n”、“-nc”、“-r”或“-p”的 wget2,在同一目录中下载同一文件将导致保留该文件的原始副本,并且将在附近创建名为 file.1 的文件的实例。 如果再次下载该文件,将创建第三个副本,名为 file.2,依此类推。 (这也是 -nd 的行为,即使 -P 或 -p 有效。)使用 --keep-extension 来使用替代文件命名模式。

当给出 -NC 时,此行为(file.1、file.2)将被抑制,并且 WGET2 将拒绝下载文件的新副本。 因此,“--no-clobber”实际上是这种模式的用词不当——它并不是阻止覆盖(因为数字后缀已经阻止了覆盖),而是阻止创建同一文件的多个版本。

当使用“-r”或“-p”选项运行 wget2,但没有“-N”、“-nd”或“-nc”时,再次下载文件将下载新版本,这将覆盖旧版本。 添加 -NC 将阻止此行为,并导致保留原始版本并忽略服务器上文件的任何新副本。

当使用“-N”开关运行 wget2 时,无论是否带有“-r”或 -p,是否下载文件的较新副本的决定取决于本地和远程时间戳以及文件大小。 -nc 选项不能与-N 一起指定。 仅当给定的输出文件不存在时,才接受与“-O”/--output-document 的组合。

请注意,当指定 -nc 时,将从本地磁盘下载带有 .html 或 .htm 后缀的文件并进行解析,就像从 Internet 检索这些文件一样。

--backups=backups
在覆盖文件之前,请通过在文件名中添加后缀 .1 来创建现有文件的备份副本。 此类备份文件的创建名称以 .2、.3 等结尾 - 备份(除此之外还会丢失)。

-c, --continue
继续接收部分下载的文件。 当您想要完成由 WGET2 或其他程序的先前实例启动的下载时,这非常有用。 例如:

wget2 -c https://example.com/tarball.gz

如果当前目录中有一个名为 tarball.gz 的文件,WGET2 将假定这是正在下载的文件的第一部分,并要求服务器从等于本地文件长度的偏移量继续搜索。

请注意,如果您只是希望当前 WGET2 调用在传输过程中连接断开时重试下载文件,则无需指定此选项。 这是默认行为。 “-c”开关仅影响在此 Wget2 调用之前开始且存在本地文件的下载的恢复。

如果没有上一个示例中的“-c”,WGET2 将仅从 Internet 下载一个名为 Tarball.gz.1 的文件,并将截断的 tarball.gz 文件留在附近。

如果您对非空文件使用“-c”,并且发现服务器不支持继续下载(“重新下载”),Wget2 将拒绝从头开始下载,从而有效地破坏文件的现有内容。 如果您确实希望从头开始下载,请删除该文件。

如果您对与服务器上的文件大小相同的文件使用“-c”开关,Wget2 将拒绝下载该文件并打印一条解释性消息。 如果服务器上的文件小于本地文件(可能是因为自上次上传尝试以来,服务器上的文件已更改),也会发生同样的情况。 由于“继续”没有意义,因此不会发生加载。

另一方面,当使用“-c”时,服务器上比本地文件大的任何文件都将被视为不完整下载,并且只会下载“(length(remote) - length(local))”并将其附加到本地文件的末尾。 在某些情况下,这种行为可能是理想的。 例如,您可以使用 wget2 -c 仅下载附加到正在收集的数据末尾或日志文件中的新部分。

但是,如果服务器上的文件较大,因为它已被修改而不只是附加,则最终会得到格式错误的文件。 WGET2 无法确认本地文件确实是远程文件的有效前缀。 当将 -C 与 -R 结合使用时,必须特别小心,因为每个文件都将被视为“不完全加载”的候选文件。

如果您尝试使用 -c,您将得到格式错误的文件的另一个实例是,如果您有一个错误的 HTTP 代理,它将“传输”行插入到本地文件中。 将来,可能会添加“回滚”选项来解决这种情况。

请注意,-c 仅适用于支持“RANGE”标头的 HTTP 服务器。

--start-pos=OFFSET
以相对于零的位置偏移开始加载。 偏移量可以用字节、千位(后缀为“k”)或兆字节(后缀为“m”)等表示。

--start-pos 优先于 --continue。 当同时指定 --start-pos 和 --Continue 时,WGET2 将发出冲突警告。

服务器需要支持加载继续,否则--start-pos将无济于事。 详细信息请参见“-c”选项的说明。

--progress=type
选择您要使用的进度条类型。 支持的指标类型为“none”和“bar”。

“bar”类型绘制带有 ASCII 进度球(又名“温度计”)的图形,指示进度状态。

如果输出是 TTY 控制台,则默认值是“bar”。 否则,除非使用 --force-progress,否则进度条将被禁用。

目前不支持“dot”类型,但不会引发错误,以免破坏 WGET 批处理文件。

参数化面板类型:“bar:force”和“bar:force:noscroll”添加 --force-progress 效果。 这样做是为了更好地与 WGET 兼容。

--force-progress
使wget2能够显示进度条(progress bar)。

默认情况下,Wget2 仅在“--verbose”模式下显示进度条。 然而,有人可能希望 WGET2 与任何其他模式(例如“–no-verbose”或“–quiet”)结合在屏幕上显示进度条。 当调用 WGET2 下载多个小/大文件时,这通常是所需的属性。 在这种情况下,只需使用此参数调用 WGET2 即可在屏幕上获得更清晰的输出。

当与“--output-file”选项结合使用时,此选项还将导致进度条输出到 STDERR 流。

-N, --timestamping
启用文件时间戳。

-no-if-modified-since
在“-N”模式下,不发送“If-Changed-With”标头。 相反,发送初始 HEAD 请求。 仅在“-N”模式下有效。

--no-use-server-timestamps
不要将本地文件的日期和时间转换为服务器上的日期和时间。

По 默认情况下,下载文件时,其时间戳设置为与服务器上远程文件上的时间戳相匹配。 这允许在后续 WGET2 调用中使用时间戳。 但是,有时将本地文件的时间戳保留为实际首次下载时的时间戳是有用的;为此目的提供了选项 –no-server-timestamps。

-S, --server-response
打印 HTTP 服务器发送的响应标头。

--spider
当使用此选项调用时,Wget2 将表现得像网络蜘蛛,这意味着它不会加载页面,只是检查页面是否存在。 例如,您可以使用 wget2 来检查您的书签。

例如,您可以使用 wget2 检查 bookmarks.html 文件:

wget2 --spider --force-html -i bookmarks.html

此功能需要 Wget2 做更多的工作才能接近真正的网络蜘蛛的功能。
-T seconds, --timeout=seconds
将网络超时设置为秒。 这相当于同时指定 --dns-timeout、--connect-timeout 和 --read-timeout。
与网络交互时,Wget2 可以检查超时情况,如果时间过长则中止操作。 这可以防止读取挂起和无限连接等异常情况。 默认情况下启用的唯一超时是 900 秒的读取超时。 将超时设置为 0 会完全禁用它。 除非您知道自己在做什么,否则最好不要更改默认超时设置。

所有与超时相关的参数都接受小数值和小数值。 例如,0.1 秒是合法(尽管不明智)的超时选择。 分区下的超时对于检查服务器响应时间或测试网络延迟非常有用。

--dns-timeout=seconds
将 DNS 超时设置为秒。 未在指定时间内完成的 DNS 查找将会失败。 默认情况下,DNS 查找没有超时,系统库实现的超时除外。

--connect-timeout=seconds
将连接超时设置为秒。 耗时较长的 TCP 连接将被终止。 默认情况下,除了系统库实现的连接超时之外,没有连接超时。

--read-timeout=seconds
将读取(和写入)超时设置为秒。 这个超时的“时间”是指暂时的停机时间:如果在下载过程中的任何时候没有收到数据超过指定的秒数,则重新开始失败的读取和下载。 此选项不会直接影响整个下载的持续时间。

当然,远程服务器可能会在该选项生效之前决定关闭连接。 默认读取超时为 900 秒。

--limit-rate=amount
按每秒字节数限制下载速度。 该数量可以用字节、千位(后缀 K)或兆字节(后缀 M)表示。例如,–limit-rate = 20K 将把获取速率限制为 20 KB/s。 当由于某种原因您不希望 Wget2 消耗所有可用带宽时,这非常有用。

此选项允许使用十进制数字,通常与尺寸后缀结合使用;例如,–limit-rate = 2.5K 是合法值。

请注意,WGET2 通过在启动后进入睡眠状态一段时间(与读取网络后的时间量相对应)来实现限制,该时间比指示的速度值要少。 最终,此策略会导致 TCP 传输减慢至大约指定的速度。 但是,实现这种平衡可能需要一些时间,因此如果速度限制不适用于非常小的文件,请不要感到惊讶。

-w seconds, --wait=seconds
在请求之间等待指定的秒数。 建议使用此选项,因为它通过降低请求频率来减少服务器上的负载。 可以使用后缀“M”以分钟为单位指定时间,使用后缀“H”以小时为单位或使用后缀“D”以天为单位指定时间,而不是秒。

如果目标网络或主机已关闭(处于故障状态),则为此选项指定较大的值非常有用,以便 WGET2 可以等待足够长的时间以合理地期望网络错误在重试之前得到纠正。 此函数指定的等待间隔受“--random-wait”选项(如果存在)的影响。

--waitretry=seconds
如果您不希望 WGET2 在每个请求之间等待,而只在下载失败后的请求之间等待,则可以使用此选项。 WGET2 将使用线性回退,在给定文件中第一次失败后等待 1 秒,然后在该文件中第二次失败后等待 2 秒,直到您指定的最大秒数。

默认情况下,Wget2 使用 10 秒的值。

--random-wait
某些网站可以执行即时日志分析来识别文件下载程序(例如 WGET2),以查找请求之间时间上统计上显着的相似性。 此选项导致请求之间的时间在 0.5 到 1.5 秒之间变化。 通过使用 --random-wait 选项,您可以尝试从此类分析中掩盖 Wget2 的存在。

--no-proxy[=exceptions]
如果未指定选项参数,Wget2 会尝试保持与 wget1.x 的向后兼容并且不使用代理,即使定义了相应的 *_proxy 环境变量也是如此。

如果选项参数是逗号分隔的例外列表(域/IP 地址),则将在不使用代理的情况下加载这些例外。 选项胜过环境变量 no_proxy

-Q quota, --quota=quota
指定自动下载的配额(容量限制)。 配额值可以以字节(默认)、千位(后缀为“k”)或兆字节(后缀为“M”)为单位指定。

请注意,配额永远不会影响_单个_文件的下载。 所以如果你指定

wget2 -q10k https://example.com/bigfile.gz

无论如何,bigfile.gz 文件都会被下载。 即使在命令行上指定了多个 URL,也会发生同样的情况。 但是,在递归加载时或根据输入文件中的列表将应用配额。 这样您就可以安全地运行命令(不用担心硬盘已满):

wget2 -q2m -i 网站

如果超出配额,下载将被中止。

将配额设置为 0 或 Inf 将删除下载配额的限制。

--restrict-file-names=modes
配置在创建本地文件名时应将远程 URL 中的哪些字符替换为转义序列。 该选项禁止的字符将被转义,即替换为 %HH,其中 HH 是禁止字符对应的十六进制数。 此选项还可用于强制将所有字母大小写转换为小写或大写。

默认情况下,Wget2 会转义操作系统上文件名中无效或不安全的字符,以及通常不显示在屏幕上的控制字符。 此选项对于更改这些默认值很有用,可能是因为您正在将站点加载到其自身以外的文件系统分区上,或者因为您想要禁用控制字符转义,或者您想要进一步将字符限制为仅 ASCII 字符集值范围内的字符。

模式是一组用逗号分隔的文本值。 有效值为“unix”、“windows”、“nocontrol”、“ascii”、“lowercase”和“uppercase”。 值“unix”和“windows”是互斥的(一个覆盖另一个),就像“lowercase”排除“uppercase”一样。 最后两个是特殊情况,因为它们不会更改将转义的字符集,而是强制本地文件路径转换为小写或大写。

Ког如果值为“unix”,Wget2 会对字符范围 0–31 和 128–159 中的一个或多个字符以及转义序列进行转义。 这是类 Unix 操作系统上的默认设置。

КогYes 设置为“windows”,Wget2 转义字符“”、|、/、:、?、"、*、"、" 以及 0–31 和 128–159 范围内的控制字符。此外,Windows 模式下的 Wget2 使用 + 代替 : 来分隔本地文件名中的主机名和端口,并使用 @ 代替 ? 来分隔文件名的 URL 部分和其余请求。因此,将保存的 URL 为Unix 模式下的 www.xemacs.org:4300/search.pl?input=blah 在 Windows 模式下将保存为 www.xemacs.org+4300/search.pl@in‐put=blah 这是 Windows 操作系统中的默认模式。

如果指定 nocontrol,控制字符转义也会被禁用。 当您在可以以 UTF-8 格式存储和显示文件名的系统上加载名称包含 UTF-8 字符的 URL 时,此设置可能有意义(UTF-8 字节序列中使用的一些可能的字节值落在 Wget2 指定为“控制字符”的值范围内)。

ascii模式用于指示任何值超出ASCII字符范围(即大于127)的字节都应该被转义。 当保存的文件名的编码与本地使用的编码不匹配时,这会很有用。

-4, --inet4-only, -6, --inet6-only
强制程序连接到 IPv4 或 IPv6 地址。 使用 --inet4-only 或 -4,Wget2 将仅连接到 IPv4 主机,忽略 DNS 中的 AAAA 记录,并禁止连接到 URL 中指定的 IPv6 地址。 相反,使用 –inet6-only 或 -6,Wget2 将仅连接到 IPv6 计算机,并忽略 A 记录和 IPv4 地址。

通常不需要这两个选项。 默认情况下,支持 IPv6 的 Wget2 将使用主机 DNS 记录中指定的地址族。 如果 DNS 使用 IPv4 和 IPv6 地址进行响应,Wget2 将依次尝试它们,直到找到可以连接的地址。 (另请参阅下面描述的“--prefer-family”选项。)

这些设置可用于有意强制在双系列系统上使用 IPv4 或 IPv6 地址系列,通常是为了方便调试或纠正网络错误配置。 一次只能指定 --inet6-only 或 --inet4-only 选项之一。 这两个选项在不支持 IPv6 的情况下编译的 Wget2 中均不可用。

--prefer-family=none/IPv4/IPv6

当需要选择多个 IP 地址时,首先连接到具有指定地址系列的地址。 DNS 返回的默认地址顺序不变。

Это访问从 IPv4 网络解析为 IPv6 和 IPv4 地址的主机时,避免错误错误和连接尝试。 例如,www.kame.net 解析为 01:200:0:8002:203:47ff:fea5:3085 和 203.178.141.194。 当首选系列为“IPv4”时,优先使用IPv4地址;当首选系列为“IPv6”时,优先使用IPv6地址;如果设置为“none”,则 DNS 返回的地址顺序将保持不变。

与-4和-6不同,此选项不会拒绝对任何地址族的访问,它仅更改访问地址的顺序。 另请注意,此选项执行的重新排序是稳定的。 这不会影响同一族内的地址顺序。 也就是说,所有 IPv4 地址和所有 IPv6 地址的相对顺序在所有情况下都保持相同。

--tcp-fastopen
启用 TCP 快速打开 (TFO) 支持(默认值:启用)。

TFO 将热连接(在特定时间内第二次连接到同一主机)上的连接延迟减少了 1 次往返。
目前,它适用于最新的 Linux 和 OSX 内核、HTTP 和 HTTPS。

--dns-cache-preload=file
将 IP/名称文件中的元组列表(DNS 资源记录)加载到 DNS 缓存中。

文件格式类似于 /etc/hosts: IP 地址空间 主机名

这节省了搜索域名的时间,这在某些情况下是一个瓶颈。 此外,此选项可用于模拟 HOSTALIASES 环境变量的使用(不可移植到其他操作系统)。

--dns-cache
允许 DNS 缓存(默认:启用)。

通常,Wget2 会记住它在 DNS 中查找的 IP 地址,因此它不必重复联系 DNS 服务器来获取其检索的同一(通常较小)主机集。 这个缓存只存在于内存中;新运行的 Wget2 将再次联系 DNS。

Одн有报告称,在某些情况下,即使 Wget2 等应用程序的持续时间很短,也不希望缓存主机名。 使用 --no-dns-cache 选项,Wget2 每次建立新连接时都会执行新的 DNS 查找(更准确地说,新的“gethostbyname”或“getaddrinfo”调用)。 请注意,此设置不会影响解析器库或外部缓存层(例如 NSCD)可能执行的缓存。

--retry-connrefused
将“连接被拒绝”视为临时错误,然后重试。 通常,当 Wget2 无法连接到站点时,它会拒绝 URL,因为连接失败被视为服务器根本没有运行的标志,重试也无济于事。 此选项旨在镜像不受信任的站点,这些站点的服务器往往会在短时间内消失。

--user=user, --password=password
指定通过 HTTP 访问文件的用户名和密码。 这会覆盖在 .netrc 文件中搜索凭据(默认情况下启用 --netrc 选项)。 可以通过使用 HTTP(S) 连接的 --http-user 和 --http-password 选项来覆盖这两个选项。

如果 --http-proxy-user 和 --http-proxy-password 均未指定,则这些设置也用于代理身份验证。

--ask-password

在命令行上显示密码提示。 覆盖由 --password 设置的密码(如果指定)。

--use-askpass=command
使用指定命令提示输入用户名和密码。 覆盖由 --user/--password 设置的用户和/或密码(如果指定)。

--no-iri
禁用对国际化 URI (IRI) 的支持。 使用--iri 来启用。 IRI 默认启用。

您可以使用 .wget2rc 中的“iri”命令设置默认的 IRI 支持状态。 可以从命令行覆盖此设置。

--local-encoding=encoding
强制 Wget2 使用指定的编码作为系统编码。 这会影响 Wget2 将作为参数给出的 URL 从本地编码转换为 UTF-8 以支持 IRI 的方式。

Wget2 使用“nl_langinfo()”函数,然后使用“CHARSET”环境变量来获取语言环境。 如果失败,则使用 ASCII。

--remote-encoding=encoding
强制 Wget2 使用该编码作为默认远程服务器编码。 这会影响 Wget2 在递归获取期间将文件中找到的 URI 从远程编码转换为 UTF-8 的方式。 这些选项仅对 IRI 支持有用,用于解释非 ASCII 字符。

对于 HTTP,可以从 HTTP 标头字段“Content-Type”和 HTML 标签“Content-Type http-equiv”获取远程编码。

--input-encoding=encoding
对输入文件 --input-file 使用指定的编码和 URL 列表。 默认情况下,使用本地编码。

--unlink
使 Wget2 取消链接文件而不是覆盖现有文件。 (参见 -nc 以上供糖化参考)。 此选项对于上传到具有硬链接的目录很有用。

--cut-url-get-vars
向服务器发出请求时,从文件名中删除 HTTP GET 参数。 例如,“main.css?v=123”将替换为“main.css”。 请注意,这可能会产生意想不到的副作用,例如“image.php?name=sun”将更改为“image.php”。 修剪发生在 URL 添加到下载队列之前。

--cut-file-get-vars
从文件名中删除 HTTP GET 变量。 例如,“main.css?v=123”将替换为“main.css”。

请注意,这可能会产生意想不到的副作用,例如“image.php?name=sun”将更改为“image.php”。 下载后保存文件时会发生裁剪。

从“Content-Disposition”标头派生的文件名不受此选项的影响(请参阅 --content-disposition),并且可能是此问题的解决方法。

当使用“--trust-server-names”时,此设置会影响重定向时的 URL。

--chunk-size=size
以多个多线程块加载大文件。 该开关指定块大小,以字节为单位指定,除非指定了另一个字节倍数。 默认值为 0/禁用。

--max-threads=number
指定资源同时下载线程的最大数量。 默认值为 5,但如果您想允许更多或更少,请使用此选项。

-s, --verify-sig[=fail|no-fail]
启用 PGP 签名验证(如果没有“no-”前缀)。 启用后,Wget2 将尝试下载并验证匹配文件上的 PGP 签名。 任何内容类型以 application/pgp-signature 开头的上传文件都会导致 Wget2 请求该文件的签名。

签名文件名是通过在刚刚下载的文件的完整路径中添加扩展名来计算的。
使用的扩展名由“--signature-extensions”选项确定。 如果签名请求的内容类型是 application/pgp-signature,Wget2 将尝试根据源文件检查签名。 默认情况下,如果找不到签名文件(即对其发出的请求收到 404 状态代码),Wget2 将退出并显示错误代码。

可以使用以下参数配置此行为:
*失败* :这是默认值,这意味着这是在不带参数指定标志时的值。 表示缺少签名文件将导致 Wget2 退出并显示错误代码。
无失败** :此值解决丢失的签名文件问题。 404消息仍然会发出,但程序将继续正常运行(假设没有不相关的错误)。

除此之外,--no-verify-sig 完全禁用签名验证。 --no-verify-sig 不允许争论。

--signature-extensions
指定签名文件的文件扩展名,不带前导“.”。 您可以将多个扩展名列为逗号分隔列表。 搜索签名文件时,将同时尝试所有提供的扩展。 默认为“sig”。

--gnupg-homedir
指定验证下载文件的 PGP 签名时要使用的 gnupg 主目录。 默认是操作系统上的主目录。

--verify-save-failed
告诉 Wget2 保存未通过 PGP 签名验证的文件。 默认情况下,未通过 PGP 验证的文件将被删除。

--xattr
将文档元数据保存为“用户 POSIX 扩展属性”(默认值:启用)。 该功能仅在文件系统支持的情况下才有效。 更多信息请访问 https://freedesktop.org/wiki/CommonExtendedAttributes。

目前Wget2设置属性

  • 用户.xdg.origin.url
  • 用户.xdg.referrer.url
  • 用户.mime_type
  • 用户.字符集

显示扩展文件属性(在 Linux 上): getfattr -d \“文件\”

--metalink
探索/处理metalink URL而不保存它们(默认:启用)。

MetalinkMetalink 文件描述下载,包括镜像、文件、校验和、签名。 这允许从多个部分下载,自动选择最近的镜像并检查下载文件的完整性。

--fsync-policy
在每个文件完成下载后启用同步命令的执行(默认值:禁用)。

--http2-request-window=number
设置 HTTP/2 连接上的最大并行线程数(默认值:30)。

--keep-extension
如果文件已存在,此选项会更改创建唯一文件名的行为。
如果文件已存在,此选项会更改创建唯一文件名时的行为。

文件名的标准(默认)模式是“filename”.“N”。 新模式是“basename”._N”.“ext”。
其想法是使用此类文件,而无需在使用取决于扩展名的应用程序打开时重命名它们,就像在 Windows 中一样。

此选项不会改变行为 --backups

目录选项

-nd, --no-directories
递归提取时不要创建目录层次结构。如果启用此选项,所有文件将保存在当前目录中而不覆盖(如果名称出现多次,文件名将具有扩展名.n,其中n是整数)。

-x, --force-directories
对面 -nd :创建目录层次结构,即使它们不会以其他方式创建。
例如,wget2 -x https://example.com/robots.txt 会将下载的文件保存到 example.com/robots.txt 文件夹中。

-nH, --no-host-directories
禁止创建以主机前缀命名的目录。 默认情况下,使用递归开关 -r https://example.com/ 调用 Wget2 将创建一个以 example.com/ 开头的文件夹结构。 此选项禁用此行为。

--protocol-directories
使用协议名称作为包含本地文件的目录名称的一部分。 例如,使用此选项: wget2 -r --protocol-directories https://example.com 将保存到 https/example.com/... 而不仅仅是 example.com/...

--cut-dirs=number
忽略目录组件中的数字。 这对于精确控制存储递归搜索的目录很有用。

以目录 "https://example.com/pub/sub/" 为例。 如果您使用 -r 获取它,它将保存在本地 "example.com/pub/sub/" 上。 尽管 -nH 选项可能会删除 "example.com/" 部分,但您仍然会得到 "pub/sub/"。

这会派上用场的 --cut-dirs; 因此,Wget2 无法“看到”远程目录的某些组件。以下是一些说明此参数如何工作的示例 --cut-dirs

没有选项 -» example.com/pub/sub/
--cut-dirs=1 -» example.com/sub/
--cut-dirs=2 -» example.com/

-nH -» pub/sub/
-nH --cut-dirs=1 -» sub/
-nH --cut-dirs=2 -» .

如果你只是想摆脱目录结构,这个选项就像-nd和-P的组合。 然而,与-nd不同的是,--cut-dirs不会丢失子目录。 例如,与 -nH --剪切目录=1 子目录 贝塔/ 将被放置在 子/测试版/,如您所料。

-P prefix, --directory-prefix=prefix
将目录前缀设置为“prefix”。 目录前缀是将存储所有其他文件和子目录的目录,即搜索树的顶部。 默认为“.”,即当前目录。 如果目录前缀不存在,则会创建它。

HTTP 和 HTTPS 选项

参见 文章第 2 部分

递归提取选项

-r, --递归
启用递归提取。 默认最大提取深度为 5。

-l 深度, --level=深度
以深度级别指定最大递归深度

--之后删除
此选项告诉 Wget2 在执行此操作后删除它下载的每个文件。 这对于通过代理服务器预加载流行页面非常有用,例如:

wget2 -r -nd --delete-after https://example.com/~popular/page/

其中选项 -r 用于递归提取,而 -nd - 不创建目录。

请注意,当指定 --delete-after 时,另一个 --convert-links 选项将被忽略,因此 .orig 文件根本不会首先创建。

-k,--转换链接
下载完成后,转换文档中的链接,使其适合本地查看。 这不仅会影响可见的超链接,还会影响文档中链接到外部内容的任何部分,例如内联图像、样式表链接、非 HTML 内容的超链接等。

每个链接都会以一种或两种方式进行更改:

  1. Wget2下载的文件链接将改为链接到它所指向的文件,成为相对文件链接。

示例:如果加载的文件 /foo/doc.html 链接到 /bar/img.gif,也加载了,则 doc.html 文件中的链接将更改为指向 ../bar/img.gif。 这种类型的转换对于任何目录组合都能可靠地工作。

  1. Wget2 尚未下载的文件的链接将更改为包含主机名和它们指向的位置的绝对路径。

示例:如果加载的文件 /foo/doc.html 链接到 /bar/img.gif (或 ../bar/img.gif),则该链接位于 doc.html 中
将更改为指向 https://example.com/bar/img.gif。

这使得本地浏览工作可靠:如果已下载链接文件,则该链接将引用其本地名称;如果尚未下载,该链接将指向其完整的互联网地址,而不是损坏的链接。 以前的链接转换为相对链接的事实确保您可以将下载的文件夹层次结构移动到另一个目录。

请注意,只有在下载结束时您才能知道哪些链接已下载。 因此,使用 -k 完成的工作将在所有下载结束时完成。

--仅转换文件
此选项仅解析 URL 的文件名部分,其余 URL 保持不变。 文件名的这一部分有时被称为“基本名称”,尽管我们在这里避免使用该术语以避免混淆。

尽管此选项配对不是强制的,但此选项与 --adjust-extension 结合使用效果特别好。 从不同主机下载文件时,填充 Internet 缓存非常有用。

示例:如果某个链接指向 //foo.com/bar.cgi?xyz ,并且指定了 --adjust-extension 选项,则其本地目标将被假定为 ./foo.com/bar.cgi?xyz.css,则该链接将更改为 //foo.com/bar.cgi?xyz.css。 请注意,只有链接的文件名部分将被更改。 URL 的其余部分将保持不变,包括网络路径(“//”),否则该路径将由 Wget2 处理并转换为适用的方案(例如“https://”)。

-K, --备份转换
转换文件时,将原始文件保存为后缀.orig。 影响 -N(时间戳)选项。

-m,--镜子
包括适合镜像的选项。 此选项启用递归和时间戳,并将递归级别设置为无限深度。
目前它等于选项-r -N -l inf 的组合。

-p, --页面必备条件
此选项使 Wget2 下载正确显示网页所需的所有文件。 诸如嵌入图像、声音和引用的样式表之类的东西。

正常加载单个 HTML 页面时,不会加载正确显示该页面所需的任何必要文档。
将 -r 与 -l 一起使用会有所帮助,但由于 Wget2 通常不区分外部文档和嵌入文档,因此前者大多保留为缺乏所需资源的“子文档”。

例如,假设文档 1.html 包含引用 1.gif 的标签“IMG”和指向外部文档 2.html 的标签“A”。 让 2.html 与第一个类似,具有指向图像 2.gif 的链接和指向文档 3.html 的链接。 让这种情况无限期地持续下去。

如果我们运行命令:

wget2 -r -l 2 https://«site»/1.html

然后 1.html、1.gif、2.html、2.gif 和 3.html 将被加载。 如您所见,3.html 没有它所需的 3.gif
因为 Wget2 只是计算从(初始)1.html 开始的“跳数”(最多 2),以找出在哪里停止递归。 但是,使用命令:

wget2 -r -l 2 -p https://«site»/1.html

所有上述文件和所需的 3.html 绘图 3.gif 将被下载。

同样,团队

wget2 -r -l 1 -p https://«site»/1.html

将加载 1.html、1.gif、2.html 和 2.gif。 有些人可能认为:

wget2 -r -l 0 -p https://«site»/1.html

只会加载1.html和1.gif,但不幸的是事实并非如此,因为-l 0相当于-l inf,这是无限递归。

要加载单个 HTML 页面(或者,为了方便起见,加载在命令行或 -i URL 输入文件中指定的所有页面)及其所需资源,只需删除 -r 和 -l:

wget2 -p https://«site»/1.html

注意:Wget2 的行为就像指定了 -r 开关一样,但仅针对一页,将下载显示该页面所需的所有资源。
从该页面到其他外部文档的链接将不会被跟踪。 实际上,为了加载一个包含所有必要元素的网页(即使它们存在于不同的网站上),并确保该网页能够从本地磁盘正确显示,作者喜欢使用 -p 和一些填充:

wget2 -E -H -k -K -p https://«站点»/«文档»

其中 -E - 添加文件名扩展名
-H - 获取时移动到其他主机
-k - 转换链接以供本地查看
-K - 保存带有 .orig 扩展名的源文件的备份副本
-p - 提取显示页面所需的所有文件

为了完成本主题,值得了解的是 Wget2 将“A”、“AREA”或“LINK”标记中指定的任何 URL 视为外部链接。 除了“LINK REL =“stylesheet””。

--strict-comments
已弃用与 Wget1.x 兼容的选项。 Wget2 总是添加结束注释标签,就像流行的浏览器一样。

--robots
启用对机器人排除标准的遵守(默认值:启用)。

对于您访问的每个域,请遵循 /robots.txt 中列出的规则。 您应该尊重域名所有者的规则,并且仅在有充分理由的情况下禁用它。

无论是否启用,都会加载 robots.txt 文件并扫描站点地图。 这些是可供下载的页面/文件列表,不一定可以通过递归爬网获得。

可以使用 --no-follow-sitemaps 禁用此行为。

递归接受/拒绝选项

-A acclist, --accept=acclist
-R rejlist, --reject=rejlist

指定要接受或拒绝的后缀或文件名模式的逗号分隔列表。 请注意,如果任何通配符 、?、[、] 出现在 acclist 或 rejlist 元素中,它将被视为模式而不是后缀。
在这种情况下,您必须将模式括在引号中以防止 shell 扩展它,例如 -A "
.mp3" 或 -A '*.mp3'。

--accept-regex=urlregex
--reject-regex=urlregex

指定正则表达式来接受或拒绝文件名。

--regex-type=regextype
指定正则表达式类型。 可能的类型:posix 或 PCRE。 请注意,要使用 PCRE 类型,wget2 必须使用 libpcre 支持进行编译。

--filter-urls
在开始下载之前,对 URL 应用接受和拒绝过滤器。

-D domain-list, --domains=domain-list
设置要监控的域。 域列表是逗号分隔的域列表。 请注意,它不包括-H。

--exclude-domains=domain-list
指定程序不会跟踪其链接的域列表。

--follow-sitemaps
从 robots.txt 解析站点地图和以下链接。 (默认值:启用)。

无论您指定 --robots 还是 -no-robots,都会启用此选项以进行递归下载。 可以使用 --no-follow-sitemaps 禁用对站点地图中找到的 URL 的跟踪。

--follow-tags=list
Wget2 有一个 HTML 标记/属性对的内部表,在递归搜索期间搜索相关文档时会考虑该表。 但是,如果用户只想考虑这些标签的子集,他或她应该使用此选项在逗号分隔的列表中指定此类标签。

--ignore-tags=list
这与 --follow-tags 选项相反。 要在递归搜索要下载的文档时跳过某些 HTML 标签,请用逗号分隔列出它们。

过去,此选项是使用命令行加载单个页面及其详细信息的最佳选择,例如:

wget2 --ignore-tags=a,area -H -k -K -r https://site/document

然而,该选项的作者遇到了一个带有“”等标签的页面,并得出结论:指定要忽略的标签是不够的。 您不能只是告诉 Wget2 忽略“”,因为这样样式表将不会被加载。 现在加载单个页面及其详细信息的最佳选择是特殊选项 --page-requirements。

--ignore-case
匹配文件和目录时忽略大小写。 这会影响 -R、-A、-I 和 -X 选项的行为。 例如,-A "*.txt" 选项将接受文件 file1.txt、file2.TXT、file3.TxT 等。

-H, --span-hosts
执行递归提取时允许在主机之间进行转换。

-L, --relative 【尚未实现】
仅关注相关链接。 在不受任何干扰的情况下检索特定主页(即使是来自同一主机)时非常有用。

-I list, --include-directories=list
指定下载时要遵循的以逗号分隔的目录列表。 列表元素可以包含通配符。

wget2 -r https://webpage.domain --include-directories=*/pub/*/

请记住,/pub// 与 //pub// 相同,匹配目录,而不是字符串。 这意味着 /pub 不会影响 /directory/something/pub 中包含的文件,但 /pub/ 匹配 /pub 的每个子目录。 -X list, --exclude-directories=list
指定要从下载中排除的目录的逗号分隔列表。 列表元素可以包含通配符。

wget2 -r https://gnu.org --exclude-directories=/software

-I / -X combinations
在单个命令中指定 Wget2 在下载时应该/不应该遵循的以逗号分隔的目录列表。 列表元素可以包含通配符。
请记住,使用此标志组合时 Wget2 的行为与 wget1.x 略有不同。
如果首先给出 -I 选项,则默认为“排除全部”。 如果先指定-X,则默认为“全部启用”。
多个 -I/-X 选项是“端到端”处理的。 最新的比赛是相关的。

示例: wget2 -I /pub -X /pub/trash 将从 /pub/ 下载除 /pub/trash 之外的所有内容。
示例: wget2 -X /pub -I /pub/important 将加载除 /pub 之外的所有内容,其中仅加载 /pub/important 部分。
要重置列表(即忽略 .wget2rc 文件中的 -I/-X),请使用 --no-include-directories 或 --no-exclude-directories。

-np, --no-parent
使用递归加载时切勿进入父目录。 这是一个有用的选项,因为它确保只加载特定层次结构以下的文件。

--filter-mime-type=list
提供要加载的 MIME 类型的逗号分隔列表。 列表元素可以包含通配符。 如果 MIME 类型以字符开头 "!" 它不会被下载,这在尝试下载某个文件时遇到异常情况时非常有用。如果服务器没有指定文件的 MIME 类型,它将被视为 'application/octet-stream'。 例如,下载除图像之外的所有内容:
wget2 -r https://site/document --filter-mime-type=*,\!image/*

下载与您的操作系统兼容的文件也是一个好主意。 例如,要使用递归模式从网站下载每个 LibreOffice Writer 兼容文件:

wget2 -r https://site/document --filter-mime-type=$(sed -r '/^MimeType=/!d;s/^MimeType=//;s/;/,/g' /usr/share/applications/libreoffice-writer.desktop)

插件选项、退出代码、Wget2 调试

参见 文章的第二部分



相关出版物