wget 递归/镜像选项不遵循链接

Jul*_*ter 6 shell wget

我目前正在尝试镜像一个网站。wget似乎很好地完成了这项工作,但是它在某些页面上不起作用。

查看手册,命令

wget -r https://www.gnu.org/
Run Code Online (Sandbox Code Playgroud)

应该下载GNU页面。它确实做到了。但是,如果我使用另一个页面,例如我个人网站的起始页面,这将不再起作用。

wget -r https://my-personal.website
Run Code Online (Sandbox Code Playgroud)

index.html被下载,但没有的CSS / JS更不用说递归下载。下载的只是index.html.

我已经尝试使用该-U选项设置用户代理,但这也无济于事。是否缺少导致 wget 在 之后停止的选项index.html

更新:我也尝试过该--mirror选项,该选项也不起作用并显示相同的行为。

dar*_*nir 12

您的网站通过<meta>HTML 中的标签使用了一种相对鲜为人知的机器人控制形式。您可以在此处阅读更多相关信息。Wget 将正确遵守此机器人指令中的说明。如果您在尝试递归下载网站时仔细查看 Wget 的调试输出,您就会看到这种情况:

在 my-personal.website/index.html 中禁止关注:1

现在,不幸的是,除非您是开发人员之一并且了解代码库,否则这不是一条非常有用的消息。在这种情况下,我将尝试更新消息,使其更加清晰。就像我们在由于robots.txt文件而发生此类事情时所做的那样。

无论如何,修复很简单,禁用机器人解析。虽然这在访问您自己的网站时没问题,但在对他人这样做时请注意网络服务器。您需要的完整命令是:

$ wget -r -erobots=off https://my-personal.website
Run Code Online (Sandbox Code Playgroud)

编辑:正如所承诺的,添加了一条改进的消息。见这里。它现在打印:

在 my-personal.website/index.html 中找到了 no-follow 属性。不会点击此页面上的任何链接