Question

Je visitais récemment un site et a remarqué que la page avait une section qui a dit qu'il a remarqué que j'utilisais logiciel et logiciel antipub que je pourrais tourner gentiment hors tension pour aider un petit site comme ça. Je me demandais comment vous le faire? Serait-il préférable de faire côté client ou côté serveur?

Était-ce utile?

La solution

Ceci est quelque chose qui ne peut simplement pas être fait côté serveur - il y a Zilch raison de personne à frapper à votre porte et dire « Regardez-moi, je adblockplus! ». Lorsque du côté client, Adblock tente activement d'influencer le contenu de la page, ce qui est quelque chose que vous pouvez voir se produire et voir qu'ils utilisent un adblocker.

Quoi qu'il en soit, j'arrivé de savoir que newgrounds.com fait cela aussi. (Leur nouvelle mise en page a été vissé pour Adblock Plus les utilisateurs -. En réponse ils ont fait un concours pour le meilleur « si vous n'allez pas pour nous aider à nos annonces, allez acheter quelque chose dans le magasin » -banner

Un rapide coup d'oeil à la source de Newgrounds m'a dit qu'ils font cela avec javascript simple. Tout d'abord dans le document:

var user_is_leecher = true;

A une balise de script externe: src=checkabp?thisistotrickabp=***adress of ad affilliate***

Maintenant, la blague: ils ont confiance tout simplement pour filtrer Adblock Plus que scripter, comme tout ce qui est là-dedans est: user_is_leecher = false;

A partir de là, ils peuvent faire à peu près tout.

Autres conseils

Toutes les méthodes hors mentionnées ici reposent sur les bloqueurs de publicité pour dépouiller le code. Cela ne fonctionne pas pour certains adblockers (comme NetBarrier sur Mac). Vous devez également garder à jour votre code lorsque les adblockers sur attraper.

Pour détecter si l'utilisateur bloque annonces, tout ce que vous avez à faire est de trouver une fonction dans l'annonce javascript et essayer des tests pour elle. Peu importe quelle méthode qu'ils utilisent pour bloquer l'annonce. Voici à quoi il ressemble pour les annonces Google AdSense:

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

Cette méthode est décrite ici: http: // www. metamorphosite.com/detect-web-popup-blocker-software-adblock-spam

Vous pouvez le faire sur le côté serveur en jumelant les demandes de pages html et pour les annonces acording (probablement avec des identifiants uniques à chaque demande ...) ... Mais cela est juste une idée, je ne l'ai jamais essayé et même jamais vu utilisé.

Je trouve cette partie dans le code qui semble ressembler à la façon dont ils l'ont fait:

/*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*/

Je suppose qu'il ya plusieurs façons de le faire, mais sans doute le plus facile serait d'avoir une sorte d'image de fond, ou le texte, qui sera remplacé lorsque l'annonce est chargée. Ainsi, si l'annonce est chargée, vous voyez l'annonce. Si l'annonce ne se charge pas, vous voyez le texte.

Cet exemple serait côté client, fait soit JavaScript ou CSS juste ordinaire pourrait même suffire.

Il pourrait y avoir quelques gimmicks côté serveur qui pourrait le faire aussi, mais ils seraient inutilement compliqués et maladroits. Une méthode qui vient à l'esprit comprendrait une sorte d'API avec l'annonceur qui pourrait être demandé « l'utilisateur a fait de la charge such.and.such IP des images? » et de cette façon obtenir la réponse. Mais je doute qu'il y ait de tels services - ce serait beaucoup plus facile de le faire sur le côté client

.

Je crois que c'est beaucoup plus facile de le faire sur le côté client que dans le côté serveur. bloquants Ad sont installés sur le client, afin qu'ils puissent manipuler les requêtes ajax DOM et bloc. Voilà pourquoi je crois qu'il est plus logique de détecter sur le client que sur le serveur.

Quoi qu'il en soit, c'est un simple plugin autonome qui détecte les utilisateurs avec des bloqueurs de publicité activés, il est open-source et le code complet est disponible sur github:

https://github.com/retargetly/mockingbird

Il est plus orienté vers l'éditeur afin qu'ils puissent facilement afficher des messages sur les conteneurs annonces ou dans une fenêtre contextuelle. Le plugin est fréquemment mis à jour, et il vaut la peine d'essayer. Ceci est le violon aussi:

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

La seule méthode que vous devez utiliser est

mockingbird.adsBlocked(Obj)

L'appel peut être fait partout dans le code et vous n'avez pas besoin jQuery pour le faire fonctionner.

vous souhaite bonne chance!

Je ne pense pas qu'il y ait un moyen facile de le faire. Ce que vous pouvez faire est de créer « piège ». Faire un script php écouter une URL très évidente comme yourdomain.com/ad.png. Vous pouvez probablement y parvenir en url rewriting. Si cette page est chargée, vous pouvez noter dans une variable de session et renvoyer un 1x1 .png vide.

A la demande suivante vous pouvez voir si ad.png a été chargé. Si elle n'a pas, vous pouvez deviner que le client utilise une certaine forme de logiciel AdBlock. Assurez-vous de définir les en-têtes HTTP appropriées pour empêcher les clients de la mise en cache « ad.png ».

Ceci est la seule approche côté serveur, je peux penser au moment et il a quelques défauts.

  • Le fichier .png peut être mis en cache indépendamment des en-têtes http
  • Cela ne fonctionnera pas pour la première requête http
  • Certaines charge du serveur supplémentaire comme des navigateurs continuer à frapper ad.png pour chaque demande
  • Que l'image est chargée à partir du serveur est aucune garantie pour elle réellement affichée
  • Probablement plus d'effets secondaires que je ne l'ai pas pensé

S'il vous plaît faire un commentaire sur ce post si vous décidez de l'essayer.

En ce qui concerne une solution côté client. Cela ne devrait pas être difficile à. Vous pouvez créer un petit Javascript pour fonctionner sur la page complète de charge. Ce script peut vérifier que la page contient les dom-noeuds sur les annonces. Si vous faites cela lorsque la page est chargée complètement (non seulement le Royaume), vous pouvez vérifier la largeur et la hauteur de vos images publicitaires. L'inconvénient le plus évident avec cette solution est que les clients peuvent désactiver javascripts.

Quelques bonnes réponses ici, donc je vais juste ajouter ceci:

utiliser un système de gestion publicitaire (Vous pouvez écrire votre propre). Avec cela, suivre chaque annonce qui est affichée (et le rendre évident, comme ads.php ou showad.php ou autre). Si ce script est jamais appelé, l'utilisateur utilise une forme de logiciel de blocage des publicités.

Assurez-vous de gérer chaque annonce par ce gestionnaire, cependant. Mod_Rewrite n'est pas nécessaire, il peut être fait en utilisant PHP simple.

Qu'est-ce que vous pouvez faire pour détecter le adblocker sur le côté serveur est somithing comme:

<?php

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

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

 ?>

 noAdblocker=true;

Enregistrez ce fichier sous ads.php

Maintenant, le 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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top