2010-07-19 2 views
2

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

ответ

3

Получить форматированный вывод обоих сайтов (здесь мы используем w3m, но рысь также может работать):

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 на французский ...смешно)

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

+0

, если вы хотите только процент, вы можете сделать следующее: wdiff -nis /tmp/1.html /tmp/2.html | хвост -2 | awk '{print $ 5}' ' – droope

0

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

diff -r /tmp/directory1 /tmp/directory2

Для всех намерений и целей, вы можете поместить их в нужном месте с выбранным именованием.

Edit 1

Вы могли бы потенциально использовать lynx -dump или ее wget и запустить диф на результаты.

+0

Это было бы сравнить сами файлы будут его нет? Я хочу сравнить отображаемые страницы после того, как они запущены через apache (и PHP). Я думаю, что я ищу веб-паука или сканера. –

2

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

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

Wget --mirror http://thewebsite/thepages

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

+0

Я редактировал, прежде чем увидел ваш ответ. Вы даете хорошие рекомендации. – Warner

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. 

Следующим шагом было бы сделать рекурсивный разброс, рекомендованный Warner.

1

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

паста здесь:

http://pastebin.com/0V7sVNEq

Смежные вопросы