Détecter adblock: le script anti-adblock (nouvelle version)

Consultez la formation au REFERENCEMENT naturel Google de WebRankInfo / Ranking Metrics

adblock
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 13
Inscription: 16 Nov 2005

Détecter adblock: le script anti-adblock (nouvelle version)

Message le Mer Nov 16, 2005 14:59

Edit 02/07/07: Nouvelle version du script, plus rapide, et compatible avec les dernières versions des différents bloqueurs de pub.
Edit 05/07/07: Le script semble devenir populaire, quelques listes de bloquage d’adblock ont dû white lister les images dont l’adresse contient googlesyndication. J'ai donc modifier l'adresse de l'image témoin: Mettez /ads/ comme adresse.

Script de détection de bloqueurs de publicités.

Comment ça marche ?

On place une image témoin dans la page dont l'URL est susceptible de se faire bloquer. Ensuite on utilise un script pour effectuer divers tests sur l'image. On test si elle a été supprimée de la page, ou caché, ou non chargée, remplacée, etc...

Si le script détecte qu'un bloqueur de publicité est activé, il appel la méthode adblockblock.block(). Par défaut cette méthode fait un alert('Adblock activé'); , mais vous pouvez biensûr modifier son comportement.

À quoi sa sert ?

Vous pouvez l'utiliser pour:
  • Éduquer vos visiteurs: Expliquez leurs que votre site ne serait pas là où il en est sans la publicité, peut être même qu'il n'existerait pas.
  • Afficher une autre publicité non bloquée, faire de l'auto promotion, etc...
  • Bloquer les leechers. Après tout, les utilisateurs qui n'affichent pas la publicité sont des leechers, vous payez l'hébergement de votre site pour eux, vous passez du temps sur votre site et eux ils prennent sans donner. Vous pouvez aussi mettre toutes vos images, css et js dans un répertoire /ads/, les leechers ne les téléchargeront pas et vous économiserez de la bande passante.

Compatibilité:

Ce script fonctionne avec les techniques de bloquage suivantes:
  • Adblock de Firefox
  • Le tueur de pub de Maxthon
  • Adblock de Konqueror
  • Les styles CSS personnels
  • Les serveurs DNS ou fichiers hosts qui truquent la résolution des noms
  • Les proxies qui renvoient un autre fichier à la place des pubs


Le code à copier quelque part dans vos pages:

N'oubliez pas de mettre à jour le code de l'image témoin si vous aviez installé l'ancienne version du script, les arguments onload et onerror sont importants.

Code: Tout sélectionner
<img src="/ads/" width="0" height="0" border="0" alt="adblocktest" id="adblocktest" onload="this.imgloaded=true;" onerror="this.imgloaded=true;" />

<script type="text/javascript">

   adblockblock = function() {
      if (window.addEventListener) {
         window.addEventListener('load', this.bind(this.initialize), false);
      } else if (window.attachEvent) {
         window.attachEvent('onload', this.bind(this.initialize));
      }
   };
   
   adblockblock.prototype = {
   
      initialize: function() {
         this.interval = setInterval(this.bind(this.test), 1000);
         this.test();
      },
   
      test: function() {
   
         var element=document.getElementById('adblocktest');
      
         /* On test si l'element a été supprimé par le bloqueur
         * Maxthon?, Konqueror
         */
         if(!element)
         {
            this.logger('Element image non trouvé');
            return this.block();
         }
   
         /* On test si l'image n'a tout pas été chargée dutout
         * Adblock, /etc/hosts, proxies, etc
         * Gecko: element.complete==true, même si image non trouvée / mauvaise image et onerror||onload appellée
         * IE: element.complete==false quand image non trouvée.
         */
         if (element.complete && !element.imgloaded)
         {
            this.logger('Image non chargée');
            return this.block();
         }
      
         /* On test si l'element a été caché par le bloqueur
         * (display:none, ou visibility:hidden, ou position:absolute et top/left hors de la page)
         * Old adblock
         */
         var display = this.getStyle(element, 'display');
         var visibility = this.getStyle(element, 'visibility');
         var position = this.getStyle(element, 'position');
         if (display != 'inline' || (visibility != 'visible' && visibility != 'inherit') || position != 'static')
         {
            this.logger('Image cachée: display='+display+' visibility='+visibility+' position='+position);
            return this.block();
         }
   
         /* On test si l'image a été remplacée
         * Pour une image non chargée, naturalWidth/Height doit être indéfini ou 0
         */
         if ((element.naturalWidth && element.naturalWidth > 0) || (element.naturalHeight && element.naturalHeight > 0)) {
            this.logger('Image remplacée');
            return this.block();
         }
         /* Pour Konqueror
         */
         if (element.width && element.width == 64) {
            this.logger('Image remplacée (Konqueror)');
            return this.block();
         }
      },
   
      getStyle: function(element, key) {
         if (document.defaultView && document.defaultView.getComputedStyle) {
            return document.defaultView.getComputedStyle(element, '').getPropertyValue(key);
         } else {
            return element.currentStyle[key];
         }
      },
   
      block: function(blockMethod) {
         // Ne pas supprimer cette ligne
         if (this.interval) clearInterval(this.interval);
   
         // Mettez ce que vous voulez ici
         alert('Adblock activé ! ');
      },
   
      bind: function(func) {
         var obj = this;
         return function() {
            return func.apply(obj, []);
         };
      },
   
      logger: function(str) {
         if (typeof console == 'undefined') return;
         if (typeof console.log == 'undefined') return;
         console.log(str);
      }
   };
   
   /*Décommenter pour débugger (ou utiliser firebug)
   if (typeof console == 'undefined') {
      console={};
      console.log = function(str) {
         var el = document.createElement('div');
         el.appendChild(document.createTextNode(str));
         document.body.appendChild(el);
      };
   }
   */
   
   new adblockblock();
</script>
Dernière édition par adblock le Jeu Juil 05, 2007 15:36, édité 10 fois.


lothar
WRInaute passionné
WRInaute passionné
 
Messages: 1531
Inscription: 12 Juil 2003

Message le Mer Nov 16, 2005 17:03

Je ne comprends pas trop l'utilité du script, quelqu'un peut m'éclairer ?


Vince100
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 394
Inscription: 22 Nov 2004

Message le Mer Nov 16, 2005 17:14

Dans le pire des cas: refuser l'accès aux visiteurs qui ont adblock activé :roll:


e-kiwi
Modérateur
Modérateur
 
Messages: 15617
Inscription: 23 Déc 2003

Message le Mer Nov 16, 2005 17:16

pour résumer, un script à la c*n :-)
enfin, un script pour perdre des visiteurs


Vince100
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 394
Inscription: 22 Nov 2004

Message le Mer Nov 16, 2005 17:17

e-kiwi a écrit:pour résumer, un script à la c*n :-)
enfin, un script pour perdre des visiteurs


On est bien d'accord :)

zimounet
WRInaute passionné
WRInaute passionné
 
Messages: 1796
Inscription: 8 Nov 2004

Message le Mer Nov 16, 2005 17:21

Ce script mérite tout de meme sa place ici je pense...


e-kiwi
Modérateur
Modérateur
 
Messages: 15617
Inscription: 23 Déc 2003

Message le Mer Nov 16, 2005 17:22

autant que toi :)

(c'est de l'humour !!)


Suede
WRInaute accro
WRInaute accro
 
Messages: 3722
Inscription: 4 Oct 2002

Message le Mer Nov 16, 2005 17:31

Pour rediriger les visiteurs vers une version sans pub et alléger le serveur :roll:
:arrow:
Dernière édition par Suede le Mer Nov 16, 2005 17:31, édité 1 fois.

jeroen
WRInaute passionné
WRInaute passionné
 
Messages: 2461
Inscription: 30 Aoû 2002

Message le Mer Nov 16, 2005 17:31

Tant qu'a jouer, autant faire
Code: Tout sélectionner
function adblocktest() {
        item=document.getElementById('adblocktest');
        if (item.style.display == 'none') item.style.display = 'block';
        if (item.style.visibility == 'hidden') item.style.visibility = 'visible';
}

Grantome
WRInaute accro
WRInaute accro
 
Messages: 2899
Inscription: 16 Jan 2004

Message le Mer Nov 16, 2005 18:05

jeroen a écrit:Tant qu'a jouer, autant faire
Code: Tout sélectionner
function adblocktest() {
        item=document.getElementById('adblocktest');
        if (item.style.display == 'none') item.style.display = 'block';
        if (item.style.visibility == 'hidden') item.style.visibility = 'visible';
}


+1

yanhl
WRInaute impliqué
WRInaute impliqué
 
Messages: 793
Inscription: 4 Déc 2003

Message le Mer Nov 16, 2005 18:07

intéressant ce script, on pourrait s'en servir pour voir quel pourcentage de visiteurs bloquent la pub.
Et si elle ne s'affiche pas, la remplacer par une auto-pub (pour une autre rubrique par exemple), ou une pub d'une autre régie.

C'est quand même fou ce que certains peuvent critiquer par réflexe...

P.S. pour les deux derniers : adblocktest n'est qu'une image témoin, vous ne forcerez pas l'affichage de la pub comme ça ;-)


jeanluc
WRInaute accro
WRInaute accro
 
Messages: 3062
Inscription: 3 Mai 2004

Message le Mer Nov 16, 2005 18:23

Vince100 a écrit:
e-kiwi a écrit:pour résumer, un script à la c*n :-)
enfin, un script pour perdre des visiteurs


On est bien d'accord :)


Ah bon :?:

Je ne dis pas que ce script est la solution idéale, mais le soft à la c*n, pour moi, c'est Adblock, un gadget destiné à ceux qui apprécient vos sites financés par la pub, mais qui ne veulent pas que vous tiriez un revenu de cette pub. :roll:

Jean-Luc


Vince100
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 394
Inscription: 22 Nov 2004

Message le Mer Nov 16, 2005 18:33

jeanluc, ne relance pas la polémique sur adblock...
Adblock est encore d'une utilisation marginale, et 95 % de ses utilisateurs ne cliquent pas sur les pubs en général, donc la perte engendrée du fait de son utilisation est minime.

Ne pas vouloir afficher des pubs sur son navigateur est tout aussi légitime que de ne pas souhaiter de prospectus dans sa boîte aux lettres, et un script qui essaie de contourner cette volonté (qui n'est pas celle de la majorité des internautes je le repète) est à mon avis une escalade malsaine...

adblock
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 13
Inscription: 16 Nov 2005

Message le Mer Nov 16, 2005 19:16

e-kiwi a écrit:pour résumer, un script à la c*n :-)
enfin, un script pour perdre des visiteurs


Pour ceux d'entre vous qui ont un site à but unique de gagner de l'argent, un visiteur qui ne vois pas la pub est un visiteur qui ne sert à rien de toute façon.

jeroen a écrit:Tant qu'a jouer, autant faire
Code: Tout sélectionner
function adblocktest() {
        item=document.getElementById('adblocktest');
        if (item.style.display == 'none') item.style.display = 'block';
        if (item.style.visibility == 'hidden') item.style.visibility = 'visible';
}


Non justement. adblocktest est l'image témoin. Les scripts genre celui de adsense ne sont tout simplement pas chargés. Par contre si c'est seulement l'iframe qui est bloquée il y a peut être moyen.

Ne pas vouloir afficher des pubs sur son navigateur est tout aussi légitime que de ne pas souhaiter de prospectus dans sa boîte aux lettres, et un script qui essaie de contourner cette volonté (qui n'est pas celle de la majorité des internautes je le repète) est à mon avis une escalade malsaine...


Il y a une différence entre ta boite aux lettres, qui est ta propriété, et une page de pub dans un magazine par exemple.


Vince100
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 394
Inscription: 22 Nov 2004

Message le Mer Nov 16, 2005 19:23

adblock a écrit:Il y a une différence entre ta boite aux lettres, qui est ta propriété, et une page de pub dans un magazine par exemple.


Dans un magazine je peux tourner la page si ça ne me plait pas, et la pub ne vient pas se placer au dessus de l'article que je lis en clignotant (cf les flash en quasi plein écran) :wink:

Détecter adblock: le script anti-adblock (nouvelle version)

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation REFERENCEMENT naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité