Frage

Bei meiner Frage geht es vor allem um die Verifizierung.Womit lässt sich feststellen, was in einem HTML-Dokument einzigartig ist?(Das Dokument kann einen gewissen Grad an Dynamik aufweisen.)

Was kann verwendet oder erzeugt werden, um mit einer Genauigkeit von sagen wir 99 % zu erkennen, dass eine Seite die richtige Seite ist, wenn man bedenkt, dass man eine Art „Fingerabdruck“ der Seite speichern kann, die man überprüft?


Der Klarheit halber ist dies ein zusätzliches Extra zur Verschlüsselung/https usw.Diese Seite kann und wird sich mit dynamischen Inhalten je nach bestimmten Benutzern ändern. Dies gilt jedoch auch für den Fingerabdruck. Aufgrund der Art dynamischer Inhalte kann ein einzelner Fingerabdruck jedoch nicht zu 100 % mit 100 % der Benutzer übereinstimmen.Daher kann ein Hash hier nicht funktionieren, zumindest nicht in einer vereinfachten Form.

War es hilfreich?

Lösung

Ein einzigartiger Fingerabdruck einer HTML -Seite ist leicht zu berechnen. Bauen Sie einen Hash aus Folgendes:

  • Protokoll: HTTP oder HTTPS
  • URL: Domain + URI
  • Query_string
  • Der Inhalt der exakten Seite bis zu einem Byte

Optional einige Header:

  • Server
  • Content-Type das ist wichtig
  • Content-encoding Das auch wahrscheinlich auch
  • Weitere Ideen? Fühlen Sie sich frei, sie zu bearbeiten.

Dies setzt voraus, dass Sie keine Daten auf Seiten veröffentlichen.

Andere Tipps

Sie können nicht einmal 1% sicher sein, wenn Sie die IP des Hosts nicht überprüfen. Die nächste ist Verschlüsselung. (Ohne dies können Sie ein Opfer von ARP Poisoing sein (nur in LAN -Netzwerken)).

Der Schlüssel in HTTPS muss ständig der gleiche sein.

Wenn es ändert, bedeutet dies, dass jemand betrügt oder der Schlüssel aktualisiert hat (die Schlüssel haben sein Ablaufdatum.)

Der Fingerabdruck der Seite ist der Hostname, den Port und der Pfad. Das ist das einzige, was im Internet garantiert einzigartig ist. Ich nehme an, Sie könnten auch die Cache-Header (Last-Modified) einfügen, um festzustellen, ob sie sich geändert haben.

Wenn Sie die HTML gehasht haben, können Sie sehen, ob sie sich geändert hat, selbst wenn sich der letzte modifizierte Header geändert hat.

Angenommen, Sie möchten für eine Minute einen „Fingerabdruck“ einer HTML-Seite speichern, damit Sie diese später wiedererkennen können genau Um Übereinstimmungen zu erzielen, verwenden Sie einfach einen einfachen Hash-Digest der HTML-Seite.

Sofern Sie die Frage nicht näher klären, sehe ich keinen Grund, warum es wichtig sein sollte, dass es sich um HTML handelt oder in welchem ​​Browser es sich befindet.

Dadurch erfahren Sie jedoch nicht, ob sich die Seite am selben Ort befindet.Dazu müssten Sie zusätzliche Details wie Host/IP und Pfad speichern.

Wenn Sie die Textversionen der beiden Seiten erhalten können, können Sie sie differenzieren. Sie können einen maximalen Bereich ermitteln, der für Unterschiede in der Seite akzeptabel ist.

Es gibt einen UNIX -Util (Difffit). Es gibt auch Win32 -Versionen dieses Tools, die auch im Netz schweben. Wikipedia hat einen Artikel über Diff: http://en.wikipedia.org/wiki/diff.

Der Wiki -Artikel listet kostenlose Dateivergleichstools auf, und der Abschnitt "Siehe auch" enthält Links zu anderen Artikeln, in denen Dateivergleichstools und Delta -Codierung diskutiert werden.

Die "Levenshtein -Distanzmetrik" kann ebenfalls ein interessanter Ansatz sein.

Es gibt eine anständige C# Differenzmotor auf CodeProject. Ich kann aufgrund meines Tiefpunkts keinen weiteren Link veröffentlichen, aber der Artikel -Titel lautet: "Ein generischer, wiederverwendbarer Diff -Algorithmus in C#".

Selbst wenn Sie den genauen Hostnamen, den Port und den Pfad hätten, kann der Inhalt immer noch anders sein, wenn ein App -Server auf den Webseiten serviert wird oder wenn der Webserver Anzeigeninhalte einfügt.

Wenn Sie die dynamischen Teile der HTML zuverlässig identifizieren könnten (wie Anzeigen oder Zeitstempel, die weiter aktualisieren), würde ich zuerst die Daten normalisieren. Ich würde alle Leerzeichen (Räume, Registerkarten, Neulinge) ausziehen und dann einen Hascher dieses Inhalts erstellen.

Ich würde nicht Fügen Sie den Hostname-Port-Pfad in den Hash ein, denn das würde dem "Fingerabdruck" nichts hinzufügen. (Diese Informationen sind später nützlich, wenn Sie den Webserver später anfordern müssen, um das HTML zu vergleichen.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top