12

在修复网站代码以使用 CDN(将所有 url 重写为图像、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- 要下载的网站

享受!

4

1 回答 1

12

文档中有这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 域。看到这个:),虽然在这种有限的情况下它可能不会过于复杂。

You should also check all CSS files for url() links - they should also point to CDN images. Depending on the logic of your apllication, you may need to check that the JavaScript code does not create any images that do not come from the CDN.

于 2012-10-23T16:15:36.933 回答