von Rene Schmidt
Wegen AdBlocker auf Werbeeinnahmen verzichten? Wer sich darüber ärgert, kann etwas dagegen tun. Dr. Web hat ein Herz für Website-Betreiber und stellt eine Anti-Werbeblocker-Strategie vor.
Hersteller von Werbeblockern und Website-Anbieter kämpfen seit Anbeginn des werbefinanzierten WWWs miteinander. Der einen Seite geht es darum, dem Konsumdruck aus dem Weg zu gehen. Die andere Seite kämpft für eine Finanzierungsquelle. Ein Ende oder gar Sieger in diesem Kampf ist nicht auszumachen.
Mittlerweile sind alle modernen Webbrowser mit Werbeblockern nachzurüsten. Sie machen es einfach, Werbegrafiken oder Iframes von bestimmten Hosts auszublenden. Das AdBlock-Plugin für den Firefox beherrscht sogar Reguläre Ausdrücke, um ganze Adressmuster erfassen und somit effektiver blockieren zu können. Online oder offline abzugleichende Listen mit Hostnamen von bekannten Werbe-Servern wie ad.doubleclick.com gehören beim AdBlock-Plugin ebenfalls zur Ausstattung.
Website-Betreiber können den Einsatz von Werbeblockern technisch nicht verhindern. Aber sie können die Werbung so in ihre Website integrieren, dass Durchschnittsnutzer kaum noch in der Lage sind, ihre Werbeblocker effektiv zu konfigurieren.
Normaler Abruf von Werbung – die gestrichelten Abfragen werden vom AdBlocker unterbunden
1. Die Herkunft der Werbegrafiken
Werbung zu filtern ist simpel, wenn die entsprechende Grafik vom Webbrowser direkt angefordert und von einem bekannten Werbe-Server wie ad.doubleclick.com geliefert wird. Der Filter wird so eingestellt, dass GIFs oder JPGs von diesem Host nicht angezeigt werden.
Das erste Ziel ist daher, dem Nutzer nicht mitzuteilen, woher eine Grafik kommt. Dazu bietet der häufig eingesetzte Apache-Webserver eine Proxy-Funktion an, die über das mod_rewrite-Modul genutzt werden kann. Wie sie konfiguriert wird, zeigt das unten folgende Beispiel.
2. Der Dateiname
Der Dateiname der Werbegrafik darf nur wenig Angriffsfläche bieten. Dazu wird in unserem Beispiel ein Alias-Dateiname erzeugt. Der Name ist aus per Zufall gewählten Zeichen aufgebaut, die Länge ist allerdings fix. Der erzeugte Dateiname ist ein Alias, weil die Datei, also die Werbegrafik, nicht auf dem Website-Host gespeichert ist. Sie wird statt vom Webbrowser nun vom Webserver beim Server mit der Werbung angefordert. Die echte Zieladresse steht in einer .htaccess-Datei.
Nachteil: Einmal muss die Grafik vom Server abgeholt und dann noch an den Nutzer übertragen werden – diese Methode verursacht ein etwas höheres Transfervolumen auf dem Webserver.
Im Beispiel wird vorausgesetzt, dass die Bilder einer Website im Verzeichnis /img liegen. Daher verweisen die Alias-Dateinamen ebenfalls in diesen Ordner.
Wenn diese Voraussetzungen erfüllt sind, ist die Konfiguration für Durchschnittsnutzer ohne Kenntnisse zu Regulären Ausdrücken schon recht schwierig. Die Effekte dieser Strategie:
- Der Nutzer könnte zwar einfach nach http://www.website.de/img/* filtern – nur dann würde der Filter alle Grafiken einer Website ausblenden, was wahrscheinlich nicht im Interesse des Nutzers ist. Am Ende kann er also nicht vernünftig nach Hostnamen filtern lassen.
- Der Nutzer könnte nach Dateinamen filtern, zum Beispiel nach http://www.website.de/img/8js7hjve.gif. Allerdings ist der Alias-Dateiname bei so gut wie jedem Aufruf anders.
Das Beispiel
Unser Beispiel besteht im Wesentlichen aus zwei Dateien:
Datei 1: /test.php
Das ist die Beispiel-Seite, auf der ein GIF-Logo und eine Werbegrafik angezeigt wird.
$s = "abcdefghijklmnopqrstuvwxyz_0123456789";
Hier wird die Zeichenmenge angegeben, aus dessen Elementen ein Alias-Dateiname bestehen darf. Dies sind in diesem Beispiel die Buchstaben a bis z, der Unterstrich und Ziffern.
$l = 8;
Dies ist die erlaubte Länge des Alias-Dateinamens. Achten Sie darauf, dass Ihre Website keine anderen Grafiken verwendet, deren Dateiname aus den oben genannten Zeichen, dieser Länge und der noch folgenden Dateiendung „.gif“ besteht – das würde wohl zu einigem Durcheinander führen.
$n = "./img/"; for($i=0;$i<$l;$i++) { $n .= $s[rand(0,strlen($s)-1)];
}
Die For-Schleife erzeugt den Alias-Dateinamen nach Pseudo-Zufallsprinzipien. „Pseudo“ deswegen, weil Computer deterministisch arbeiten, also aus Prinzip ohne weiteres keine echten Zufallszahlen erzeugen können. Die Anzahl der möglichen Variationen beträgt mit diesen Einstellungen 378 (37 verschiedene Zeichen potenziert mit der Länge 8). Das sind über 3512 Milliarden Kombinationen – die Wahrscheinlichkeit, dass zwei Scriptaufrufe hintereinander den gleichen Alias-Dateinamen erzeugen ist sehr gering.
$n .= ".gif";
Die Dateiendung ist hier nur Kosmetik – einen echten Grund für sie gibt es nicht. Nun folgt ein wenig simples HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Anti-Werbeblock-Demonstration</title></head>
<body>
<img border="1" src="./img/logo.gif">
<h2>Werbung Anfang</h2>
<a href="http://www.dieserlinkistnureintest.de/">
<img border="1" src="<?php print($n); ?>">
</a>
<p>Alias-Dateiname: <?php print($n); ?></p>
<h2>Werbung Ende</h2>
</body>
</html>
Datei 2: /img/.htaccess
RewriteEngine on
RewriteRule ^[a-z0-9]{48}\.(gif|jpg|png)$ http://www.dl.reneschmidt.de/werbung.gif
[P]
Die Datei liegt im Verzeichnis /img. Mit diesen Anweisungen wird das mod_rewrite-Modul des Apache-Webservers aktiviert. Der Reguläre Ausdruck bedeutet: der Alias-Name muss mit einem Kleinbuchstaben, Unterstrich oder einer Zahl beginnen und nach 8 Zeichen mit den gleichen (nicht denselben) Zeichen enden. Ein Punkt und entweder ein „gif“, „jpg“ oder „png“ müssen folgen. Wenn ein Dateiname auf dieses Muster passt, soll der Website-Server vom Server mit der Werbegrafik (hier www.dl.reneschmidt.de) die Datei werbung.gif holen und unter dem Alias-Namen an den Webbrowser des Nutzers liefern.
Die beiden übrigen Dateien /img/logo.gif und http://www.dl.reneschmidt.de/werbung.gif dienen nur der Demonstration.
Abruf von Werbung nach Dr. Web-Strategie
Die Schwächen der Strategie
Wer eine Strategie verfolgt, sollte auch ihre Schwächen kennen, um eventuell auch auf diese reagieren zu können. Hauptangriffspunkt der hier vorgestellten Lösung ist die Länge des Alias-Dateinamens. Sie ist fest und daher ein für Reguläre Ausdrücke leicht erkennbares Muster. Aber auch der Name könnte variiert werden, zum Beispiel könnte zur Länge 8 noch die Anzahl der im aktuellen Monat vergangenen Tage addiert werden. Im Regulären Ausdruck der .htaccess-Datei müsste dann statt der fixen Länge {8} der Bereich {8,39} (also 8 bis 31+8) angegeben werden. Unmöglich ist es dann aber noch immer nicht, die Werbung zu filtern. Absolut sichere Lösungen sind wenn es um Computer geht sowieso eher selten.
Um solche Alias-Dateinamen filtern zu können, sind grundlegende Kenntnisse zu Regulären Ausdrücken notwendig – aber die hat ein Durchschnittsnutzer normalerweise nicht. Website-Betreiber können die Hürde für die erfolgreiche Nutzung von Werbefiltern mit dieser Strategie ein gutes Stück höher setzen.
Eine Reaktion der Werbeblocker-Hersteller wird aber sicher nicht lange auf sich warten lassen.
Testseite für Browser mit Werbeblocker
Links zum Thema:
- AdBlock-Plugin für Firefox
- Demo als ZIP-Archiv
Erstveröffentlichung 27.02.2006