2012-10-23 114 views
10

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

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

目前我使用Firebug检查“网络”的观点......

有一些自动化的方式来给出一个域名,并请求所有页面+域的资源?

更新:

OK,我发现我可以使用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返回不同的数据 - 该网站下载

享受!

回答

9

wget文档中有此位:

其实,下载一个单独的页面及其所有先决条件(即使 他们在不同的网站存在),并确保很多显示器 正确本地,笔者喜欢在除了 使用几个选项为“-p”:

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

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

你可以考虑一个替代策略。您不需要下载资源以测试它们是从CDN引用的。你可以得到你所感兴趣的网页源代码(可以使用wget,像你一样,或curl,或别的东西),要么:

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

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

+0

+1好的答案。 – Graham

+0

谢谢你的详细解答! -H确实解决了我的问题。我确实希望从CDN下载文件以查看它们是否都正确链接,如果它们不是wget,将会出现错误。 – SimonW