zurück zur Übersicht Mehr Artikel

Wie Websites deinen Werbeblocker erkennen (und wann sie danebenliegen)

Positiv
Prüfe auf Werbeblocker...

Es wird geprüft, ob du einen Werbeblocker installiert hast...

Du hast einen Artikel angeklickt und stattdessen eine Wand bekommen: „Adblocker erkannt. Bitte deaktivieren, um fortzufahren.“ Vielleicht war der Vorwurf berechtigt. Vielleicht nutzt du gar keinen Werbeblocker und die Seite besteht trotzdem darauf. So oder so: Die Seite hat deine Erweiterungsliste nie gesehen und dich trotzdem erwischt.

Es gibt keine API, die einer Webseite deine Erweiterungsliste aushändigt. Also suchen Anti-Adblock-Skripte nicht nach dem Blocker. Sie platzieren Dinge, die ein Blocker entfernen würde, und prüfen dann, was überlebt hat. Das Widget auf dieser Seite lässt sechs dieser Fallen gerade jetzt gegen deinen Browser laufen; der Rest dieses Artikels erklärt, was jede einzelne tut.

Die Kurzfassung: Eine Seite kann nicht abfragen, welche Erweiterungen du nutzt, also stellt sie Fallen: ein falsches Anzeigen-Element und eine Handvoll falscher Anzeigen-Requests. Verschwindet der Köder, blockierst du. Das ist der ganze Trick, und deshalb werden auch Dinge beschuldigt, die keine Werbeblocker sind (DNS-Filter, Braves Shields, manche Antivirensoftware). Die Fallen erkennen Blockieren, nicht Blocker.

Die Ökonomie ist simpel: Anzeigen bezahlen die Seite, blockierte Anzeigen bezahlen nichts, und eine Wand, die einen Teil der blockierenden Besucher zurück in Impressions verwandelt, ist es wert, den Rest zu nerven. Das ist der ganze Grund, warum es die Skripte weiter unten gibt.

Das Köder-Element: überführt durch das, was fehlt

Fast jeder Werbeblocker liefert dieselben Kernregeln mit: EasyList, ein von der Community gepflegter Katalog dessen, wie Werbung auf einer Seite aussieht. Neben Zehntausenden URL-Mustern enthält er kosmetische Regeln: Verstecke jedes Element mit Klassennamen wie ad-unit oder adsbox.

Dieser Katalog ist öffentlich, also lesen ihn Anti-Adblock-Skripte ebenfalls. Der älteste Trick der Erkennung: ein unsichtbares Ein-Pixel-Div anlegen, das genau diese Klassennamen trägt, und sein offsetHeight auslesen. Ein unblockierter Browser meldet den Pixel. Ein blockierter meldet null, weil ein kosmetischer Filter das Div auf display: none gesetzt hat. Die Seite hat deine Erweiterung nie gesehen. Sie hat gesehen, wie ein Div aufgehört hat zu existieren.

Ein Köder-Div, zwei Ausgänge
Was die Seite auslegt
<div class="adsbox ad-unit banner_ad">
von einem kosmetischen Filter versteckt
Was der Detektor liest
offsetHeight: 0
Der Köder ist verschwunden. Werbeblocker erkannt.
Der Detektor legt ein Element aus, das Werbeblocker bekanntermaßen verstecken, misst es und liest deinen Blocker an dem Loch ab, das er hinterlassen hat.

Das ist der „CSS-Köder“-Check im Widget oben, und die Engine in den alten Bibliotheken BlockAdBlock und FuckAdBlock, die die Hälfte aller Detect-Adblock-Tutorials im Internet bis heute neu verpackt. Diese Indirektion ist derselbe Zug, den Anti-Bot-Systeme machen, wenn sie Browser-Automatisierung jagen: Puppeteer kann auch niemand sehen, nur das, was Puppeteer verändert.

Die Requests, die nie zurückkommen

Die zweite Fallenfamilie arbeitet auf dem Netzwerk. Blocker verstecken nicht nur Elemente, sie weigern sich auch, von bekannten Ad-Servern zu laden, also schickt die Seite Attrappen los: ein Skript von pagead2.googlesyndication.com, ein Bild von tpc.googlesyndication.com, ein fetch() an ads.pubmatic.com. Echte Werbeinfrastruktur, mit Absicht angefragt. Feuert der Error-Handler statt des Load-Events, hat etwas auf deinem Rechner den Request abgewürgt. Chromes Konsole nennt den Schuldigen sogar beim Namen: net::ERR_BLOCKED_BY_CLIENT.

Vier der sechs Checks im Widget haben diese Form, einer pro Request-Typ, weil Filterregeln Skripte, Bilder, per CSS geladene Bilder und Fetches unterschiedlich behandeln und ein Blocker in die eine Falle gehen kann, während er die andere sauber passiert.

Viele Publisher sparen sich die Attrappen komplett. Googles eigenes Anzeigenskript, adsbygoogle.js, definiert beim Laden ein JavaScript-Objekt, und die Seite prüft schlicht, ob dieses Objekt existiert. Wenn das echte Anzeigenskript sein eigener Köder ist, werden Blockieren und Sich-selbst-Verraten dasselbe Ereignis.

Wie YouTube deinen Werbeblocker erkennt (und warum das anders läuft)

YouTube gibt sich mit Köder-Divs gar nicht erst ab. Sein Player weiß, welche Anzeigen der Server an den Stream gehängt hat, erwartet, dass seine eigenen Playback-Events feuern, und trägt die Erkennungslogik direkt im Player-JavaScript, obfuskiert und oft genug umgewürfelt, dass Filterlisten-Autoren ständig hinterherpatchen müssen. Google hat außerdem mit serverseitiger Anzeigeneinfügung experimentiert, bei der Anzeigen direkt in den Videostream eingenäht werden, wo keine Filterliste sie erreicht. Das ist eine andere Gewichtsklasse als ein kopiertes Köder-Skript, und es ist durch Policy gedeckt: Googles Position ist, dass Werbeblocker gegen YouTubes Nutzungsbedingungen verstoßen. Das Wettrüsten dort ist schnell und spezifisch, und genau deshalb hat „wie erkennt YouTube Adblocker“ keine stabile Antwort. Die Köder-Mechanik auf dieser Seite hat eine, und auf ihr laufen die anderen neunundneunzig Prozent aller „Bitte deaktiviere deinen Werbeblocker“-Wände.

Beschuldigt ohne installierten Werbeblocker

Tipp „adblock detected“ bei Google ein, und einer der Top-Vorschläge ist „adblock detected but no adblock“. Die Fallen erklären die Verwirrung: Sie schlagen bei Blockieren an, egal wo es sitzt.

  • DNS-Filter. Ein Pi-hole, NextDNS oder ein Router mit Werbefilter tötet den Attrappen-Request, bevor er dein Netzwerk verlässt. Für den Köder sieht das exakt aus wie uBlock Origin.
  • Browser, die ab Werk blockieren. Braves Shields verwerfen Anzeigen-Requests von Haus aus, und Firefox’ Tracking-Schutz auf „Streng“ blockiert bekannte Werbe- und Tracking-Domains. Ganz ohne Erweiterung.
  • Andere Erweiterungen. Cookie-Banner-Entferner und Privacy-Tools verstecken Elemente und blockieren Requests aus eigenen Gründen und lösen dieselben Fallen aus.
  • Sicherheitssoftware. Antivirus-Suiten mit „Webschutz“ filtern Werbe-Domains für den ganzen Rechner.

Der Detektor kann nicht unterscheiden, welche Schicht seinen Köder gefressen hat, und dem Nag-Screen ist es egal. Wenn das deine Situation ist, übernimmt das Widget oben die Diagnose: Es nennt, welche der sechs Checks ausgelöst haben. Ein Element-Check deutet auf etwas, das Seiteninhalte versteckt; Request-Checks deuten auf etwas auf dem Netzwerkpfad.

Wie du verhinderst, dass Websites deinen Werbeblocker erkennen

Du hast drei ehrliche Optionen und zwei grobe Notlösungen.

  • Setz die Seite in deinem Blocker auf die Whitelist (Allowlist). Das Ergebnis, für das die Wand überhaupt existiert, und der Mechanismus, den Adblock Plus mit seinem standardmäßig aktiven Acceptable-Ads-Programm institutionalisiert hat.
  • Halte deine Filterlisten aktuell. Dasselbe Ökosystem, das Werbung blockiert, blockiert auch Anti-Adblock: EasyList pflegt eine eigene Adblock Warning Removal List, und uBlock Origin liefert Annoyances-Listen mit, die viele Wände entfernen, bevor du sie je zu sehen bekommst.
  • Bezahl für die Seiten, die du wirklich liest. Beendet die Pattsituation ein für alle Mal.
  • Lesemodus, oder JavaScript aus. Die groben Notlösungen: Beides tötet den Detektor mitsamt allem anderen, was die Seite funktionieren lässt.

Werbung zu blockieren ist legal, und eine Seite, die dich nicht bedient, bis du damit aufhörst, ist es auch. Der Bundesgerichtshof hat 2018 genau das festgestellt, als Verlage die Macher von Adblock Plus verklagten und verloren. Mit geklärter Rechtslage auf beiden Seiten bleibt nur noch das Wettrüsten.

Dein Blocker wird Teil deines Fingerprints

Für unseren Vergleich von fünf beliebten Werbeblockern haben wir genau diese sechs Checks gegen jeden einzelnen laufen lassen, und die Spanne war groß: Adblock Plus löste fünf von sechs aus, uBlock Origin zwei, Ghostery nur einen.

Fünf Blocker gegen die sechs Fallen
WerbeblockerBibliothekCSS-KöderSkriptBildCSS-BGFetcherwischt von
Ghostery1/6
uBlock Origin2/6
uBlock Lite2/6
AdBlock3/6
Adblock Plus5/6
der Check erkennt den Blocker der Blocker schlüpft durch
Gleiche Seite, gleiche sechs Fallen: Adblock Plus löst fünf davon aus, Ghostery eine. Die Form der Zeile identifiziert ein Setup genauso gut wie die Punktzahl.

Daraus folgen zwei Dinge. Erstens: Blocker sind nicht alle gleich laut, und „erkennbar“ ist eine Eigenschaft, nach der du deinen Blocker aussuchen kannst. Zweitens: Das Muster selbst ist Information. Welche Fallen auslösen, hängt davon ab, welchen Blocker und welche Filterlisten du fährst, also wandert das Ergebnis zusammen mit deinem Font-Fingerprint und Canvas-Hash in das Profil, das ein Tracker anlegt. Ein Werbeblocker macht dich nicht unsichtbar. Er macht dich zu jemandem, der Werbung auf eine ganz bestimmte, messbare Weise blockiert.

Was du konkret tun solltest

  1. Sieh nach, was auslöst. Lass das Widget auf dieser Seite laufen, danach den kompletten Browser-Scan für alles Angrenzende: Fingerprint-Hashes, WebRTC, das volle Programm. Zu wissen, welche Checks dich erwischen, ist der Unterschied zwischen Raten und Beheben.
  2. Zu Unrecht beschuldigt? Finde die Schicht. Deaktiviere deine Erweiterungen und lade neu. Immer noch erkannt heißt: Das Blockieren sitzt tiefer, im DNS-Filter, in den Browser-Voreinstellungen oder im Webschutz des Virenscanners. Eine Seite in einer Erweiterung freizugeben, die du gar nicht hast, wird nie einen Block reparieren, den dein Router verursacht.
  3. Du betreibst mehrere Accounts? Achte auf das Muster. Ein Blockier-Muster ist ein weiteres Merkmal, das pro Identität konsistent bleiben muss, Session für Session. Incogniton hält jedes Profil als vollständig getrennten Browser mit eigenen Erweiterungen und Einstellungen, sodass die Blockiergewohnheiten von Profil A nie in den Fingerprint von Profil B durchsickern.

Wenn das nächste Mal eine Seite schwört, dass du einen Werbeblocker laufen hast, weißt du, was sie wirklich erwischt hat: ein Div, das seine Höhe verloren hat, oder eine Attrappe, die nie zurückkam. Das Widget oben verrät dir, welche von beiden dich verraten hat.

Incogniton-Logo

Bring deine Privatsphäre aufs nächste Level

Pfeil