Profil | Mitglieder | Registrieren | Start | Suche


PHP-Support.de » PC-Ecke » Internet allgemein » Die Adblock-"Challenge"    » Hallo Gast [Login | Registrieren]

Neues Thema | Antworten   

Autor Beitrag
DingsDaBums
Mitglied
Exzellenter User


Dabei seit: 12.09.2010
Herkunft: keine Angabe
Posts: 2367
     Die Adblock-"Challenge" Zitat | Bearbeiten

Moin zusammen!

Aufgrund einer Wette und weil ich die Herausforderung allgemein mal annehmen wollte, habe ich gestern eine Adblock-Sperre entwickelt, die man (wie ich eben denke) nicht so ohne weiteres umgehen kann, wie es z.B. bei bild.de im Moment ja der Fall ist und groß diskutiert wird.

Ich wollte hier einfach mal fragen (sofern das ok ist. Wenn nicht, einfach den Thread wieder löschen), ob jemand sich mal daran versuchen möchte und es vielleicht schafft, diese Sperre zu umgehen.

Hier geht es zu der Testwebseite:
Neue Testwebseite folgt.

Der Hintergrund:
Mit dem von mir entwickelten Skript soll möglichst sicher gestellt werden, dass der Inhalt der Webseite (hier ein einfacher Beispieltext) nur angezeigt wird, wenn auch der Adblocker deaktiviert wurde und entsprechend auch Werbung angezeigt wird, damit der Seitenbetreiber auch entsprechend mit seinen Inhalten was verdienen kann.

Ich habe bewusst kein Skript gebastelt, welches den Adblocker umgeht und Werbung so oder so anzeigt (ist aber auf dieselbe Weise genau so möglich), da der Nutzer meiner Meinung nach immer die Wahl haben soll, ob der Inhalt ihm das deaktivieren des Adblockers wert ist.


Entsprechend gilt diese Sperre als "umgangen", wenn...
1. der Adblocker aktiv ist
2. der Beispieltext angezeigt wird (erkennt man an der grünen Box sehr gut)
3. keine Werbung angezeigt wird

In diesem Fall ist es nur ganz einfach Beispielwerbung. Da geht es nicht darum, dass das Element ausgeblendet wird, sondern das entsprechende Skript, welches für die Werbung zuständig ist, erst gar nicht geladen wird, weil in diesem Skript könnten noch viel mehr Eigenschaften der Werbung so "zufällig" gestaltet werden, dass entsprechende Filterregeln nur für einen einzelnen Seitenaufruf gelten würden und somit keinen Sinn ergeben. Das habe ich jedoch erst einmal aus Zeitgründen noch nicht umgesetzt.


Also vielleicht will sich ja jemand daran versuchen oder auch einfach mal testen, ob bei ihm auch wirklich der Text angezeigt wird, wenn er den Adblocker deaktiviert und sonst nicht. Würde mich in beiden Fällen sehr übe Feedback freuen



DingsDaBums

PS: Das ist nur ein Spaß-Projekt. Hier geht es nicht darum, dass ich eine entsprechende Sperre testen möchte, die ich dann an entsprechende Webseitenbetreiber verkaufe oder so Es geht dabei nur um den "Wettkampf"


Schau mal bei meinem Projekt vorbei. Vielleicht ist das ja was für dich MyStartPanel - Deine persönliche Startseite mit deinen Favoriten
Auf der Suche nach einem guten Vokabeltrainer? Vokabeltrainer Cramfire - Schnell und effektiv Vokabeln lernen

Post wurde schon 1x editiert, das letzte mal am 11.03.2016 um 09:49 von DingsDaBums
28.12.2015, 15:16 Profil | PM | E-Mail  
Andavos
Administrator
Foren-Gott


Dabei seit: 30.11.2003
Herkunft:
Posts: 6193
      Zitat | Bearbeiten

Ich werde blockiert, scheint also zu klappen.

Spannendes Projekt, bleibt nur die Frage ob wir irgendwann Ablock-Blocker-Blocker haben.


www.php-einfach.de, PHP lernen leicht gemacht
www.webhosterwissen.de, Webhosting-Vergleich



28.12.2015, 20:08 Profil | PM | E-Mail  
DingsDaBums
Mitglied
Exzellenter User


Dabei seit: 12.09.2010
Herkunft: keine Angabe
Posts: 2367
      Zitat | Bearbeiten

Zitat:
Orginal von Andavos
Ich werde blockiert, scheint also zu klappen.

Spannendes Projekt, bleibt nur die Frage ob wir irgendwann Ablock-Blocker-Blocker haben.


Ja, das ist so zusagen der "Wettkampf" dahinter
Es gibt ja bereits bei Adblock Plus und co. (die eigentlich alle so gut wie dieselben Filter nutzen) auch Listen, die bekannte Namen für solche Adblock-Blocker-Skripte entsprechend blocken bzw. durchlassen, um eben nicht das erkennen zu ermöglichen.

Ganz bekannt ist z.B. einfach ein Skript mit dem Namen ads.js zu nutzen, welches dann als Inhalt "var adblocker = false;" hat.
Wird dieses Skript geblockt -> adblocker != false -> Adblocker aktiviert.

Das kann man aber schnell umgehen, indem man eben einfach das Skript erlaubt.

Entsprechend gehe ich einen etwas anderen Weg und schlage die Adblocker einfach mit ihren eigenen Waffen


Im Moment ist es aber nur die absolute Grundversion. Will da noch 1-2 weitere Konzepte implementieren und dann müsste man schon für jede Webseite extra komplette Skripte schreiben, die auch nur versuchen können, gewisse Dinge zu erkennen. Aber dann ändert man als Seitenbetreiber eine Einstellung und schon funktioniert es nicht mehr

Bin gespannt, ob jemand einen Weg findet, diese Sperre auszutricksen


Schau mal bei meinem Projekt vorbei. Vielleicht ist das ja was für dich MyStartPanel - Deine persönliche Startseite mit deinen Favoriten
Auf der Suche nach einem guten Vokabeltrainer? Vokabeltrainer Cramfire - Schnell und effektiv Vokabeln lernen
28.12.2015, 23:41 Profil | PM | E-Mail  
kseng
Mitglied
Neuling


Dabei seit: 10.11.2015
Herkunft: keine Angabe
Posts: 9
      Zitat | Bearbeiten

Ne, ich habs auch nicht geschafft...


29.02.2016, 16:16 Profil | PM | E-Mail  
DingsDaBums
Mitglied
Exzellenter User


Dabei seit: 12.09.2010
Herkunft: keine Angabe
Posts: 2367
      Zitat | Bearbeiten

Guten Abend zusammen!

Da ich auf verschiedenste Wege nun angesprochen wurde, wie denn meine Sperre funktioniert und ob man sie irgendwie selbst nutzen darf/kann, wollte ich noch kurz was hier dazu schreiben.

Also erst einmal war dies ein kleines Projekt von mir, was wie gesagt einfach eine kleine Herausforderung für den Zeitvertreib sein sollte.
Zudem war bzw. ist meine Sperre zwar sehr wirksam und mit Filterregeln, wie sie eigentlich alle gängigen Adblocker verwenden, nicht zu umgehen, aber entsprechend umfangreich ist die Implementierung von eben genau dieser Sperre. Die aktuellste Version meiner Sperre verwendet zudem auch AES als sichere Verschlüsselung, um das Umgehen der Sperre rechtlich eine andere Relevanz zu geben, was aber für die meisten Seiten ein absoluter Overkill sein dürfte und nur in den wenigsten Fällen wirklich sinnvoll sein würde.

Ich muss mal schauen, wann und ob ich diese Sperre mal veröffentliche, aber ich dachte mir, ich schreibe hier einfach mal eine kleine Anleitung, wie man sehr einfach einen Adblocker erkennen und entsprechend darauf reagieren kann. Diese "Sperre" bzw. Erkennung kann man als gekonnter Adblock-Nutzer in 5min umgehen, aber 1. sind bei weitem nicht alle entsprechend mit dem Umgang und den möglichen Filterregeln der Adblocker vertraut bzw. haben das notwendige technische Verständnis und 2. wird es den meisten nicht den "Aufwand" wert sein und eher die Seite verlassen. Das ist auch der Grund, weswegen man es vielleicht mit dem Reagieren auf einen Adblocker auch nicht übertreiben sollte, wenn man nicht wirklich muss.


Zum Skript:

Die Funktionsweise ist eigentlich extrem einfach. Man hat zum einen ein Skript, welches so benannt und eingebunden wird, dass es von jedem Adblocker standardmäßig geblockt wird. In diesem Skript setzt man einfach eine Variable auf true, false oder irgendeinen anderen Wert.
Zusätzlich hat man ein zweites Skript, welches NACH dem ersten Skript eingebunden werden muss, wo geprüft wird, ob die Variable existiert, die man im ersten Skript gesetzt hat UND zur Sicherheit, ob sie den erwarteten Wert beinhaltet.

Ein Beispiel:
Skript A
Name: abdetect.js
Sollte z.B. wie folgt eingebunden werden, um auf jeden Fall die Adblocker zu triggern: <script type="text/javascript" src="abdetect.js?/ad.popup?&adbannerid=43234"></script>
 PHP 
1:
window.abd_chtzdkdhaztz = 'zoz7Y86PzhIHXQ';


Skript B
Name: baum.js (als Beispiel. Sollte einfach nicht schon standardmäßig vom Adblocker geblockt werden)
Kann ganz normal eingebunden werden.
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
(function(){

    if(typeof window.abd_chtzdkdhaztz == 'undefined' || window.abd_chtzdkdhaztz != 'zoz7Y86PzhIHXQ')
    {
        // Hier passiert das, was passieren soll, wenn ein Adblocker erkannt wurde.
        document.getElementsByTagName('html')[0].className = 'abd_a';
    }

})();



Bei dem Beispiel habe ich es so gemacht, dass wenn ein Adblocker erkannt wurde, dem HTML-Element einfach die Klasse "abd_a" gegeben wird.
So kann es sich jeder einfach 1:1 kopieren und einfach in CSS festlegen, was passieren soll, wenn ein Adblocker erkannt wurde und muss selbst kein Stück JavaScript können.

Wie das nun per CSS funktioniert?
Man muss nur vor alle CSS-"Regeln", die zutreffen sollen, wenn ein Adblocker erkannt wurde, ein .abd_a packen.
Ich habe dafür mal folgende Klassen vorbereitet: Zum einen hideOnAB und showOnAB-block, showOnAB-inline, sowie showOnAB-inline-block. Je nachdem, um was für ein Element es sich handelt.
 PHP 
1:
2:
3:
4:
5:
.abd_a .hideOnAB { display:none; }
.showOnAB-block, .showOnAB-inline, .showOnAB-inline-block { display: none; }
.abd_a .showOnAB-block { display: block; }
.abd_a .showOnAB-inline { display: inline; }
.abd_a .showOnAB-inline-block { display: inline-block; }


Wie die Namen bereits vermuten lassen, kann man mit diesem CSS Code dann ganz einfach bestimmen, welche Elemente auf der Seite bei aktiven Adblocker ausgeblendet werden sollen und welche bei aktiven Adblocker angezeigt werden sollen, ohne im JavaScript-Code oder ähnlich umständlich irgendwie zusätzlich etwas hinzufügen zu müssen. Das dürfte auch keinen Einfluss auf den restlichen Code der jeweiligen Webseite haben.

Eine ganz einfache HTML-Seite als Beispiel und zum testen:
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Test einfachste Adblock-Detection</title>
    <style>
        .abd_a .hideOnAB { display:none; } 
        .showOnAB-block, .showOnAB-inline, .showOnAB-inline-block { display: none; } 
        .abd_a .showOnAB-block { display: block; } 
        .abd_a .showOnAB-inline { display: inline; } 
        .abd_a .showOnAB-inline-block { display: inline-block; }
    </style>
</head>
<body>

<h1 class="hideOnAB">Du nutzt keinen Adblocker!</h1>
<h1 class="showOnAB-block">Du nutzt einen Adblocker!</h1>

<script type="text/javascript" src="abdetect.js?/ad.popup?&adbannerid=43234"></script>
<script type="text/javascript" src="baum.js"></script>
</body>
</html>


Vielleicht Hilft es dem ein oder anderen dabei, die Besucher mit Adblocker ganz nett darum zu bitten, den Adblocker zu deaktivieren bzw. darauf hinzuweisen, dass die Webseite eben durch Werbeeinnahmen finanziert wird.
Wie aufdringlich bzw. radikal die "Antwort" euerseits ist, muss jeder für sich selbst entscheiden, aber mit den paar Zeilen Code, sollte das jeder ohne nennenswerte JavaScript- oder CSS-Kenntnisse leicht umsetzen können.

Falls es jemand einsetzt und ich jemandem hiermit helfen konnte, würde ich mich über eine Rückmeldung freuen

Edit: Ich habe noch eine Beispiel HTML-Seite als Beispiel und zum testen hinzugefügt.
Edit2: Einen Tippfehler behoben.




Schau mal bei meinem Projekt vorbei. Vielleicht ist das ja was für dich MyStartPanel - Deine persönliche Startseite mit deinen Favoriten
Auf der Suche nach einem guten Vokabeltrainer? Vokabeltrainer Cramfire - Schnell und effektiv Vokabeln lernen

Post wurde schon 3x editiert, das letzte mal am 28.06.2016 um 23:01 von DingsDaBums
28.06.2016, 22:52 Profil | PM | E-Mail  
MapleMon
Mitglied
Neuling


Dabei seit: 15.11.2017
Herkunft: keine Angabe
Posts: 4
      Zitat | Bearbeiten

Danke, der letzte Post ist sehr hilfreich gewesen.


15.11.2017, 17:34 Profil | PM | E-Mail  
Seiten (1):  1 
PHP-Support.de » PC-Ecke » Internet allgemein » Die Adblock-"Challenge"   

Neues Thema | Antworten   


Powered by Command Board 1.0 - Beta 2.0 © 2004-08 PHP-Einfach | Impressum | Datenschutz