如何下载整个网站?

我想下载整个网站(包括子网站)。有没有相关的工具可以做到这一点?

1你到底想要实现什么?你的标题和问题内容没有关联,并且内容也不具体。 - RolandiXor
1请注意,仅仅跟随链接(例如,在wget中使用--convert-links)将无法显示仅通过提交表单才能访问的网站等内容。 - Steven
8个回答

尝试从这里尝试第10个示例:
wget --mirror -p --convert-links -P ./LOCAL-DIR WEBSITE-URL
  • –mirror:打开适用于镜像的选项。

  • -p:下载所有必要的文件以正确显示给定的HTML页面。

  • --convert-links:下载后,将文档中的链接转换为本地查看。

  • -P ./LOCAL-DIR:将所有文件和目录保存到指定的目录。

有没有办法只下载特定的页面(比如,一篇文章分布在多个HTML文档中的几个部分)? - don.joey
@私人 是的,尽管使用Python或其他类似的工具获取页面可能更容易(取决于页面的布局和URL)。如果页面的URL通过一个不断增长的数字来区分,或者你有一个页面列表,那么你可以在bash脚本中使用wget来完成。 - Vreality
2如果你想对网站更友好,可以考虑使用--wait=seconds参数;它将在获取之间等待指定的秒数。 - belacqua
上述方法是有效的,但对于Joomla来说,参数化的URL会创建本地未链接的文件。 我使用的方法是wget -m -k -K -E http://your.domain.com 来源:https://vaasa.hacklab.fi/2013/11/28/howto-make-a-static-copy-of-joomla-site-with-wget/ - M.Hefny
1同时也从这里使用 --no-parent 表示“永不向上级目录”。 - Daniel
2真是喜欢stackoverflow上的一行代码被接受的答案 <3 - maaw

HTTrack for Linux copying websites in offline mode

httrack 是你正在寻找的工具。

HTTrack 允许你从互联网下载一个网站到本地目录,递归地构建所有目录,将HTML、图片和其他文件从服务器获取到你的计算机上。HTTrack 保持了原始网站的相对链接结构。


使用wget命令可以下载整个网站,你应该使用-r选项进行递归下载。例如,
wget -r http://www.google.com

WEBHTTRACK WEBSITE COPIER是一个方便的工具,可以将整个网站下载到您的硬盘上以供离线浏览。打开Ubuntu软件中心,然后在搜索框中输入"webhttrack website copier"(不带引号)。从软件中心选择并下载它到您的系统上。从启动器或开始菜单启动WebHTTrack,然后您就可以开始享受这个优秀的工具来下载您的网站了。

我不了解子域名,即子站点,但是可以使用wget来抓取整个网站。看一下这个superuser问题。它说你可以使用-D domain1.com,domain2.com在单个脚本中下载不同的域名。我认为你可以使用该选项来下载子域名,即-D site1.somesite.com,site2.somesite.com

我使用Burp - 蜘蛛工具比wget更智能,可以根据需要配置以避免某些部分。Burp Suite本身是一套功能强大的测试工具集,而蜘蛛工具非常有效。

1难道Burp只能在Windows上运行吗?而且,Burp的闭源许可协议也相当繁琐。更不用说它的价格标签$299.00了。 - Kat Amsterdam
警告:Burp Suite 免费版旨在测试安全漏洞,由于其功能的本质,可能会对目标系统造成损害。测试安全漏洞本质上涉及以非标准方式与目标进行交互,这可能会导致一些易受攻击的目标出现问题。在使用该软件时,您必须谨慎,并阅读所有文档。使用前应备份目标系统,并且不应将该软件用于生产系统或其他风险不被您所接受的系统。 - Kat Amsterdam
对于它的功能来说,价格标签非常便宜 - 我会推荐购买它进行广泛的安全测试。而且它非常容易配置,可以按照您的要求进行测试 - 在某些情况下比AppScan更安全 :-) - Rory Alsop
1@KatAmsterdam 关于兼容性问题:根据维基百科的说法(http://en.wikipedia.org/wiki/Burp_suite),Burp Suite是一个Java应用程序,因此应该在Ubuntu上正常运行。 - Eliah Kagan
Kat - 它在各种不同的Linux版本上都可以正常运行。许可证上的警告与您用于安全评估的任何工具都是一样的。 - Rory Alsop

您可以下载整个网站 命令:
wget -r -l 0 website

例子:

wget -r -l 0 http://google.com

1请问您能否解释一下这个命令是如何工作的?它具体做了什么? - Kaz Wolfe
@KazWolfe -r 开启递归检索,默认深度为5级。-l 指定最大递归深度,在此示例中为0。 - Gilfoyle

如果速度是一个问题(而服务器的健康不是),你可以尝试使用puf,它类似于wget,但可以并行下载多个页面。然而,它并不是一个成熟的产品,也没有得到维护,并且文档非常混乱。不过,如果你需要下载一个包含大量小文件的网站,这可能是一个不错的选择。