Skip to content

Pillar 3 of 4

Hunt down trackers your tag manager forgot about

A real browser, real network interception, and a full set of fingerprinting API hooks. We catch the trackers everyone catches — and the ones nobody else does.

The fingerprinting that hides in plain sight

Privacy laws are catching up to fingerprinting. Cookie-style consent banners don't help, because fingerprinting doesn't write a cookie — it reads stable browser characteristics to identify you. Most scanners can't see this. We inject a small init script before any of your page's JavaScript runs. It wraps the four APIs most commonly used for fingerprinting and counts every call. If your site loads a third-party script that probes the canvas to derive a hardware-specific image hash, we'll see exactly which script and how many times. This is how The Markup's Blacklight project works, and it's the only reliable way to detect fingerprinting from outside the running script.

Network interception, done right

We listen to every outbound request from page load through 4 seconds of scrolling, so trackers triggered by lazy-loaded content (the ones that fire when the user reaches a chat widget or product card) aren't missed. First-party vs third-party is determined by registrable domain comparison — a request to cdn.example.com from example.com is correctly first-party, whereas px.facebook.com is third-party even if loaded from a same-name subresource. Each request is recorded with its category, owner organization, and known-tracker name where applicable.

Why classify? Because counting matters less than naming

Telling a customer "your site loads 47 third-party requests" is a number without action. Telling them "your site loads Hotjar (session replay), Mixpanel (analytics), and Meta Pixel (advertising) before consent" is a punch list. Every known tracker comes with the owning organization so your privacy team has the right vendor to negotiate with.

Beispiel-Befunde

serious

Canvas-Fingerprintting erkannt

Ein Script, das von cdn.fingerprintjs.com geladen wird, ruft HTMLCanvasElement.prototype.toDataURL() 3 Mal während des Seitenladens auf. In Kombination mit WebGL- und audio-context Reads aus demselben Script ist das konsistent mit deterministischem Browser-Fingerprinting und sollte in Ihrer Datenschutzerklärung offengelegt und per explizitem Consent freigegeben werden.

API           : canvas.toDataURL
Aufgerufen durch : https://cdn.fingerprintjs.com/v3/iife.min.js
Anzahl Calls   : 3
Tritt zusammen mit: webgl.getParameter, audioContext, navigator.plugins
critical

Session-Replay-Tool vor Consent geladen

Hotjar (hotjar.com/c/hotjar-XXXXX.js) wurde geladen und initialisiert, bevor der Nutzer mit dem Consent-Banner interagiert hat. Session-Replay zeichnet Mausbewegungen, Klicks, Scrolls und Formulareingaben auf — die EDPB hat ausdrücklich gemacht, dass dies eine Verarbeitung besonderer Kategorien unter GDPR ist und opt-in Einwilligung erfordert, nicht berechtigtes Interesse.

Tracker  : Hotjar (session replay)
Inhaber  : Contentsquare
Geladen  : t=0.4s (vor Banner-Mount)
Kategorie: session-replay (hohes Risiko)

Fix: Verschieben Sie hotjar.com-Requests, bis der Nutzer in Ihrem CMP die Kategorie „analytics“ oder „functional“ auswählt.
moderate

WebGL-Fingerprinting-Probe

Ein First-Party-Bundle liest WebGLRenderingContext.getParameter() mit der UNMASKED_RENDERER_WEBGL Erweiterung — diese legt das GPU-Modell des Nutzers offen. Dafür gibt es in Ihrer App keinen Rendering-Use-Case; es ist ein Fingerprinting-Signal, das offengelegt oder entfernt werden sollte.

API        : WebGLRenderingContext.getParameter
Parameter  : UNMASKED_RENDERER_WEBGL (37446)
Aufgerufen durch  : /static/js/main.4f8a2c.js (First-Party-Bundle)
Anzahl Calls : 1

Damit wird die GPU-Renderer-String offengelegt (z. B. „ANGLE (Apple, Apple M2 Pro, OpenGL 4.1)“).

Scannen Sie Ihre Website in 60 Sekunden

25 kostenlose Credits. Keine Kreditkarte. Echte Befunde auf der Seite, die Ihnen wichtig ist.