如何下载完整的网站?

时间:2012-10-23 13:08:12

标签: testing automation wget qa web-testing

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

所有网站页面均可通过链接访问,无需隔离页面。

目前我正在使用FireBug并检查“网络”视图......

是否有一些自动方式来提供域名并请求域名的所有页面+资源?

更新

好的,我发现我可以使用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 - 要下载的网站

享受!

1 个答案:

答案 0 :(得分:9)

wget文档中有这一点:

  

实际上,要下载单个页面及其所有必需品(即使   它们存在于不同的网站上),并确保显示该批次   在本地,本作者喜欢另外使用一些选项   到'-p':

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

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

您可以考虑替代策略。您无需下载资源来测试它们是否从CDN引用。您可以获取您感兴趣的网页的源代码(您可以使用wget,或curl或其他内容)以及:

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

您还应该检查url()个链接的所有CSS文件 - 它们也应该指向CDN图像。根据您的应用程序的逻辑,您可能需要检查JavaScript代码是否不会创建任何不是来自CDN的图像。