Сравните два сайта и посмотрите, равны ли они? - PullRequest
2 голосов
/ 20 июля 2010

Мы переносим веб-серверы, и было бы неплохо иметь автоматический способ проверить некоторые основные структуры сайта, чтобы увидеть, совпадают ли отображаемые страницы на новом сервере со старым сервером. Мне просто интересно, знает ли кто-нибудь что-нибудь, чтобы помочь в этой задаче?

Ответы [ 5 ]

3 голосов
/ 20 июля 2010

Получите форматированный вывод обоих сайтов (здесь мы используем 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 на французский язык... забавно)

Значения common% одинаковы для обоих текстов.Кроме того, вы можете легко увидеть различия по слову (а не по строке, которая может быть беспорядком).

2 голосов
/ 20 июля 2010

Загвоздка в том, как проверить «визуализированные» страницы. Если на страницах нет динамического содержимого, самый простой способ сделать это - сгенерировать хэши для файлов с помощью команд md5 или sha1 и проверить их на новом сервере.

Если на страницах есть динамическое содержимое, вам придется загрузить сайт с помощью такого инструмента, как wget

wget --mirror http://thewebsite/thepages

и затем используйте diff, как предложено Warner, или сделайте хэш снова. Я думаю, что diff может быть лучшим способом, так как даже изменение 1 символа испортит хеш.

1 голос
/ 08 апреля 2011

Я создал следующий код PHP, который делает то, что предлагает Weboide здесь.Спасибо Weboide!

паста здесь:

http://pastebin.com/0V7sVNEq

0 голосов
/ 20 июля 2010

Если не считать рендеринга каждой страницы, делать снимки экрана и сравнивать эти снимки экрана, я не думаю, что можно сравнивать отображаемые страницы.

Однако, безусловно, можно сравнить загруженный веб-сайт после загрузкирекурсивно с помощью 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.

Следующим шагом будет выполнение рекурсивного сравнения, рекомендованного Уорнером.

0 голосов
/ 20 июля 2010

Скопируйте файлы на один и тот же сервер в /tmp/directory1 и /tmp/directory2 и выполните следующую команду:

diff -r /tmp/directory1 /tmp/directory2

Для всех целей и задач вы можете поместить их вВаше предпочтительное местоположение с вашим предпочтительным соглашением об именах.

Редактировать 1

Вы можете использовать lynx -dump или wget и запустить diff для результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...