比较两个网站,看看它们是否“相等”?

时间:2010-07-19 21:30:07

标签: linux apache webserver migration compare

我们正在迁移Web服务器,最好有一种自动方式来检查一些基本站点结构,以查看渲染页面在新服务器上是否与旧服务器相同。我只是想知道是否有人知道有什么可以帮助完成这项任务?

6 个答案:

答案 0 :(得分:3)

获取两个网站的格式化输出(此处我们使用 w3m ,但 lynx 也可以使用):

w3m -dump http://google.com 2>/dev/null > /tmp/1.html
w3m -dump http://google.de 2>/dev/null > /tmp/2.html

然后使用wdiff,它可以给出两个文本相似程度的百分比。

wdiff -nis /tmp/1.html /tmp/2.html

使用colordiff可以更容易地看到差异。

wdiff -nis /tmp/1.html /tmp/2.html | colordiff

输出摘录:

Web Images Vidéos Maps [-Actualités-] Livres {+Traduction+} Gmail plus »
[-iGoogle |-]
Paramètres | Connexion

                           Google [hp1] [hp2]
                                  [hp3] [-Français-] {+Deutschland+}

           [                                                         ] Recherche
                                                                       avancéeOutils
                      [Recherche Google][J'ai de la chance]            linguistiques


/tmp/1.html: 43 words  39 90% common  3 6% deleted  1 2% changed
/tmp/2.html: 49 words  39 79% common  9 18% inserted  1 2% changed

(他实际上把google.com变成法语......好笑)

常见%值是两个文本的相似程度。另外,您可以通过单词轻松查看差异(而不是通过可能是杂乱的行)。

答案 1 :(得分:2)

问题是如何检查'渲染'页面。如果页面没有任何动态内容,最简单的方法是使用md5或sha1命令为文件生成哈希值,然后检查新服务器。

如果页面包含动态内容,则必须使用wget

等工具下载网站
  

wget --mirror http://thewebsite/thepages

然后按照Warner的建议使用diff或再次执行hash事件。我认为差异可能是最好的方法,因为即使更改1个字符也会破坏哈希值。

答案 2 :(得分:1)

我已经创建了以下PHP代码来执行Weboide在这里提出的建议。谢谢Weboide!

粘贴在这里:

http://pastebin.com/0V7sVNEq

答案 3 :(得分:1)

使用开源工具recheck-web(https://github.com/retest/recheck-web),有两种可能性:

对于这两种解决方案,您当前都需要手动列出所有相关的URL。在大多数情况下,这应该不是大问题。 recheck-web会比较呈现的网站,并准确显示它们的不同之处(即,不同的字体,不同的元标记,甚至不同的链接URL)。并且它为您提供了强大的过滤器,让您可以专注于与自己相关的内容。

免责声明:我已经帮助创建了recheck-web。

答案 4 :(得分:0)

将文件复制到/tmp/directory1/tmp/directory2中的同一服务器,然后运行以下命令:

diff -r /tmp/directory1 /tmp/directory2

出于所有意图和目的,您可以使用首选命名约定将它们放在首选位置。

修改1

您可以使用lynx -dumpwget并在结果上运行差异。

答案 5 :(得分:0)

除了渲染每个页面,拍摄屏幕截图以及比较这些截图之外,我认为不可能比较渲染的页面。

然而,在下载wget后,下载的网站肯定是可以比较的。

  wget [option]... [URL]...

   -m
   --mirror
       Turn on options suitable for mirroring.  This option turns on recursion and time-stamping, sets infinite recursion depth and keeps FTP
       directory listings.  It is currently equivalent to -r -N -l inf --no-remove-listing.

接下来的步骤是做华纳推荐的递归差异。