如何下载完整的网站?

问题描述 投票:10回答:2

[修复了网站代码以使用CDN(将所有网址重写为图片,js和CSS之后,我需要测试域上的所有页面,以确保从CDN中获取了所有资源。

所有站点页面都可以通过链接访问,没有孤立的页面。

当前,我正在使用FireBug并检查“ Net”视图...

有没有一种自动的方法来提供域名并请求该域的所有页面和资源?

更新:

[确定,我发现可以这样使用wget

wget -p --no-cache -e robots=off -m -H -D cdn.domain.com,www.domain.com -o site1.log www.domain.com

解释的选项:

  • -p-也下载资源(图像,css,js等)
  • --no-cache-获取真实对象,不返回服务器缓存的对象
  • [-e robots=off-忽略robotsno-follow方向]
  • -m-镜像站点(跟随链接)
  • [-H-跨主机(也跟随其他域)]
  • [-D cdn.domain.com,www.domain.com-指定要跟随的女巫域,否则将跟随页面中的每个链接
  • -o site1.log-登录到文件site1.log
  • [-U "Mozilla/5.0"-可选:伪造用户代理-如果服务器为不同的浏览器返回不同的数据,则很有用]
  • www.domain.com-下载站点

享受!

testing automation wget qa web-testing
2个回答
10
投票

wget文档中包含以下内容:

实际上是下载一个页面及其所有要求(即使它们存在于单独的网站上),并确保批次显示在本地适当使用,该作者还喜欢使用一些其他选项到“ -p”:

      wget -E -H -k -K -p http://site/document

键是-H选项,表示--span-hosts -> go to foreign hosts when recursive。我不知道这是否也代表普通的超链接或仅代表资源,但您应该尝试一下。

您可以考虑采用其他策略。您无需下载资源即可测试是否已从CDN引用了这些资源。您可以只获取感兴趣页面的源代码(可以像以前一样使用wgetcurl或其他方式),也可以:

  • 使用库解析-该库取决于您用于脚本编写的语言。检查<img /><link /><script />中的每个CDN链接。
  • 使用正则表达式来检查资源URL是否包含CDN域。 See this :),尽管在这种有限的情况下可能不会过于复杂。

您还应检查所有CSS文件中的url()链接-它们也应指向CDN图像。根据合并逻辑,您可能需要检查JavaScript代码不会创建任何非CDN的图像。


0
投票

下载的文件在哪里?我知道此线程已使用6年,但我仍在询问..

© www.soinside.com 2019 - 2024. All rights reserved.