2010-07-19 19 views
2

Nous migrons des serveurs Web, et il serait bon d'avoir un moyen automatisé de vérifier certaines structures de base du site pour voir si les pages rendues sont les mêmes sur le nouveau serveur que l'ancien serveur. Je me demandais juste si quelqu'un savait quelque chose pour aider dans cette tâche?Comparez deux sites Web et voyez s'ils sont "égaux?"

Répondre

3

obtenir la sortie au format des deux sites (ici nous utilisons w3m, mais lynx peut aussi fonctionner):

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

Ensuite, utilisez wdiff, il peut vous donner un pourcentage de la façon similaire les deux textes sont.

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

Il peut aussi être plus facile de voir les différences en utilisant colordiff.

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

Extrait de la production:

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 

(il a mis réellement google.com en français ...drôle)

Les valeurs communes% sont la similarité des deux textes. De plus, vous pouvez facilement voir les différences par mot (au lieu de par ligne qui peut être un fouillis).

+0

Si vous voulez seulement le pourcentage, vous pouvez faire ce qui suit 'wdiff -nis /tmp/1.html /tmp/2.html | queue -2 | awk '{print $ 5}' ' – droope

0

Copiez les fichiers sur le même serveur dans /tmp/directory1 et /tmp/directory2 et exécutez la commande suivante:

diff -r /tmp/directory1 /tmp/directory2

Pour toutes fins utiles, vous pouvez les mettre dans votre emplacement préféré avec votre convention d'appellation préférée.

Modifier 1

Vous pouvez éventuellement utiliser lynx -dump ou wget et exécuter un diff sur les résultats.

+0

Ce comparerait les fichiers eux-mêmes serait-il pas? Je veux comparer les pages rendues, après avoir parcouru apache (et PHP). Je pense que je suis à la recherche d'un web araignée ou un crawler de quelque sorte. –

2

La capture est comment vérifier les pages «rendues». Si les pages n'ont pas de contenu dynamique, le plus simple est de générer des hachages pour les fichiers en utilisant une commande md5 ou sha1 et de vérifier ensuite avec le nouveau serveur.

Si les pages ont un contenu dynamique, vous devez télécharger le site en utilisant un outil comme wget

wget --mirror http://thewebsite/thepages

puis utilisez diff comme suggéré par Warner ou faire la chose de hachage à nouveau. Je pense que diff peut être le meilleur moyen d'y aller, car même un changement de 1 personnage va gâcher le hachage.

+0

J'étais en train d'éditer avant de voir votre réponse. Vous fournissez une bonne recommandation. – Warner

0

À court de rendre chaque page, de prendre des captures d'écran, et de comparer ces captures d'écran, je ne pense pas qu'il soit possible de comparer les pages rendues.

Cependant, il est certainement possible de comparer le site téléchargé après un téléchargement récursif avec 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. 

L'étape suivante serait alors de faire le diff récursif recommandé par Warner.