xuur schrieb:
(Bitte keine Antworten wie: "Dann nimm doch wget und baut ein Skript dazu")
wget und curl greifen bei Webseiten mit dynamisch generierten Elementen eh zu kurz. Natürlich müsste man das HTML und alle nachgeladenen Ressourcen (JS, CSS, Bilder usw.) laden und vergleichen, aber das genügt bei heutigen Webseiten oft nicht, wenn die dynamisch Inhalte von einem Backend nachladen.
Eine Idee wäreSelenium, das wird als Testing-Framework in der Webentwicklung genutzt, damit kommt man ein einen unter realistischen Bedingungen im Browser entstandenen DOM-Tree, kann mit der Webseite reproduzierbar interagieren und auch Screenshots erzeugen lassen.
Dann wäre die Frage, was als relevante Änderung zählt - um eine Webseite als unverändert anzusehen, müsstest du ja genau genommen nicht nur alle Elemente im DOM vergleichen sondern zusätzlich das Verhalten der Webseite reproduzierbar analysieren. Und wenn sich bei dynamisch generierten Webseiten z.B. eine Zeitangabe ändert (z.B. relative Zeitangaben zum Alter von bestimmten Datensätzen, die an sich unverändert geblieben sind), ist das ja nicht unbedingt eine Änderung, über die du ständig informiert werden willst.
Ein abweichender Screenshot einer Webseite sagt nicht zwingend etwas über Änderungen aus. Da kann man ggf. schon mit zwei unterschiedlichen Versionen des selben Webbrowser Unterschiede sehen, von dem Eiertanz mit verschiedenen Browsern und Workarounds, um ein halbwegs einheitliches Erscheinungsbild zu bekommen, gar nicht zu reden. Und Logikänderungen in JS bekommst du auf Screenshots nur mit, wenn du vorher Dinge tust, die dafür sorgen, dass der geänderte Code den DOM-Tree abweichend manipuliert.
Bei HTTP-Verbindungen kannst du nicht nachweisen, dass kein Man-in-the-Middle-Angriff bestand und bei HTTPS müsste man das Zertifikat jeweils mitprotokollieren, damit zumindest in Ansätzen nachvollziehbar bleibt, wer sich da als Gegenüber gemeldet hat. Dann kann aber trotzdem noch jemand den Server manipuliert haben, um dir mit gültigem Zertifikat weiterhin einen bestimmten Zustand der Webseite vorzugaukeln, während andere Besucher möglicherweise ganz etwas anderes sehen.
Um die große Leuchte zufrieden zu stellen, die sich die Anforderungen ausgedacht hat, könnte man dann noch ein bisschen Blockchain und Cyber drüber sprenkeln, um den Anschein der nachträglichen Unveränderbarkeit zu wahren, nachdem man viel Zeit pro Seite investiert hat (und nachträglich investieren werden muss, falls sich irgendetwas ändert, zu dem die Tests nicht mehr passen, alles unter 100% Testabdeckung zählt ja nicht, wenn man sicher gehen will, dass man alle relevanten Änderungen erfassen kann), damit die nichtssagenden Vergleiche wenigstens die gängien Buzzword-Kriterien erfüllen 😛