OnPage-Checks - Browser-basiertes Audit
Die OnPage-Checks öffnen eine echte URL in einem Headless-Browser (Chromium via Playwright) - einmal vor Consent-Akzeptanz, einmal danach. Sie liefern damit eine Sicht, die APIs allein nicht haben: Was passiert auf der Seite selbst in den ersten Sekunden?
<!-- SCREENSHOT: OnPage-Lauf mit zwei Spalten „Vor Consent" / „Nach Consent" und Status-Karten -->
Was prüft die App?
Die OnPage-Sektion deckt sieben Bereiche ab:
- Server-Side-Tagging-Detection - antwortet die Site mit Custom GA4-Endpoints oder einem FPID-Cookie?
- GTM-Implementierung - sind Container geladen, gibt es Duplikate?
- CMP-Erkennung - 14 Consent-Management-Plattformen werden erkannt (Cookiebot, OneTrust, Usercentrics, Borlabs, CCM19, Sourcepoint u. a.).
- Consent Mode v2 - Default- und Updated-State werden mitgelesen.
- Privacy/DSGVO - feuert Tracking vor der Consent-Akzeptanz?
- Drittanbieter-Tools - 9 Tracker werden erkannt (Meta, TikTok, LinkedIn, Clarity u. a.).
- DataLayer - sind Events und E-Commerce-Daten Spec-konform?
Wann wird ein Check ausgelöst?
| Check | Schwelle |
|---|---|
| Measurement-ID erkannt | Ja = Grün, Nein = Rot |
page_view + session_start in 2 min |
>5 = Grün, <2 = Rot |
Cross-Domain-Cookie (_ga) |
über Domains konsistent = Grün |
Consent-Status analytics |
granted = Grün, denied = Warnung |
| Tracker-Feuern vor Consent | jedes Event = DSGVO-Warnung |
Die Logik liegt in app/pages/onpage.py,
app/services/browser_check_service.py
und app/services/onpage_check_evaluator.py.
<!-- SCREENSHOT: Tracker-Karte mit Liste der erkannten Drittanbieter -->
Typische Ursachen
- GTM nicht geladen → JavaScript-Fehler im Container, Content-Security-Policy blockt das Script, URL-Mismatch zwischen GA4-Stream und tatsächlicher Domain.
- Measurement-ID falsch → Copy-Paste-Bug, alte/Test-ID im Production-Code hängen geblieben.
- Tracking vor Consent → GTM-Trigger feuert auf „Page Load" statt auf „Consent granted", CMP-Script lädt nach GTM oder gar nicht.
- Cross-Domain-Cookie fehlt →
_ga-Cookie wird nicht über das Sub-/Hauptdomain-Setup hinweg gesetzt, weilauto-Konfiguration überschrieben wurde.
So gehst du vor
- Im Auditor unter OnPage eine URL eingeben - bei Cloud-Run-Setup
ist das Feature ggf. erst nach Aktivierung sichtbar
(
onpage.disabled.title). - Den Lauf abwarten (~10-30 s pro URL, da zwei Phasen).
- Die zwei Spalten „Vor Consent" und „Nach Consent" vergleichen - alles, was vor Consent feuert, ist ein potenzielles DSGVO-Risiko.
- CMP-Erkennung prüfen: Wenn keine CMP gefunden wird, obwohl eine läuft, das Element im DOM identifizieren und ggf. Issue im Auditor melden.
- Bei Consent-Mode-Themen parallel Consent Mode v2 verstehen öffnen.