1

私の質問は何よりも検証に関するものです。HTML ドキュメント内で何がユニークかを判断するには、何を使用できますか? (ドキュメントは、ある程度動的である可能性があります。)

検証しているページの種類の「指紋」を保存できることを考慮して、ページが正しいページであることをたとえば 99% の精度で認識するために使用または生成できるものは何ですか?


明確にするために、これは暗号化/https などに追加されたものです。このページは、特定のユーザーに応じて動的コンテンツで変更される可能性があり、変更される予定です。ただし、フィンガープリントも変更されますが、単一のフィンガープリントは、性質上、ユーザーの 100% と 100% 一致することはできません。動的コンテンツの。したがって、少なくとも単純化した形式では、ハッシュはここでは機能しません。

4

6 に答える 6

2

HTML ページの一意のフィンガープリントは簡単に計算できます。以下からハッシュを作成します。

  • プロトコル: http または https
  • URL: ドメイン + uri
  • クエリ文字列
  • 正確なページの内容を 1 バイトまで

オプションでいくつかのヘッダー:

  • Server
  • Content-Typeこれは重要
  • Content-encodingこれもきっと
  • もっとアイデア?自由に編集してください。

これは、ページにデータを POST していないことを前提としています。

于 2010-02-04T19:52:08.080 に答える
1

2つのページのテキストバージョンを取得できる場合は、それらを比較できます。ページの違いに許容できる最大範囲を決定できます。

Unix util(diffと呼ばれる)があります。このツールのwin32バージョンもネット上に浮かんでいます。ウィキペディアにはdiffに関する記事があります:http://en.wikipedia.org/wiki/Diff

wikiの記事には無料のファイル比較ツールがリストされており、「関連項目」セクションには、ファイル比較ツールとデルタエンコーディングについて説明している他の記事へのリンクがあります。

「レーベンシュタイン距離計量」も興味深いアプローチかもしれません。

CodeProjectにはまともなC#階差機関があります。ポイントが低いため、別のリンクを投稿できませんが、記事のタイトルは「A Generic、Reusable Diff Algorithm inC#」です。

于 2010-02-04T22:29:15.267 に答える
1

正確なホスト名、ポート、およびパスがあったとしても、Web ページを提供するアプリ サーバーがある場合、または Web サーバーが広告コンテンツを挿入している場合は、コンテンツが異なる可能性があります。

HTML の動的な部分 (広告や更新を続けるタイムスタンプなど) を確実に識別できる場合は、最初にデータを正規化します。すべてのスペース文字 (スペース、タブ、改行) を取り除き、そのコンテンツのハッシュを作成します。

「指紋」に何も追加されないため、ハッシュにホスト名-ポート-パスを含めません。(この情報は、後で Web サーバーに再クエリを実行して HTML を比較する必要がある場合に役立ちます。)

于 2010-02-07T17:46:44.263 に答える
1

ホストの IP を確認しないと、1% も確信が持てません。次は暗号化です。(これがないと、ARP poisoing の被害者になる可能性があります (LAN ネットワークのみ))。

HTTPS のキーは常に同じでなければなりません。

変更された場合は、誰かが不正行為を行っているか、キーが更新されたことを意味します (キーには有効期限があります)。

于 2010-02-04T19:49:23.570 に答える
1

HTMLページの「フィンガープリント」を保存して、後で正確に一致するかどうかを認識できるようにしたいと仮定すると、HTMLページの単純なハッシュダイジェストを使用するだけです。

質問をもっと明確にしない限り、それが HTML であることや、それがどのブラウザーにあるのかが問題になる理由がわかりません。

ただし、ページが同じ場所にあるかどうかはわかりません。そのためには、ホスト/IP やパスなどの追加の詳細を保存する必要があります。

于 2010-02-04T19:51:06.477 に答える