Zum Hauptinhalt springen

Skript zur Überwachung von Webseiten-Änderungen — oder lassen Sie das Skript

Wenn Sie nach 'python script monitor website' oder 'node monitor webpage' suchen, kennen Sie die Form bereits: eine URL holen, hashen, mit dem letzten Lauf vergleichen, bei Änderung alarmieren. Diese Seite zeigt die Kurzfassung in beiden Sprachen — und danach die gemanagte Webhook-Alternative, die das Skript in der Produktion ersetzt.

Das Skript unten läuft etwa eine Woche. Dann ändert sich eine CSS-Klasse, der Laptop geht in den Ruhezustand, der Cronjob stirbt leise, die Slack-Webhook-URL wird rotiert — und niemand merkt, dass der Monitor nicht mehr ausgeführt wird. DiffHook ist die Variante, bei der jemand anderes die Infrastruktur übernimmt, der Webhook HMAC-signiert ist und das Delivery-Log einen Laptop-Neustart überlebt.

Python

Python-Skript zur Überwachung einer Webseite

Ein Dutzend Zeilen Python reichen, um eine Seite abzufragen, die Antwort zu hashen und eine Änderung zu erkennen. Das «und dann?» ist die Stelle, an der echte Skripte immer weiter wachsen — Retries, Deduplizierung, signierte Zustellung, Logs.

monitor.py
import hashlib, time, urllib.request

URL = "https://example.com/pricing"
last = None
while True:
    html = urllib.request.urlopen(URL).read()
    h = hashlib.sha256(html).hexdigest()
    if last and h != last:
        print("changed")  # then… what?
    last = h
    time.sleep(300)

Für eine einzelne Seite während einer Demo funktioniert das. Für alles Produktive brauchen Sie: Timeouts, einen User-Agent-Header, Fehlerbehandlung, eine Datenbank (oder wenigstens eine Datei) für den letzten Hash und eine Zustellschicht, die das Skript nicht zum Absturz bringt.

Node

Oder: einen Monitor an DiffHook POSTen

Das Äquivalent in Node — statt selbst eine Polling-Schleife zu pflegen, erzeugt dieser Aufruf einen gemanagten Monitor, der in der DiffHook-Infrastruktur läuft und bei Änderungen einen Webhook auslöst.

monitor.ts
await fetch("https://api.diffhook.com/v1/monitors", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${token}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    type: "page",
    url: "https://example.com/pricing",
    interval_seconds: 300,
    deliveries: [{ type: "webhook", url: hookUrl }],
  }),
})

Kein Cron, kein VPS, kein «ist mein Laptop wieder eingeschlafen?». Der Webhook ist HMAC-SHA256-signiert und wird bei Fehlern automatisch wiederholt. Delivery-Logs sind per API abfragbar.

Warum das Skript ersetzen

Was ein gemanagter Monitor wirklich bringt

Es gibt einen Grund, warum niemand sein Python-Polling-Skript dauerhaft in Produktion laufen lässt. Diese sechs Fehlerquellen enden meist in Wochenend-Rufbereitschaft.

Keine stummen Ausfälle

Wenn der DiffHook-Monitor eine Seite nicht abrufen kann, erhalten Sie eine Benachrichtigung — statt eines stillen Cronjobs, der seit drei Wochen falsch läuft.

Signierte Webhooks

Jede Zustellung trägt einen HMAC-SHA256-Signatur-Header, damit Ihr Empfänger prüfen kann, dass der POST tatsächlich von DiffHook stammt und nicht manipuliert wurde.

Eingebaute Retries

Fehlgeschlagene Zustellungen werden mit exponentiellem Backoff wiederholt. Ein wackliger Empfänger kostet Sie keine Events.

Diff-Historie

Frühere Änderungen werden gespeichert und sind wiedergebbar. Ihr Skript bräuchte eine Datenbank — DiffHook liefert die Historie als Teil des Produkts.

JS-Rendering

Client-gerenderte Seiten, SPAs und Dashboards funktionieren sofort. Headless Chromium wird für Sie verwaltet — keine Playwright-Installation, die gepflegt werden muss.

Team-Zugriff

Teammitglieder können Monitore einsehen, pausieren und Delivery-Logs prüfen. Ihr Shell-Skript auf einem Laptop kann das nicht.

FAQ

Skripte vs. gemanagte Monitore

Soll ich lieber mein eigenes Skript schreiben statt DiffHook zu nutzen?
Für einen einmaligen Einsatz oder einen privaten Hobby-Monitor reicht ein Skript — DiffHook wäre übertrieben. Sobald das Ganze aber einen Laptop-Neustart überleben muss, der Empfänger die Authentizität prüfen soll, Retries nötig sind oder ein Teammitglied Zugriff braucht, rechnet sich das Skript nicht mehr.
Kann ich mein Skript behalten und DiffHook nur für die Zustellung nutzen?
Ja. Manche Teams behalten einen eigenen Scraper (etwa für einen komplizierten Login) und POSTen den Diff an einen DiffHook-Webhook-Endpunkt, der dann signiert und weiterverteilt. Die Incoming-Webhook-API von DiffHook akzeptiert beliebige Payloads, und Sie behalten die Zustellgarantien.
Funktioniert DiffHook auch für JSON-API-Monitoring?
Ja. DiffHook hat einen nativen JSON-API-Monitortyp — auf einen Endpunkt zeigen, einen JSONPath angeben und bei Wertänderung einen Webhook bekommen. Die Python/Node-Polling-Schleife für JSON lässt sich genauso ersetzen.
Wie sieht das DiffHook-Webhook-Payload aus?
Jede Änderung löst einen JSON-POST aus mit: Event-Typ (page.changed, json.changed, rss.new_item), Monitor-ID, Ziel-URL, Zeitstempel, Vorher/Nachher-Snapshots oder Diff und Zustell-Metadaten. Alle Payloads sind HMAC-SHA256-signiert — die Authentizität lässt sich in sechs Zeilen Code prüfen.

Verwandt

Verwandte Ressourcen

Polling-Skript in Rente schicken

3 kostenlose Monitore, HMAC-signierte Webhooks, wiedergebbare Delivery-Logs, vollständige REST-API. Keine Kreditkarte nötig.

DiffHook - Website-Ueberwachung