Frage

Ich war vor kurzem unter eine Website und bemerkte, dass die Seite einen Abschnitt hatte, der sagte, es bemerkt, dass ich Werbeblocker-Software wurde mit und konnte ich es freundlich einen kleinen Ort wie das zu Hilfe unterstützen auszuschalten. Ich habe mich nur gefragt, wie würden Sie das tun? Wäre es am besten getan clientseitige oder serverseitig sein?

War es hilfreich?

Lösung

Das ist etwas, das einfach nicht getan Server-Seite sein kann - es gibt Zilch Grund für Person an der Tür zu klopfen und sagen: „Schau mich an, ich AdblockPlus haben!“. Wenn auf der Client-Seite, adblock aktiv versucht, den Seiteninhalt zu beeinflussen, was sehen passieren kann, etwas, das Sie und sehen, dass sie eine adblocker verwenden.

Wie auch immer, ich zufällig zu wissen, dass newgrounds.com dies auch tut. (Ihr neues Layout wurde für Adblock Plus Benutzer vermasselt -. Als Antwort sie einen Wettbewerb für die besten gemacht „wenn Sie nicht, uns durch unsere Anzeigen nicht helfen, gehen und etwas kauft im Laden“ -Banner

Ein kurzer Blick in die Quelle newgrounds sagte mir, sie tun dies mit einigen einfachen Javascript. Zuerst in dem Dokument:

var user_is_leecher = true;

Als nächstes gibt es einen externen Skript-Tag: src=checkabp?thisistotrickabp=***adress of ad affilliate***

Jetzt ist der Witz: sie einfach Vertrauen Adblock Plus zu filtern, dass Skript aus, als alles, was ist da drin ist: user_is_leecher = false;

Von dort aus können sie einfach alles tun.

Andere Tipps

Alle aus den hier genannten Verfahren stützen sich auf dem Ad-Blocker Code Streifen aus. Dies gilt nicht für einige Adblocker arbeiten (wie NetBarrier auf Mac). Sie müssen auch den Code halten aktualisiert, wenn die Adblocker fangen.

Um festzustellen, ob der Benutzer Anzeigen blockiert, alles, was Sie tun müssen, ist eine Funktion in der Anzeige Javascript finden und versuchen, es zu testen. Es spielt keine Rolle, welche Methode sie verwenden die Anzeige zu sperren. Hier ist, wie es für Google AdSense-Anzeigen aussieht:

if(typeof(window.google_render_ad)=="undefined") 
{ 
    //They're blocking ads, do something else.
}

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

Sie es durch Paarung Anforderungen für HTML-Seiten und für die Acording Anzeigen (wahrscheinlich mit einigen eindeutigen Kennungen auf jede Anforderung ...) auf Server-Seite tun könnten ... Aber das ist nur eine Idee, ich habe nie versucht, und noch nie gesehen verwendet.

Ich habe diesen Teil im Code, die aussehen scheint, wie sie es getan haben:

/*MOOTOOLS*/
window.addEvent('domready', function(){

$$('.cat-item').each(function(el) { 
    var fx = new Fx.Morph(el,{ duration:300, link:'cancel' }); 
        el.addEvents({ 
        'mouseenter': function() { fx.start({ 'padding-left': 25 }); }, 
        'mouseleave': function() { fx.start({ 'padding-left': 15 }); } 
        }); 
    });

    if ($$(".google-sense468")[0] && $$(".google-sense468")[0].clientHeight == 0 && $('block-warning')) $('block-warning').setStyle('display','block');

});
/*MOOTOOLS END*/

Ich denke, es gibt mehr Möglichkeiten, es zu tun, aber wahrscheinlich das einfachste wäre eine Art Hintergrundbild zu haben, oder Text, die ersetzt werden, wenn die Anzeige geladen wird. Wenn also die Anzeige geladen wird, sehen Sie die Anzeige. Wenn die Anzeige nicht geladen werden, sehen Sie den Text.

In diesem Beispiel würde Client-Seite sein, getan, indem entweder JavaScript oder einfach nur CSS könnte sogar ausreichen.

Es könnte einige serverseitige Gimmicks sein, dass dies auch tun könnte, aber sie würden erarbeiten und klobig unnötig werden. Ein Verfahren, das in dem Sinne eine Art von API mit dem Werbetreibenden gehören würde, die gestellt werden könnten „haben den Benutzer von IP such.and.such Last jegliche Bildern?“ und auf diese Weise die Antwort bekommen. Aber ich bezweifle, gibt es solche Dienste - es wäre viel einfacher, auf der Client-Seite zu tun

.

Ich glaube, dass ist viel einfacher, es als in Server-Seite auf Client-Seite zu tun. Ad-Blocker sind auf dem Client installiert, so dass sie DOM manipulieren und AJAX-Anfragen blockieren. Deshalb glaube ich, macht es mehr Sinn auf dem Client als auf dem Server zu erkennen.

Wie auch immer, dies ist ein eigenständiges einfaches Plugin, das erkennt Benutzer mit Ad-Blocker aktiviert ist, es ist Open-Source und der vollständige Code auf Github:

https://github.com/retargetly/mockingbird

Es ist mehr Publisher orientiert, so dass sie leicht Nachrichten auf den Anzeigen-Containern oder in einem Pop-up zeigen. Das Plugin wird regelmäßig aktualisiert, und es ist ein Versuch wert. Dies ist die Geige auch:

http://jsfiddle.net/retargetly/9vsha32h/

Die einzige Methode, die Sie verwenden müssen, ist

mockingbird.adsBlocked(Obj)

Der Aufruf kann überall im Code durchgeführt werden und Sie nicht jQuery benötigen, damit es funktioniert.

Wünsche Ihnen viel Glück!

Ich glaube nicht, dass es eine einfache Möglichkeit, dies zu tun. Was können Sie tun, ist „Falle“ zu erstellen. Machen Sie ein PHP-Skript auf eine sehr offensichtliche URL wie yourdomain.com/ad.png hören. Sie können sich wahrscheinlich diese durch URL-Rewriting erreichen. Wenn diese Seite geladen wird, können Sie dies in einer Sitzungsvariablen beachten und einen 1x1 leeren png zurückzuschicken.

Auf der nächsten Anfrage können Sie sehen, ob ad.png geladen wurde. Falls nicht können Sie erraten, dass der Kunde irgendeine Form von AdBlock Software verwendet. Stellen Sie sicher, dass Sie die entsprechende Set HTTP-Header zu verhindern, dass Kunden aus Cachen „ad.png“.

Dies ist der einzige Server-Seite Ansatz, den ich von im Moment denken kann, und es hat einige Mängel.

  • Die png-Datei kann unabhängig von der HTTP-Header
  • zwischengespeichert werden
  • Dies wird nicht für die erste HTTP-Anforderung arbeitet
  • Einige zusätzliche Serverbelastung als Browser halten für jede Anforderung ad.png schlagen
  • , dass das Bild vom Server geladen wird, ist keine Garantie dafür tatsächlich angezeigt wird,
  • Wahrscheinlich mehr Nebenwirkungen, die ich habe nicht gedacht

Bitte machen Sie einen Kommentar zu diesem Beitrag, wenn Sie sich entscheiden, es auszuprobieren.

Im Hinblick auf eine Client-Side-Lösung. Dies sollte nicht zu schwer sein. Sie können ein kleines Javascript erstellen auf Seite Last vollständig auszuführen. Dieses Skript kann prüfen, ob die Seite enthält den dom-Knoten die Anzeigen zu halten. Wenn Sie dies, wenn die Seite vollständig geladen ist (nicht nur den dom) können Sie die Breite und Höhe des Anzeigenbildes überprüfen. Der offensichtlichste Nachteil dieser Lösung ist, dass die Kunden können deaktivieren Javascripts.

Ein paar gute Antworten hier, also werde ich nur hinzufügen, um dieses:

verwenden, um einige Ad-Management-System (Sie können Ihre eigenen schreiben). Damit jede Anzeige verfolgt die angezeigt wird (und es offensichtlich machen, wie ads.php oder showad.php oder was auch immer). Wenn das Skript nie aufgerufen wird, wird der Benutzer irgendeine Form von Ad-Blocker-Software verwendet wird.

Seien Sie sicher, dass jede und jede Anzeige durch diesen Handler zu handhaben, though. Mod_Rewrite nicht erforderlich ist, kann es mit einfachen PHP erfolgen.

Was Sie tun können, die adblocker auf der Server-Seite zu erkennen ist somithing wie:

<?php

  header('Content-Type: application/javascript');

  //Save it to session
  session_start();
  $_SESSION['noAdblocker']=true;

 ?>

 noAdblocker=true;

Speichern Sie diese Datei als ads.php

Jetzt die index.php:

<?php
  session_start();
  $_SESSION['noAdblocker']=false;
?>
<!DOCTYPE HTML><html><head>
    <!-- Now place the "ad-script" -->
    <script src="ads.php"></script>
</head><body></body></html>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top