Вопрос

Мой вопрос о проверке больше всего на свете. Что можно использовать для определения того, что уникально в документе HTML? (Документ может иметь определенную степень динамики.)

Что можно использовать или сгенерировать, чтобы признать, что страница является правильной страницей, скажем, на 99%, с учетом вы можете хранить свой «отпечаток пальца» на странице, которую вы проверяете?


Для ясности это дополнительное дополнительное для шифрования/HTTPS и т. Д. Эта страница может и будет изменяться с динамическим содержанием в соответствии с конкретными пользователями, однако так же может быть отпечаток пальца, но один отпечаток пальца не может сопоставить 100% пользователей из -за природы динамического содержания. Поэтому хеш не может работать здесь, по крайней мере, не в упрощенной форме.

Это было полезно?

Решение

Уникальный отпечаток пальца на HTML -странице легко рассчитать. Создайте хэш из следующего:

  • Протокол: http или https
  • URL: домен + uri
  • Строка запроса
  • Точное содержание страницы до байта

При желании некоторые заголовки:

  • Server
  • Content-Type это важно
  • Content-encoding Это, вероятно, тоже
  • Больше идей? Не стесняйтесь редактировать их.

Это предполагает, что вы не публикуете какие -либо данные на страницы.

Другие советы

Вы не можете быть даже на 1% уверены, если вы не проверете IP -адрес хоста. Следующим является шифрование. (Без этого вы можете стать жертвой ARP Poisoing (только в сети LAN)).

Ключ в HTTPS должен быть одинаковым все время.

Если это изменится, это означает, что кто -то обманывает, или ключ получил обновление (у ключей есть дата истечения срока действия).)

Отпечаток пальца страницы-это имя хоста, порт и путь. Это единственное, что гарантированно будет уникальным в Интернете. Я полагаю, что вы также можете включить заголовки кэша (последний модифицированный), чтобы увидеть, изменился ли он.

Вдобавок ко всему, если вы хранения HTML, вы могли бы увидеть, изменился ли он, даже если заглушается последним модифицированным заголовком.

Предполагая, что на минуту вы хотите сохранить «отпечаток пальца» на HTML -странице, чтобы вы могли распознать его позже, если это в яблочко Матчи, просто используйте простой хэш -дайджест на HTML -странице.

Если вы больше не выясните вопрос, я не вижу причин, почему это должно иметь значение, что он HTML или в каком браузере.

Это не скажет вам, однако, находится ли страница в том же месте. Для этого вам нужно будет хранить дополнительные данные, такие как хост/IP и путь.

Если вы сможете получить текстовые версии двух страниц, вы можете их различить. Вы можете определить максимальный диапазон, приемлемый для различий на странице.

Есть Unix Util (называемый Diff). Есть версии WIN32 этого инструмента, которые также плавают вокруг сети. У Википедии есть статья о Diff: http://en.wikipedia.org/wiki/diff.

В статье Wiki перечислены бесплатные инструменты сравнения файлов, а в разделе «См. Также» есть ссылки на другие статьи, в которых обсуждаются инструменты сравнения файлов и кодирование Delta.

«Метрика расстояния Левенштейна» также может быть интересным подходом.

На CodeProject есть приличный двигатель C# Diffice. Я не могу опубликовать другую ссылку из -за моих низких очков, но название статьи: «Общий, многоразовый алгоритм DIFF в C#».

Даже если у вас было точное имя хоста, порт и путь, контент по -прежнему может быть другим, если есть сервер приложений, обслуживающий веб -страницы или если веб -сервер внедряет контент рекламы.

Если бы вы могли надежно идентифицировать части HTML, которые являются динамическими (например, реклама или временные метки, которые продолжают обновлять), я бы сначала нормализовал данные. Я бы лишил все космические символы (пространства, вкладки, новеньши), а затем сделал хэш этого контента.

я бы нет Включите в хэш-пат HostName-Port, потому что это не добавит ничего в «отпечаток пальца». (Эта информация полезна позже, когда вам нужно запрашивать веб -сервер позже, чтобы сравнить HTML.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top