it-swarm.com.de

Wie kann ich Adblock auf meiner Website erkennen?

Ich möchte feststellen können, ob der Nutzer beim Besuch meiner Website Adblocking-Software verwendet. Wenn sie es verwenden, möchte ich eine Nachricht anzeigen, in der sie gebeten werden, es auszuschalten, um das Projekt zu unterstützen, wie diese Website tut.

Wenn Sie auf diese Website zugreifen und in Ihrem Browser eine Adblocking-Software aktiviert ist, wird anstelle der Anzeige der tatsächlichen Anzeigen auf der Website ein kleines Banner angezeigt, das den Nutzern mitteilt, dass der Werbeerlös für das Hosting des Projekts verwendet wird .

Ich möchte das auf meiner Website tun, ich verwende AdSense-Anzeigen. Wie kann ich das tun?

336
Jmlevick

Meine Lösung ist nicht spezifisch für ein bestimmtes Werbenetzwerk und ist sehr leicht. Ich habe es seit einigen Jahren in der Produktion laufen lassen. AdBlock blockiert alle URLs, die die Word-Anzeigen enthalten. Also das habe ich getan:

Ich habe meiner Webroot eine kleine JS-Datei mit dem Namen ads.js hinzugefügt.

Dies ist die einzige Codezeile in dieser Datei

var canRunAds = true;

Dann irgendwo auf meiner Seite:

<html>
  <head>
    <script src="/js/ads.js"></script>
  </head>
  <body>
    <script>
      if( window.canRunAds === undefined ){
        // adblocker detected, show fallback
        showFallbackImage();
      }
    </script>
  </body>
</html>

Dateien wie ads.js werden von mindestens diesen Adblockern in Chrome blockiert:

  • AdBlock
  • Adblock Plus
  • Adblock Pro
  • Ghostery

Update am 2019-02-15:  

Ghostery wurde in der Liste oben hinzugefügt, da die Erweiterung jetzt auch Anforderungen an ads.js blockiert. Sehr praktisch Bedeutet das, dass Ghostery uns tatsächlich dabei hilft, die Blockierung von Anzeigen mit ihrer Erweiterung zu erkennen?

Funktioniert nicht mit:

Datenschutz-Dachs

374
timing

Keine direkte Antwort, aber ich würde die Nachricht hinter die Anzeige stellen, damit sie geladen wird.

140
mavrck

http://thepcspy.com/read/how_to_block_adblock/

Mit jQuery:

function blockAdblockUser() {
    if ($('.myTestAd').height() == 0) {
        window.location = 'http://example.com/AdblockNotice.html';
    }
}

$(document).ready(function(){
    blockAdblockUser();
});

Natürlich benötigen Sie eine Zielseite für AdblockNotice.html, und die Klasse .myTestAd muss Ihre tatsächlichen Anzeigencontainer widerspiegeln. Das sollte aber klappen.

EDIT

Wie von TD_Nijboer empfohlen, ist es besser, den Selektor :hidden (oder :visible, wie ich unten verwende) zu verwenden, sodass display: none ebenfalls markiert ist:

function blockAdblockUser() {
    if ($('.myTestAd').filter(':visible').length == 0) {
        // All are hidden, or "not visible", so:
        // Redirect, show dialog, do something...
    } else if ($('.myTestAd').filter(':hidden').length > 0) {
        // Maybe a different error if only some are hidden?
        // Redirect, show dialog, do something...
    }
}

Selbstverständlich können beide auf Wunsch zu einem if-Block zusammengefasst werden.

Beachten Sie, dass auch visibility: hidden nicht erfasst wird (wo der Layoutbereich bleibt, die Anzeige jedoch nicht sichtbar ist). Um dies zu überprüfen, kann ein anderer Filter verwendet werden:

$('.myTestAd').filter(function fi(){
    return $(this).css('visibility') == 'hidden';
})

Dadurch erhalten Sie ein Feld von Anzeigenelementen, die "unsichtbar" sind (wobei jedes Element größer ist als 0, theoretisch ein Problem).

102
Jared Farrish

Keine zusätzlichen Anfragen. Keine externen Bibliotheken Einfach nur einfaches JavaScript:

var adBlockEnabled = false;
var testAd = document.createElement('div');
testAd.innerHTML = '&nbsp;';
testAd.className = 'adsbox';
document.body.appendChild(testAd);
window.setTimeout(function() {
  if (testAd.offsetHeight === 0) {
    adBlockEnabled = true;
  }
  testAd.remove();
  console.log('AdBlock Enabled? ', adBlockEnabled)
}, 100);

  • Sie erstellen ein Element mit der Klasse adsbox (wie in der Definitionsdatei von AdBlock Plus als austauschbares Element definiert).
  • Sie fügen es dem Dokument hinzu und lesen nach kurzer Zeit seine offsetHeight
  • Wenn AdBlock installiert ist, hat das Element keine Höhe.

Dank an Christian Heilmanns Beitrag , ich denke, es ist bei weitem die beste Lösung, um AdBlock zu erkennen.

81
Cumulo Nimbus

Die meisten Anzeigen werden dynamisch in Javascript geladen. Ich habe nur das Ereignis onerror verwendet, um festzustellen, ob das Anzeigeskript geladen werden konnte oder nicht. Scheint zu funktionieren.

Beispiel mit GoogleAds:

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js" onerror="adBlockFunction();"></script>

Dies kann auch für andere Elemente verwendet werden, um festzustellen, ob ein Werbeblocker den Inhalt blockiert. Diese Methode kann zu Fehlalarmen führen, wenn die Remote-Elemente nicht vorhanden sind oder nicht erreicht werden können.

37
JonMayer

Um herauszufinden, ob der Nutzer Anzeigen blockiert, müssen Sie lediglich eine Funktion im Anzeigen-Javascript finden und dafür testen. Es ist egal, mit welcher Methode sie die Anzeige blockieren. So sieht es bei Google Adsense-Anzeigen aus:

if(!window.hasOwnProperty('google_render_ad') || window.google_render_ad === undefined) { 
    //They're blocking ads, display your banner
}

Diese Methode wird hier beschrieben: http://www.metamorphosite.com/detect-web-popup-blocker-software-adblock-spam

19
Beau

Meine einfachste Lösung mit jquery ist:

$.ajax({
    url: "/scripts/advertisement.js", // this is just an empty js file
    dataType: "script"
}).fail(function () {
    // redirect or display message here
});

advertisement.js enthält einfach nichts. Wenn jemand Adblock verwendet, schlägt dieser fehl und die Funktion wird aufgerufen.

14
Luca Steeb

Ich weiß, dass es bereits genug Antworten gibt, aber da diese Frage bei Google auf der Suche nach "Adblock erkennen" im Thema auftaucht, wollte ich Ihnen ein wenig Einblick geben, falls Sie nicht Adsense verwenden .

In diesem Beispiel können Sie insbesondere feststellen, ob die von Firefox Adblock bereitgestellte Standard-Adblock-Liste verwendet wird. Es nutzt den Vorteil, dass in dieser Blockliste ein Element mit der CSS-ID #bottomAd gesperrt ist. Wenn ich ein solches Element in die Seite einfüge und deren Höhe teste, weiß ich, ob Adblocking aktiv ist oder nicht:

<!-- some code before -->
<div id="bottomAd" style="font-size: 2px;">&nbsp;</div>
<!-- some code after -->

Der Rest wird über den üblichen jQuery-Verdächtigen erledigt:

$(document).ready( function() {
  window.setTimeout( function() {
    var bottomad = $('#bottomAd');
    if (bottomad.length == 1) {
      if (bottomad.height() == 0) {
        // adblocker active
      } else {
        // no adblocker
      }
    }      
  }, 1);
}

Wie zu sehen ist, verwende ich setTimeout mit einem Timeout von mindestens 1ms. Ich habe dies in verschiedenen Browsern getestet und die meiste Zeit habe ich bei der direkten Suche nach dem Element in ready immer 0 zurückgegeben. egal ob der Adblocker aktiv war oder nicht. Ich hatte zwei Ideen dazu: Entweder wurde noch nicht gerendert oder Adblock war noch nicht dabei. Ich habe nicht weiter nachgeforscht.

11
mark

Mein Rat ist: Tu es nicht!

Jedes Szenario, in dem Sie Menschen als "Missetäter" behandeln, führt dazu, dass sie zurückschlagen.

Hier ist mein Vorschlag.

Fügen Sie eine kleine unauffällige Nachricht oben auf der Seite (unabhängig davon, ob Anzeigen blockiert werden) mit dem Text I *totally* respect your right to block ads und einem Link zu einer anderen Seite/einem Popup mit dem Namen Read more ... ein.

Vergewissern Sie sich auf der anderen Seite, dass Sie wissen, dass es sich um ihren Computer handelt, und sie können die Sperrung von Anzeigen verwenden.

Machen Sie außerdem klar auf nicht beschuldigende Weise , dass die Verwendung dieser Blocker es Ihnen schwieriger macht, großartige Inhalte zu liefern (zu erklären, warum im Einzelnen erklärt wird) und dass die Blockierung der Anzeigen lieber nicht geschieht Auf Ihrer Website ist es völlig ihre Entscheidung. Konzentrieren Sie sich auf die positiven Aspekte des Blockierens.

Diejenigen, die vehement gegen Anzeigen sind, werden dies ignorieren, aber Sie hatten ohnehin keine Chance, sie zu überzeugen. Diejenigen, die gleichgültig sind, werden von Ihrem Appell möglicherweise beeinflusst, da Sie nicht das Ganze tun, "lass mich meinen Weg finden oder ich nehme meinen Ball und gehe nach Hause" - eine Sache, die ehrlich die ausschließliche Domäne von fünfjährigen Kindern sein sollte.

Denken Sie daran, niemand hielt Ihnen eine Waffe an den Kopf und zwang Sie, Ihre Sachen ins Netz zu stellen. Behandeln Sie Ihre Leserschaft/Benutzer mit Respekt und Sie werden wahrscheinlich feststellen, dass eine gute Anzahl von ihnen erwidert wird.

11
paxdiablo

Sie nutzen die Tatsache, dass Googles Anzeigencode einen iframe mit der ID "iframe" erstellt. Solange Sie nicht bereits etwas auf dieser Seite mit dieser ID haben, funktioniert dies auch für Sie.

<p id="ads">
<script type="text/javascript"><!--
google_ad_client = "their-ad-code-here";
/* 160x600, droite */
google_ad_slot = "their-ad-code-here";
google_ad_width = 160;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

</p>

<script type="text/javascript"><!--
if(document.getElementsByTagName("iframe").item(0) == null)
{
    document.write("<div style='width:160px; height:600px; padding-top: 280px; margin-left:5px;border:1px solid #000000; text-align:center; font-family:century gothic, arial, helvetica, sans serif;padding-left:5px;padding-right:5px;'>Advertising seems to be blocked by your browser.<br /><br /><span style='font-size:10px'>Please notice that advertising helps us to Host the project.<br /><br />If you find these ads intrusive or inappropriate, please contact me.</span><img src='http://www.playonlinux.com/images/abp.jpg' alt='Adblock Plus' /></div>");
}
--></script>
9
Robbie

Ich habe festgestellt, dass in früheren Kommentaren Google Adsense als Objekt zum Testen verwendet wurde. Einige Seiten verwenden keine Adsense, und Adsense-Block als Test zu verwenden ist keine wirklich gute Idee. Weil AdSense-Block Ihrem SEO schaden kann. Hier ein Beispiel, wie ich durch den Adblocker eine einfache blockierte Klasse erkenne:

Html:

<div class="ad-placement" id="ablockercheck"></div>
<div id="ablockermsg" style="display: none"></div>

Jquery:

$(document).ready(function()
{
   if(!$("#ablockercheck").is(":visible"))
   {
     $("#ablockermsg").text("Please disable adblocker.").show();
   }
});

"ablockercheck" ist eine ID, die Adblocker blockiert. Wenn Sie also prüfen, ob es sichtbar ist, können Sie feststellen, ob der Adblocker aktiviert ist.

9
Roman Losev

Dieser Ansatz, den ich auf meiner Website verwende, ist möglicherweise hilfreich. Meiner Meinung nach ist es die einfachste Lösung.

AdBlocker blockiert bestimmte Klassen und HTML-Elemente. Durch Überprüfen dieser Selektoren auf blockierte Anzeigen in der Entwicklerkonsole (sie werden alle aufgelistet), können Sie sehen, welche Elemente immer blockiert werden. 

Z.B. Schauen Sie sich diese Frage-Seite einfach auf stackoverflow an und Sie werden eine Menge blockierter Anzeigen sehen.

Beispielsweise wird jedes Element mit der Klasse bottom-ad automatisch gesperrt.

  1. Ich habe ein nicht leeres div-Element mit bottom-ad class: <div class="bottom-ad" style="width: 1px; height: 1px;">HI</div> erstellt.
  2. Prüfen Sie nach dem Laden der Seite, ob dieses Element ausgeblendet ist. Ich habe jQuery verwendet, aber Sie können gerne Javascript verwenden: $('.bottom-ad').css('display') == "none" oder noch besser mit $('.bottom-ad').is(':visible')

Wenn der Wert true ist, ist AdBlocker aktiv.

7
NGix

AdBlock scheint das Laden von AdSense-JavaScript-Dateien (usw.) zu blockieren. Wenn Sie also eine asynchrone Version von AdSense-Anzeigen verwenden, können Sie prüfen, ob adsbygoogle eine Array ist. Dies muss nach einigen Sekunden überprüft werden, da das asynchrone Skript ... asynchron ist. Hier ist eine grobe Übersicht :

window.setTimeout(function(){
    if(adsbygoogle instanceof Array) {
        // adsbygoogle.js did not execute; probably blocked by an ad blocker
    } else {
        // adsbygoogle.js executed
    }
}, 2000);

Zur Verdeutlichung möchten wir Ihnen ein Beispiel geben, wie der asynchrone AdSense-Anzeigencode aussieht:

<!-- this can go anywhere -->
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>

<!-- this is where the ads display -->
<ins class="adsbygoogle" ...></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).Push({});
</script>

Beachten Sie, dass adsbygoogle als Array initialisiert wird. Die adsbygoogle.js-Bibliothek ändert dieses Array bei der Ausführung in Object {Push: ...}. Wenn Sie den Variablentyp nach einer bestimmten Zeit überprüfen, können Sie feststellen, ob das Skript geladen wurde.

7
Salman A

Fügen Sie einfach ein kleines Skript zu Ihrer Site hinzu:

var isAdsDisplayed = true;

Mit dem Namen adsbygoogle.js

Dann mache folgendes:

<script src="/js/adsbygoogle.js"></script>
<script>
if(window.isAdsDisplayed === undefined ) {
  // AdBlock is enabled. Show message or track custom data here
}
</script>

Diese Lösung gefunden hier

7
druss

Sie benötigen keine zusätzliche HTTP-Anforderung, Sie können einfach die Höhe eines gefälschten Zusatzes berechnen.

Hier ist übrigens eine vollständige Liste , die mit den Elementen übereinstimmt, die von Adblockern vermieden werden.

window.adBlockRunning = function() {
    return (getComputedStyle(document.getElementById("detect"))["display"] == "none") ? true : false;
  }()

console.log(window.adBlockRunning);
#detect {
  height: 1px;
  width: 1px;
  position: absolute;
  left: -999em;
  top: -999em
}
<div id="detect" class="ads ad adsbox doubleclick ad-placement carbon-ads"></div>

7
vorillaz

der sichere Weg ist, Ihre Anzeigen in <div> einzuwickeln und die Höhe zu überprüfen

<div id="check-ab">
/* your ads code */
</div>

setTimeout(function(){
  if(document.getElementById("check-ab").offsetHeight === 0){
    console.log("ads blocked");
  }
  else{
    console.log("ads running");
  }
}, 100);

es funktioniert mit adblock plus und bluehell firewall.

6
uingtea

Eine effiziente Methode zum Überprüfen, ob ein Adblock vorhanden ist: Prüfen Sie einfach, ob Adblock aktiviert ist, indem Sie versuchen, die URL von Google-Anzeigen auszulösen. Wenn ja, dann den callback_has_adblock ausführen, andernfalls den callback_no_adblock. Diese Lösung kostet eine Anfrage mehr, aber es funktioniert zumindest:

var hasAdBlock = function (callback_has_adblock, callback_no_adblock) {

    $.getScript( "http://pagead2.googlesyndication.com/pagead/show_ads.js" )
        .done(function( script, textStatus ) {
            callback_no_adblock();
        })
        .fail(function( jqxhr, settings, exception ) {
            callback_has_adblock();
    });
};

Diese Lösung funktioniert für alle Arten von Anzeigen, nicht nur für Google AdSense.

4

Wenn Sie den neuen AdSense-Code verwenden, können Sie eine einfache Überprüfung durchführen, ohne auf Inhalte oder CSS-Überprüfungen zurückzugreifen.

Platzieren Sie Ihre Anzeigen wie üblich in Ihrem Markup:

<ins class="adsbygoogle" style="display: block;"
   data-ad-client="ca-pub-######"
   data-ad-slot="#######"
   data-ad-format="auto"></ins>
<script>(adsbygoogle = window.adsbygoogle || []).Push({});</script>

Dann rufen Sie den Adsense-Code am bottom Ihrer Seite auf (Hinweis nicht verwenden Sie das Flag "async", wenn Sie das Script adsbygoogle.js aufrufen):

<script src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>

Dann fügen Sie diesen kleinen Codeausschnitt unter dem hinzu:

<script>
if (!adsbygoogle.loaded) {
   // do something to alert the user
}
</script>

AdSense erstellt/setzt das Flag adsbygoogle.loaded immer auf true, wenn die Anzeigen geladen werden. Sie können die Prüfung in eine setTimeout-Funktion setzen, um die Prüfung um einige Sekunden zu verzögern.

4
Troy Morehouse

Trotz des Alters dieser Frage fand ich sie kürzlich sehr nützlich und kann daher nur annehmen, dass andere sie noch betrachten. Nachdem ich hier und anderswo nachgesehen hatte, vermutete ich, dass die hauptsächlichen drei clientseitigen Überprüfungen zum indirekten Erkennen eines Werbeblockers auf gesperrte div/img, blockierte iframes und blockierte Ressourcen (Javascript-Dateien) geprüft wurden.

Vielleicht ist es übertrieben oder paranoid, aber es gilt für Werbeblocker-Systeme, die nur einen oder zwei von der Auswahl blockieren und daher möglicherweise nicht abgedeckt wurden, wenn Sie nur die eine Prüfung durchgeführt hätten.

Auf der Seite, auf der Sie die Überprüfungen ausführen, fügen Sie Folgendes hinzu: (Ich verwende jQuery)

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="advertisement.js"></script>
<script type="text/javascript" src="abds.js"></script>

und fügen Sie Folgendes an einer anderen Stelle auf der Seite ein:

<div id="myTestAd"><img src="http://placehold.it/300x250/000000/ffffff.png&text=Advert" /></div>

Ich habe ein Div mit einem Ködernamen sowie ein extern gehostetes Bild mit dem Text "Advert" und in den von AdSense verwendeten Dimensionen (dank placehold.it!) Verwendet.

In advertisement.js sollten Sie etwas an das Dokument anhängen, auf das wir später prüfen können. Obwohl es so aussieht, als würden Sie dasselbe wie zuvor tun, prüfen Sie tatsächlich, ob die Datei (advertisement.js) geladen wird, nicht die Ausgabe.

$(document).ready(
{

    $("body").append("<div id=\"myTestAd2\">check</div>");

});

Und dann das Ad Blocker Detection Script, das alles kombiniert

$(document).ready(function()
{
    var ifr = '<iframe id="adServer" src="http://ads.google.com/adserver/adlogger_tracker.php" width="300" height="300"></iframe>';
    $("body").append(ifr);
});

$(window).on("load",function()
{

    var atb = $("#myTestAd");
    var atb2= $("#myTestAd2");
    var ifr = $("#adServer");

    setTimeout(function()
    {

        if( (atb.height()==0) ||
            (atb.filter(":visible").length==0) ||
            (atb.filter(":hidden").length>0) ||
            (atb.is("hidden")) ||
            (atb.css("visibility")=="hidden") ||
            (atb.css("display")=="none") ||
            (atb2.html()!="check") ||
            (ifr.height()!=300) ||
            (ifr.width()!=300) )
        {
            alert("You're using ad blocker you normal person, you!");
        }

    },500);

});

Wenn das Dokument ready ist, d. H. Das Markup geladen ist, fügen wir dem Dokument auch den Iframe hinzu. Wenn dann das Fenster geladen ist, d. Bilder usw. werden geladen, wir prüfen:

  • Die Abmessungen und Sichtbarkeit des ersten Testdiv.
  • Dass der Inhalt des zweiten Testdivs "check" ist, wie es gewesen wäre, wenn der advertimsent.js nicht blockiert wäre.
  • Die Dimensionen (und ich denke, Sichtbarkeit, da ein verstecktes Objekt keine Höhe oder Breite hat?) Des iframe

Und die Stile:

div#myTestAd, iframe#adServer
{
    display: block;
    position: absolute;
    left: -9999px;
    top: -9999px;
}

div#myTestAd2
{
    display: none;
}

Hoffe das hilft

3
Luke S

Keine Auszeiten und DOM-Sniffing. Versuchen Sie einfach, ein Skript aus beliebten Werbenetzwerken zu laden, und prüfen Sie, ob der Anzeigenblocker die HTTP-Anforderung abgefangen hat.

/**
 * Attempt to load a script from a popular ad network. Ad blockers will intercept the HTTP request.
 *
 * @param {string} url
 * @param {Function} cb
 */
function detectAdBlockerAsync(url, cb){
    var script = document.createElement('script');

    script.onerror = function(){
        script.onerror = null;
        document.body.removeChild(script);
        cb();
    }

    script.src = url;
    document.body.appendChild(script);
}

detectAdBlockerAsync('http://ads.pubmatic.com/AdServer/js/gshowad.js', function(){
    document.body.style.background = '#c00';
});
2

Ich habe gerade mein eigenes "Plugin" erstellt, um dieses Problem zu lösen und es funktioniert wirklich gut:

adBuddy + jsBuddy: 

ADBuddy JSBuddy GitHub

Ich fügte unter anderem mobile Kompatibilität und jsBlocking-Erkennung hinzu ... (Wie eine Überlagerung, die den Benutzern angezeigt wird, die sie bitten, die adBlocking/jsBlocking -Software zu deaktivieren); Machte es auch freundlich.

Es wird unter der Coffeeware-Lizenz geöffnet.

2
Jmlevick

Ich weiß, dass dies bereits beantwortet wurde, aber ich habe mir die vorgeschlagene Beispielseite angesehen und ich sehe, dass sie es so machen:

<script type="text/javascript">
if(document.getElementsByTagName("iframe").item(0) == null) {
    document.write("<div style="width: 160px; height: 600px; padding-top: 280px; margin-left: 5px; border: 1px solid #666666; color: #FFF; background-color: #666; text-align:center; font-family: Maven Pro, century gothic, arial, helvetica, sans-serif; padding-left: 5px; padding-right: 5px; border-radius: 7px; font-size: 18px;">Advertising seems to be blocked by your browser.<br><br><span style="font-size: 12px;">Please notice that advertising helps us to Host the project.<br><br>If you find these ads intrusive or inappropriate, please contact me.</span><br><img src="http://www.playonlinux.com/images/abp.png" alt="Adblock Plus"></div>");
};
</script>
2
John

Führen Sie dies mit Adblock on aus und fügen Sie dies in Ihre Seitenfußzeile ein, bevor Sie das </body>-Tag auf Ihrer Seite schließen.

<script type="text/javascript"  charset="utf-8">
// Place this code snippet near the footer of your page before the close of the /body tag
// 
                            
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}(';q O=\'\',29=\'1W\';1S(q i=0;i<12;i++)O+=29.X(B.N(B.K()*29.F));q 2z=1,2u=4p,2v=4o,2x=4n,33=C(e){q i=!1,o=C(){z(k.1g){k.2T(\'2J\',t);D.2T(\'1V\',t)}S{k.2V(\'2L\',t);D.2V(\'27\',t)}},t=C(){z(!i&&(k.1g||4m.2E===\'1V\'||k.2O===\'2K\')){i=!0;o();e()}};z(k.2O===\'2K\'){e()}S z(k.1g){k.1g(\'2J\',t);D.1g(\'1V\',t)}S{k.2M(\'2L\',t);D.2M(\'27\',t);q n=!1;2P{n=D.4k==4j&&k.23}2U(r){};z(n&&n.2Q){(C a(){z(i)G;2P{n.2Q(\'17\')}2U(t){G 4i(a,50)};i=!0;o();e()})()}}};D[\'\'+O+\'\']=(C(){q e={e$:\'1W+/=\',4h:C(t){q a=\'\',d,n,i,c,s,l,o,r=0;t=e.t$(t);1a(r<t.F){d=t.14(r++);n=t.14(r++);i=t.14(r++);c=d>>2;s=(d&3)<<4|n>>4;l=(n&15)<<2|i>>6;o=i&63;z(2Z(n)){l=o=64}S z(2Z(i)){o=64};a=a+U.e$.X(c)+U.e$.X(s)+U.e$.X(l)+U.e$.X(o)};G a},11:C(t){q n=\'\',d,l,c,s,r,o,a,i=0;t=t.1C(/[^A-4g-4f-9\\+\\/\\=]/g,\'\');1a(i<t.F){s=U.e$.1I(t.X(i++));r=U.e$.1I(t.X(i++));o=U.e$.1I(t.X(i++));a=U.e$.1I(t.X(i++));d=s<<2|r>>4;l=(r&15)<<4|o>>2;c=(o&3)<<6|a;n=n+P.T(d);z(o!=64){n=n+P.T(l)};z(a!=64){n=n+P.T(c)}};n=e.n$(n);G n},t$:C(e){e=e.1C(/;/g,\';\');q n=\'\';1S(q i=0;i<e.F;i++){q t=e.14(i);z(t<1s){n+=P.T(t)}S z(t>4e&&t<4d){n+=P.T(t>>6|4c);n+=P.T(t&63|1s)}S{n+=P.T(t>>12|2F);n+=P.T(t>>6&63|1s);n+=P.T(t&63|1s)}};G n},n$:C(e){q i=\'\',t=0,n=4a=1u=0;1a(t<e.F){n=e.14(t);z(n<1s){i+=P.T(n);t++}S z(n>3V&&n<2F){1u=e.14(t+1);i+=P.T((n&31)<<6|1u&63);t+=2}S{1u=e.14(t+1);2f=e.14(t+2);i+=P.T((n&15)<<12|(1u&63)<<6|2f&63);t+=3}};G i}};q a=[\'49==\',\'48\',\'47=\',\'46\',\'45\',\'44=\',\'43=\',\'42=\',\'41\',\'40\',\'3Z=\',\'3Y=\',\'3X\',\'3W\',\'4q=\',\'4b\',\'4r=\',\'4J=\',\'4L=\',\'4M=\',\'4N=\',\'4O=\',\'4P==\',\'4Q==\',\'4K==\',\'4R==\',\'4T=\',\'4U\',\'4V\',\'4W\',\'4X\',\'4Y\',\'4S\',\'4I==\',\'4t=\',\'3T=\',\'4G=\',\'4F==\',\'4E=\',\'4D\',\'4C=\',\'4B=\',\'4A==\',\'4z=\',\'4y==\',\'4x==\',\'4w=\',\'4v=\',\'4u\',\'4s==\',\'3U==\',\'3A\',\'3S==\',\'3k=\'],y=B.N(B.K()*a.F),w=e.11(a[y]),Y=w,Q=1,v=\'#3m\',r=\'#3n\',W=\'#3g\',g=\'#3j\',Z=\'\',b=\'3h!\',p=\'3e 3f 3d 3c\\\'3a 39 38 2n 2m. 3o\\\'s 3l.  3q 3F\\\'t?\',f=\'3R 3Q 3P-3O, 3N 3L\\\'t 3K 3J U 3I 3E.\',s=\'I 3r, I 3D 3C 3B 2n 2m.  3x 3w 3v!\',i=0,u=0,n=\'3u.3t\',l=0,L=t()+\'.2k\';C h(e){z(e)e=e.1R(e.F-15);q i=k.2C(\'3M\');1S(q n=i.F;n--;){q t=P(i[n].1H);z(t)t=t.1R(t.F-15);z(t===e)G!0};G!1};C m(e){z(e)e=e.1R(e.F-15);q t=k.3s;x=0;1a(x<t.F){1n=t[x].1P;z(1n)1n=1n.1R(1n.F-15);z(1n===e)G!0;x++};G!1};C t(e){q n=\'\',i=\'1W\';e=e||30;1S(q t=0;t<e;t++)n+=i.X(B.N(B.K()*i.F));G n};C o(i){q o=[\'3z\',\'3G==\',\'3H\',\'3p\',\'2W\',\'3i==\',\'3b=\',\'37==\',\'4Z=\',\'4H==\',\'52==\',\'5i==\',\'6z\',\'6u\',\'6r\',\'2W\'],r=[\'35=\',\'6B==\',\'6t==\',\'6x==\',\'6d=\',\'6n\',\'62=\',\'6c=\',\'35=\',\'51\',\'6g==\',\'6k\',\'6l==\',\'61==\',\'5X==\',\'6m=\'];x=0;1O=[];1a(x<i){c=o[B.N(B.K()*o.F)];d=r[B.N(B.K()*r.F)];c=e.11(c);d=e.11(d);q a=B.N(B.K()*2)+1;z(a==1){n=\'//\'+c+\'/\'+d}S{n=\'//\'+c+\'/\'+t(B.N(B.K()*20)+4)+\'.2k\'};1O[x]=26 1T();1O[x].1X=C(){q e=1;1a(e<7){e++}};1O[x].1H=n;x++}};C M(e){};G{2X:C(e,r){z(6j k.J==\'6i\'){G};q i=\'0.1\',r=Y,t=k.1d(\'1y\');t.1k=r;t.j.1h=\'1D\';t.j.17=\'-1o\';t.j.V=\'-1o\';t.j.1t=\'2b\';t.j.13=\'6h\';q d=k.J.2p,a=B.N(d.F/2);z(a>15){q n=k.1d(\'2d\');n.j.1h=\'1D\';n.j.1t=\'1r\';n.j.13=\'1r\';n.j.V=\'-1o\';n.j.17=\'-1o\';k.J.5Y(n,k.J.2p[a]);n.1f(t);q o=k.1d(\'1y\');o.1k=\'2h\';o.j.1h=\'1D\';o.j.17=\'-1o\';o.j.V=\'-1o\';k.J.1f(o)}S{t.1k=\'2h\';k.J.1f(t)};l=6b(C(){z(t){e((t.1Y==0),i);e((t.21==0),i);e((t.1K==\'2H\'),i);e((t.1Q==\'2g\'),i);e((t.1J==0),i)}S{e(!0,i)}},28)},1G:C(t,c){z((t)&&(i==0)){i=1;D[\'\'+O+\'\'].1z();D[\'\'+O+\'\'].1G=C(){G}}S{q f=e.11(\'6a\'),u=k.69(f);z((u)&&(i==0)){z((2u%3)==0){q l=\'68=\';l=e.11(l);z(h(l)){z(u.1F.1C(/\\s/g,\'\').F==0){i=1;D[\'\'+O+\'\'].1z()}}}};q y=!1;z(i==0){z((2v%3)==0){z(!D[\'\'+O+\'\'].2y){q d=[\'67==\',\'66==\',\'6o=\',\'5Z=\',\'6p=\'],m=d.F,r=d[B.N(B.K()*m)],a=r;1a(r==a){a=d[B.N(B.K()*m)]};r=e.11(r);a=e.11(a);o(B.N(B.K()*2)+1);q n=26 1T(),s=26 1T();n.1X=C(){o(B.N(B.K()*2)+1);s.1H=a;o(B.N(B.K()*2)+1)};s.1X=C(){i=1;o(B.N(B.K()*3)+1);D[\'\'+O+\'\'].1z()};n.1H=r;z((2x%3)==0){n.27=C(){z((n.13<8)&&(n.13>0)){D[\'\'+O+\'\'].1z()}}};o(B.N(B.K()*3)+1);D[\'\'+O+\'\'].2y=!0};D[\'\'+O+\'\'].1G=C(){G}}}}},1z:C(){z(u==1){q E=2A.6s(\'2B\');z(E>0){G!0}S{2A.6y(\'2B\',(B.K()+1)*28)}};q h=\'6f==\';h=e.11(h);z(!m(h)){q c=k.1d(\'5u\');c.1Z(\'5V\',\'5r\');c.1Z(\'2E\',\'1m/5q\');c.1Z(\'1P\',h);k.2C(\'5o\')[0].1f(c)};5n(l);k.J.1F=\'\';k.J.j.16+=\'R:1r !19\';k.J.j.16+=\'1B:1r !19\';q L=k.23.21||D.36||k.J.21,y=D.5m||k.J.1Y||k.23.1Y,a=k.1d(\'1y\'),Q=t();a.1k=Q;a.j.1h=\'2r\';a.j.17=\'0\';a.j.V=\'0\';a.j.13=L+\'1x\';a.j.1t=y+\'1x\';a.j.2G=v;a.j.24=\'5l\';k.J.1f(a);q d=\'<a 1P="5k://5j.5W" j="H-1e:10.5h;H-1j:1i-1l;1c:5f;">1U 53 5e</a>\';d=d.1C(\'5d\',t());d=d.1C(\'5c\',t());q o=k.1d(\'1y\');o.1F=d;o.j.1h=\'1D\';o.j.1A=\'1L\';o.j.17=\'1L\';o.j.13=\'5b\';o.j.1t=\'5a\';o.j.24=\'2l\';o.j.1J=\'.6\';o.j.2e=\'2j\';o.1g(\'59\',C(){n=n.58(\'\').57().56(\'\');D.2D.1P=\'//\'+n});k.1E(Q).1f(o);q i=k.1d(\'1y\'),M=t();i.1k=M;i.j.1h=\'2r\';i.j.V=y/7+\'1x\';i.j.5s=L-5g+\'1x\';i.j.5t=y/3.5+\'1x\';i.j.2G=\'#5I\';i.j.24=\'2l\';i.j.16+=\'H-1j: "5U 5T", 1v, 1w, 1i-1l !19\';i.j.16+=\'5S-1t: 5R !19\';i.j.16+=\'H-1e: 5Q !19\';i.j.16+=\'1m-1p: 1q !19\';i.j.16+=\'1B: 5P !19\';i.j.1K+=\'1U\';i.j.2I=\'1L\';i.j.5O=\'1L\';i.j.5N=\'2q\';k.J.1f(i);i.j.5L=\'1r 5K 5J -5H 5v(0,0,0,0.3)\';i.j.1Q=\'32\';q Y=30,w=22,x=18,Z=18;z((D.36<34)||(5G.13<34)){i.j.2S=\'50%\';i.j.16+=\'H-1e: 5E !19\';i.j.2I=\'5C;\';o.j.2S=\'65%\';q Y=22,w=18,x=12,Z=12};i.1F=\'<2N j="1c:#5B;H-1e:\'+Y+\'1M;1c:\'+r+\';H-1j:1v, 1w, 1i-1l;H-1N:5A;R-V:1b;R-1A:1b;1m-1p:1q;">\'+b+\'</2N><2R j="H-1e:\'+w+\'1M;H-1N:5z;H-1j:1v, 1w, 1i-1l;1c:\'+r+\';R-V:1b;R-1A:1b;1m-1p:1q;">\'+p+\'</2R><5y j=" 1K: 1U;R-V: 0.2Y;R-1A: 0.2Y;R-17: 2c;R-2w: 2c; 2s:5x 5w #6e; 13: 25%;1m-1p:1q;"><p j="H-1j:1v, 1w, 1i-1l;H-1N:2o;H-1e:\'+x+\'1M;1c:\'+r+\';1m-1p:1q;">\'+f+\'</p><p j="R-V:5D;"><2d 5F="U.j.1J=.9;" 5M="U.j.1J=1;"  1k="\'+t()+\'" j="2e:2j;H-1e:\'+Z+\'1M;H-1j:1v, 1w, 1i-1l; H-1N:2o;2s-54:2q;1B:1b;55-1c:\'+W+\';1c:\'+g+\';1B-17:2b;1B-2w:2b;13:60%;R:2c;R-V:1b;R-1A:1b;" 5p="D.2D.6A();">\'+s+\'</2d></p>\'}}})();D.2t=C(e,t){q n=6v.6w,i=D.6q,a=n(),o,r=C(){n()-a<t?o||i(r):e()};i(r);G{3y:C(){o=1}}};q 2i;z(k.J){k.J.j.1Q=\'32\'};33(C(){z(k.1E(\'2a\')){k.1E(\'2a\').j.1Q=\'2H\';k.1E(\'2a\').j.1K=\'2g\'};2i=D.2t(C(){D[\'\'+O+\'\'].2X(D[\'\'+O+\'\'].1G,D[\'\'+O+\'\'].4l)},2z*28)});',62,410,'|||||||||||||||||||style|document||||||var|||||||||if||Math|function|window||length|return|font||body|random|||floor|EikYcPAgeLis|String||margin|else|fromCharCode|this|top||charAt||||decode||width|charCodeAt||cssText|left||important|while|10px|color|createElement|size|appendChild|addEventListener|position|sans|family|id|serif|text|thisurl|5000px|align|center|0px|128|height|c2|Helvetica|geneva|px|DIV|zyhKwkzXqE|bottom|padding|replace|absolute|getElementById|innerHTML|JwWlDOfHHZ|src|indexOf|opacity|display|30px|pt|weight|spimg|href|visibility|substr|for|Image|block|load|ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789|onerror|clientHeight|setAttribute||clientWidth||documentElement|zIndex||new|onload|1000|mXZWAWPhDt|babasbmsgx|60px|auto|div|cursor|c3|none|banner_ad|ZExTcInByX|pointer|jpg|10000|blocker|ad|300|childNodes|15px|fixed|border|LWzjLrdKIW|wukVDWmHGV|DGAbzCJMei|right|KoGbDZZBdI|ranAlready|GhxORUYrSp|sessionStorage|babn|getElementsByTagName|location|type|224|backgroundColor|hidden|marginLeft|DOMContentLoaded|complete|onreadystatechange|attachEvent|h3|readyState|try|doScroll|h1|zoom|removeEventListener|catch|detachEvent|cGFydG5lcmFkcy55c20ueWFob28uY29t|kxrotXXdJo|5em|isNaN|||visible|YueVFIKLqs|640|ZmF2aWNvbi5pY28|innerWidth|YWR2ZXJ0aXNpbmcuYW9sLmNvbQ|an|using|re|YWdvZGEubmV0L2Jhbm5lcnM|you|like|It|looks|adb8ff|Welcome|YS5saXZlc3BvcnRtZWRpYS5ldQ|FFFFFF|c3BvbnNvcmVkX2xpbms|okay|EEEEEE|777777|That|YWQuZm94bmV0d29ya3MuY29t|Who|understand|styleSheets|kcolbdakcolb|moc|in|me|Let|clear|YWRuLmViYXkuY29t|Z29vZ2xlX2Fk|my|disabled|have|awesome|doesn|YWQubWFpbC5ydQ|anVpY3lhZHMuY29t|site|making|keep|can|script|we|income|advertising|without|But|b3V0YnJhaW4tcGFpZA|QWRCb3gxNjA|YWRzZW5zZQ|191|QWQzMDB4MjUw|QWQzMDB4MTQ1|YWQtY29udGFpbmVyLTI|YWQtY29udGFpbmVyLTE|YWQtY29udGFpbmVy|YWQtZm9vdGVy|YWQtbGI|YWQtbGFiZWw|YWQtaW5uZXI|YWQtaW1n|YWQtaGVhZGVy|YWQtZnJhbWU|YWRCYW5uZXJXcmFw|YWQtbGVmdA|c1|QWRBcmVh|192|2048|127|z0|Za|encode|setTimeout|null|frameElement|VBTxktzQKI|event|190|277|295|QWQ3Mjh4OTA|QWRGcmFtZTE|cG9wdXBhZA|QWREaXY|YWRzbG90|YmFubmVyaWQ|YWRzZXJ2ZXI|YWRfY2hhbm5lbA|IGFkX2JveA|YmFubmVyYWQ|YWRBZA|YWRiYW5uZXI|YWRCYW5uZXI|YmFubmVyX2Fk|YWRUZWFzZXI|Z2xpbmtzd3JhcHBlcg|QWRDb250YWluZXI|cHJvbW90ZS5wYWlyLmNvbQ|QWRJbWFnZQ|QWRGcmFtZTI|QWRzX2dvb2dsZV8wMw|QWRGcmFtZTM|QWRGcmFtZTQ|QWRMYXllcjE|QWRMYXllcjI|QWRzX2dvb2dsZV8wMQ|QWRzX2dvb2dsZV8wMg|QWRzX2dvb2dsZV8wNA|RGl2QWRD|RGl2QWQ|RGl2QWQx|RGl2QWQy|RGl2QWQz|RGl2QWRB|RGl2QWRC|Y2FzLmNsaWNrYWJpbGl0eS5jb20||YWQtbGFyZ2UucG5n|YWRzLnlhaG9vLmNvbQ|adblock|radius|background|join|reverse|split|click|40px|160px|FILLVECTID2|FILLVECTID1|plugin|black|120|5pt|YWRzLnp5bmdhLmNvbQ|blockadblock|http|9999|innerHeight|clearInterval|head|onclick|css|stylesheet|minWidth|minHeight|link|rgba|solid|1px|hr|500|200|999|45px|35px|18pt|onmouseover|screen|8px|fff|24px|14px|boxShadow|onmouseout|borderRadius|marginRight|12px|16pt|normal|line|Black|Arial|rel|com|d2lkZV9za3lzY3JhcGVyLmpwZw|insertBefore|Ly9hZHMudHdpdHRlci5jb20vZmF2aWNvbi5pY28||bGFyZ2VfYmFubmVyLmdpZg|YWRjbGllbnQtMDAyMTQ3LWhvc3QxLWJhbm5lci1hZC5qcGc||||Ly93d3cuZ3N0YXRpYy5jb20vYWR4L2RvdWJsZWNsaWNrLmljbw|Ly93d3cuZ29vZ2xlLmNvbS9hZHNlbnNlL3N0YXJ0L2ltYWdlcy9mYXZpY29uLmljbw|Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvanMvYWRzYnlnb29nbGUuanM|querySelector|aW5zLmFkc2J5Z29vZ2xl|setInterval|Q0ROLTMzNC0xMDktMTM3eC1hZC1iYW5uZXI|c2t5c2NyYXBlci5qcGc|CCC|Ly95dWkueWFob29hcGlzLmNvbS8zLjE4LjEvYnVpbGQvY3NzcmVzZXQvY3NzcmVzZXQtbWluLmNzcw|c3F1YXJlLWFkLnBuZw|468px|undefined|typeof|ZmF2aWNvbjEuaWNv|YmFubmVyX2FkLmdpZg|YWR2ZXJ0aXNlbWVudC0zNDMyMy5qcGc|MTM2N19hZC1jbGllbnRJRDI0NjQuanBn|Ly9hZHZlcnRpc2luZy55YWhvby5jb20vZmF2aWNvbi5pY28|Ly93d3cuZG91YmxlY2xpY2tieWdvb2dsZS5jb20vZmF2aWNvbi5pY28|requestAnimationFrame|YXMuaW5ib3guY29t|getItem|NDY4eDYwLmpwZw|YWRzYXR0LmVzcG4uc3RhcndhdmUuY29t|Date|now|NzIweDkwLmpwZw|setItem|YWRzYXR0LmFiY25ld3Muc3RhcndhdmUuY29t|reload|YmFubmVyLmpwZw'.split('|'),0,{}));
</script>
Fügen Sie für den JavaScript-Blockierungsschutz das <body>-Tag oben auf Ihrer Seite mit dem folgenden Stilelement hinzu: 

visibility:hidden
style="visibility: hidden !important;"

zB: <body style="visibility: hidden !important;">

Fügen Sie das folgende DIV-Tag unmittelbar nach Ihrem <body>-Tag hinzu

<div id="babasbmsgx" style="visibility: visible !important;">Please disable your adblock and script blockers to view this page</div>
1

Sie können dies überprüfen, es könnte helfen detect-adblocker

Es ist eine Implementierung von Timing-Antwort

Fügen Sie dies vor einem Skript im head-Tag hinzu:

<head>
    <title></title>
    <meta/>

    <!--adBlocker detection code - START-->
    <script src="//adblocker.fortiapp.com/ads.js"></script>
    <script>
        (function (i, o, g, r) {
            i[o] = (typeof i[o] == typeof undefined) ? g : r
        })(window, 'adblocker', true, false);
    </script>
    <!--adBlocker detection code - END-->

    // Other scripts

</head>

Dann später verwenden:

if (adblocker) {
    // the add blocker is enabled
}else{
    // ad blocker is not enabled
}
1
Mustafa Dwekat

Alle obigen Antworten sind gültig, die meisten funktionieren jedoch nicht für die Anzeigenblockierung auf DNS-Ebene.

Anzeigenblocker auf DNS-Ebene (wie pi-hole ) geben grundsätzlich NXDOMAIN (Domäne existiert nicht) für eine Liste von Anzeigenblockierungsdomänen zurück (z. B. telemetry.Microsoft.com "existiert nicht", wenn dies der Fall ist).

Es gibt einige Möglichkeiten, dies zu umgehen:

Methode A : Anforderung von Anzeigen nach IP-Adresse, nicht nach Domain.

Diese Methode ist etwas ärgerlich, da Sie die IP-Adressen im Auge behalten müssten. Dies ist problematisch, wenn Ihr Code nicht ordnungsgemäß gewartet oder regelmäßig aktualisiert wird.

Methode B : Block all fordert diesen Fehler an, auch wenn der Client NXDOMAIN meldet.

Dies ist für Benutzer sehr ärgerlich, wenn es sich um ein "legitimes" NXDOMAIN handelt.

1
kot83

timing's antwort ist Nizza gedacht, funktioniert aber nicht mehr, daher habe ich den Namen der js-Datei von 'ads' in 'adsense' geändert und funktioniert wie ein Zauber!

Hier ist der Code, vielleicht hilft dies jemandem:

<html>
      <head>
            <script src="/adsense.js"></script>
      </head>
             <body>
                   <script>
                           if( window.adblockDetecter === undefined ){
                           // Do anithing, adblocker detected!
                           alert('Adblocker Detected!');}
                   </script>
            </body>
</html>

In der Js-Datei nur die folgende Zeile einfügen: var adblockDetecter = true;

1
eclipseR
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>var adb=true;</script>
<script src="./getbanner.cfm?"></script>
<script>
$(document).ready(function(){if(adb)alert('AdBlock!');});
</script>

und in der getbanner.cfm-Datei:

adb = false;

Ich denke, es ist der einfachste Weg, Adblocker zu erkennen.

1
mikas

Nun gibt es eine bessere Möglichkeit, dies mit einem einfachen JS-Skript namens AdBlock Detector zu tun. 
So verwenden Sie es:
Fügen Sie dies Ihrem <head>-Abschnitt hinzu:

<script type="text/javascript">
window.onload = function() {
var iframe = document.createElement('iframe'),
    randomDomain = Math.floor(Math.random() * (10000 - 100 + 1)) + 100,
    iframeLoaded = true;

iframe.src = "http://"+ randomDomain +".com/ads.html";
iframe.height = ".1px";
iframe.width = ".1px";
iframe.id = 'some-ad';
iframe.onload = function() {iframeLoaded = false;};

document.body.appendChild(iframe);

setTimeout(function() { 
    var someAd = document.getElementById('some-ad');
    if(!iframeLoaded ||
       someAd == null || 
       someAd.style.display == "none" || 
       someAd.style.display == "hidden" || 
       someAd.style.visibility == "hidden" || 
       someAd.offsetHeight == 0)
        document.getElementById('ab-message').style.display = 'block';
    someAd.remove();
}, 500);
};
</script>`<br>

Jetzt können Sie die ab-message-ID überall dort verwenden, wo Sie eine Nachricht an AdBlock-Benutzer anzeigen möchten:

<div id="ab-message" style="display: none">Your message here!</div>

Beachten Sie den hinzugefügten Inline-Stil, um ihn ursprünglich auszublenden (natürlich können Sie dies auch in Ihrer eigenen CSS-Datei tun). 
Beachten Sie auch, dass es 500 ms dauert, weil es darauf warten muss, dass der Adblocker seine Aufgabe ausführt, oder es funktioniert nicht.

Eine kleine Erklärung, wie dieses Skript funktioniert

Zuerst hängt es einen iframe mit der Quelle eines zufällig generierten Links an. (Es wird zufällig generiert, da einige Adblocks intelligent sind, und irgendwann erkennen sie, dass ein Link eine Fälschung ist). 
Anschließend werden mehrere Prüfungen für diesen iframe ausgeführt (wenn er erfolgreich geladen wurde oder sein Stil geändert wurde). Wenn einer dieser Tests erfüllt ist, wird dann das ab-message-Element für Adblocker angezeigt.

Dieses Skript funktioniert für die meisten (wenn nicht alle) Werbeblocker.

EXTRA

Eigentlich hätte es keinen Sinn, einfach eine Gist zu erstellen, aber stattdessen habe ich ein Github-Projekt erstellt.
abDetector: Simple Vanilla JavaScript AdBlock Detector.
Genießen.

1
Nick Rameau

Das hat bei mir funktioniert:

function isAdBlocked() {
     return (typeof(window.google_jobrunner) === "undefined") ? true : false;
}

$(document).ready(function(){
    if(isAdBlocked()) {
       alert('Y U NO LIKE ADS?');
    }
});
1
jesal

Ich bin ein bisschen spät zur Party hier, aber hier ist die einfachste Lösung, die ich für den alten AdSense-Code mit jQuery kenne:

$ads = $("ins");
if ($ads.length == 0) {
    // Replacement code about you needing ad income
}

Und in einfachem JavaScript:

$ads = document.getElementsByTagName("ins");
if ($ads.length == 0) {
    // Replacement code about you needing ad income
}

Für $ads können Sie einen beliebigen Selektor verwenden, von dem Sie wissen, dass er mit der generierten Anzeige konsistent ist. Z.B. Für den neuen AdSense-Code können Sie $("iframe#google_ads_frame1") verwenden.

0
jonbaldie

In React.js können Sie Folgendes tun:

class AdblockDetect extends Component {
  constructor (props) {
    super(props)
    this.state = {
      usingAdblock: false
    }
  }

  componentDidMount() {
    this.setState({ usingAdblock: this.fakeAdBanner.offsetHeight === 0 });
  }

  render() {
    if (this.state.usingAdblock === true) {
      return this.props.children;
    }

    return (
      <div
        ref={r => (this.fakeAdBanner = r)}
        style={{ height: '1px', width: '1px', visiblity: 'none', pointerEvents: 'none' }}
        className="adBanner"
      />
    );
  }
}

class App extends Component {
  render() {
    return (
      <div className="App">
        <AdblockDetect>You are using adblock</AdblockDetect>
      </div>
    );
  }
}

Quelle: https://stackoverflow.com/a/55635499/5539715

0
Nic Scozzaro

Für mich hat keiner der Tricks funktioniert, vielleicht habe ich etwas falsch gemacht. Dies ist jedoch ein sehr spezifischer Weg, um für google ads zu implementieren.

window.onload = function() {
   if (document.getElementsByClassName('google-auto-placed').length == 0){
                // Adblock Detected
   }        
}

Wenn Sie über ein anderes Anzeigesystem wie Amazon verfügen, suchen Sie nach den generischen KlassennamenIDs, indem Sie die Seite überprüfen. 

Wenn Sie planen, diesen Code in eine separate .js-Datei zu packen, stellen Sie sicher, dass der Dateiname/- kein Ad-Word enthält . Nennen Sie es einfach magic.js

Wenn sich Google jemals für eine Änderung des Div-Namens entscheidet, schlägt diese Methode fehl. aber das scheint unwahrscheinlich. 

0
Ojas Kale

das hat bei mir geklappt das dokument muss fertig sein bevor du nach adblock suchst hoffe das hilft jemandem!

jQuery(document).ready(function() {

var adBlockEnabled = false;
var testAd = document.createElement('div');
testAd.innerHTML = '&nbsp;';
testAd.className = 'adsbox';
document.body.appendChild(testAd);
window.setTimeout(function() {
  if (testAd.offsetHeight === 0) {
    adBlockEnabled = true;
  }
  testAd.remove();
  console.log('AdBlock Enabled? ', adBlockEnabled)
}, 100);


});
0
SeanDp32

Ich verstehe Ihre Spannung und Sie können überprüfen, ob das Element durch ein Skript erstellt wurde oder das Element ausgeblendet ist. Und wenn wir über Ad-Blocking sprechen, können Sie nur auf die Elementsichtbarkeit und nicht auf die Elementpräsenz zählen. 

Elemente, die mit Skripten von Drittanbietern erstellt wurden, sind niemals vorhanden, dh, wenn das Skript derzeit nicht erreichbar ist (DNS-Fehler, Remote-Webserver-Fehler, Offline-Laden von Webseiten usw.), und Sie erhalten immer eine falsche Bestätigung.

Alle anderen Antworten mit Schecks sind korrekt, aber denken Sie daran.

0
Eir Nym

Ich habe keine guten, einfachen Antworten gesehen, die sich auf beide zwei Arten von Ad-Blockern beziehen, die heute häufig verwendet werden, daher werde ich meine eigene Antwort geben. 

Werbeblocker-Typ 1: Blockiert Web-Ankündigungsskripts basierend auf dem Skriptnamen (AdBlock, uBlock Origin usw.). 

Werbeblocker Typ 2: Blockiert Web-Ankündigungen basierend auf einer Datenbank mit Anzeigenservernamen (FireFox-Inhaltsblocker, verschiedene Gateway-Plugins usw.). 

Diese Lösung funktioniert für beide. Es wird eine große rosa "Aufrufbox" angezeigt, in der die Benutzer aufgefordert werden, ihren Werbeblocker zu deaktivieren. Wir platzieren es gerne unter den Menüs und über dem Inhalt. Wir blockieren tatsächlich nicht den Zugriff auf die Website - dies drückt den Inhalt der Seite nur ein wenig nach unten, aber die Nutzer werden es als störend empfinden, dass praktisch alle ihre Anzeigenblocker auf Ihrer Website einhalten und deaktivieren.

 enter image description here

Also hier ist die Lösung:

A) Erstellen Sie eine Datei mit dem Namen advertisement.js und legen Sie sie im Stammverzeichnis Ihres Webservers ab, bestehend aus der folgenden Codezeile:

document.write('<div id="tester">an advertisement</div>');

B) Fügen Sie Folgendes in Ihre Webseiten ein (möglicherweise verwenden Sie dazu Ihren Ad Server-Code!). Der empfohlene Ort befindet sich unter den Menüs und über dem Inhalt.

<script src="advertisement.js"></script>
<table id="tbl_ab_appeal" style="width: 900px; margin-left:auto; margin-right: auto; padding: 25px; background: #FCC; border: 1px solid #F66; visibility:collapse; border-collapse: collapse;">
    <tr>
        <td>We've detected that you're using an <strong>ad content blocking</strong> browser plug-in or feature. Ads provide a critical source of revenue to the continued operation of [This website name].&nbsp; We ask that you disable ad blocking while on [This
            website name] in the best interests of our community.</td>
    </tr>
</table>
<script>
    if (document.getElementById("tester") == undefined) adsBlocked();

    function adsBlocked() {
        document.getElementById("tbl_ab_appeal").style.visibility = "visible";
        document.getElementById("tbl_ab_appeal").style.borderCollapse = "separate";
        document.getElementById("tbl_ab_appeal").style.marginTop = "10px"
        document.getElementById("tbl_ab_appeal").style.marginBottom = "10px"
    }
</script>
<script onerror="adsBlocked()" src="//www.googletagservices.com/tag/js/gpt.js"></script>

Wie funktioniert es? Die Nachricht wird geladen, aber auf Null gesetzt und unsichtbar. Wenn das lokale Skript advert.js nicht ausgeführt wird oder das ferne AdSense-Skript www.googletagservices.com/tag/js/gpt.js nicht geladen wird, wird das Feld sichtbar gemacht.

0
zax

Wenn Sie Probleme haben, dass der Adblock das neue Tab im Browser blockiert, können Sie Folgendes tun:

$('a').click(function(e){ // change $('a') into more specific
    var w = window.open(this.href, '_blank');

    setTimeout(function(){
        if(w.closed){
            alert('Adblock detected!');
        }
    }, 300);  // if you can close new tab in less than 0.3 sec you're very fast ;)

    e.preventDefault(); // return false if you like
});

Dieser Code ist NUR nützlich, WENN Sie nicht die gesamte Site blockieren möchten UND den Benutzern nur sagen, warum ihre Browser-Registerkarten geschlossen sind;)

0
instead

Die meisten Adblocker stornieren die HTTP-Anforderung an ads.js und machen 0px für das Element, aber irgendwann Adblocker entfernte das DOM , und einige der obigen Antworten schlagen fehl, da die Existenz des Elements nicht geprüft wird. 

Die Verwendung von setTimeout() ist eine bewährte Methode, da das Skript ohne Adblocker zum Rennen wird.

Das folgende Skript überprüft, ob dom existiert/entfernt wurde, und prüft offsetHeight eines Elements, falls vorhanden.

setTimeout(function() {
  var a = document.querySelector('.showads'),
    b = a ? (a.offsetHeight ? false : true) : true;
  console.log('ads blocked?', b)
}, 200); // don't too fast or will make the result wrong.
<div class="ads showads">
  Lorem ipsum dolor sit amet, consectetur adipisicing elit.
</div>

0
cieunteung