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
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).
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.
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. –
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.
J'étais en train d'éditer avant de voir votre réponse. Vous fournissez une bonne recommandation. – Warner
À 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.
J'ai créé le code PHP suivant qui fait ce que Weboide suggère ici. Merci Weboide!
la pâte est ici:
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