Pregunta

Hace poco estuve visitando un sitio y se dio cuenta de que la página tiene una sección que dijo que se dio cuenta de que estaba usando el software AdBlocking y podría amablemente me apagarlo para ayudar a mantener un pequeño sitio así. Me preguntaba cómo podría hacerlo? ¿Sería mejor hacerlo del lado del cliente o del lado del servidor?

¿Fue útil?

Solución

Esto es algo que simplemente no se puede hacer del lado del servidor - no hay nada de nada razón de persona a llamar a su puerta y decir "Mírame, tengo AdBlockPlus!". Cuando en el lado del cliente, Adblock está activamente tratando de influir en el contenido de la página, que es algo que se puede ver ocurren y ver que están utilizando un AdBlocker.

De todos modos, se me ocurrió que saber que newgrounds.com está haciendo esto también. (Su nuevo diseño se atornilla para usuarios Adblock Plus -. Como respuesta hicieron un concurso para el mejor "si no va a ayudar a nosotros a través de nuestros anuncios, ir a comprar algo en la tienda" -banner

Una mirada rápida en la fuente de newgrounds me dijo que están haciendo esto con algunos simples Javascript. Por primera vez en el documento:

var user_is_leecher = true;

A continuación hay una etiqueta de script externo: src=checkabp?thisistotrickabp=***adress of ad affilliate***

Ahora la broma: simplemente confían en Adblock Plus para filtrar ese guión a cabo, ya que todo lo que hay ahí es: user_is_leecher = false;

A partir de ahí, se puede hacer casi cualquier cosa.

Otros consejos

Todo fuera de los métodos mencionados aquí se basan en los bloqueadores de anuncios que se deben eliminar código. Esto no funciona para algunas adblockers (como NetBarrier en Mac). También hay que mantener la actualización de su código cuando los adblockers pongan al día.

Para detectar si el usuario es el bloqueo de anuncios, todo lo que tiene que hacer es encontrar una función en el anuncio javascript y tratar las pruebas para ello. No importa qué método que están usando para bloquear el anuncio. Esto es lo que parece que para los anuncios de Adsense de Google:

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

Este método se describe aquí: http: // www. metamorphosite.com/detect-web-popup-blocker-software-adblock-spam

Usted puede hacerlo en el lado del servidor por el emparejamiento de peticiones de páginas HTML y los anuncios según (probablemente con algunos identificadores únicos a cada solicitud ...) ... Pero esto es sólo una idea, yo nunca lo he probado y ni siquiera visto que se usa.

He encontrado esta parte del código que parece ser similar cómo lo hicieron:

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

Creo que hay varias maneras de hacerlo, pero probablemente la más fácil sería tener algún tipo de fondo de la imagen, o texto de, que será reemplazado cuando se carga el anuncio. Por lo tanto, si el anuncio se carga, se ve el anuncio. Si el anuncio no se carga, se ve el texto.

Este ejemplo sería el lado del cliente, ya sea realizado por JavaScript o CSS llanura incluso podría ser suficiente.

Puede haber algunos trucos del lado del servidor que podría hacer esto también, pero serían innecesariamente complicada y torpe. Un método que viene a la mente incluiría algún tipo de API con el anunciante que se le puede pedir "hizo que el usuario carga such.and.such IP ninguna imagen?" y de esa manera obtener la respuesta. Pero dudo que haya este tipo de servicios - que sería mucho más fácil de hacer en el lado del cliente

.

Creo que es mucho más fácil que hacerlo en el lado del cliente que en el lado del servidor. bloqueadores de anuncios están instalados en el cliente, para que puedan manipular DOM y peticiones ajax bloque. Es por eso que creo que tiene más sentido para detectar en el cliente de en el servidor.

De todos modos, este es un simple plugin independiente que detecta los usuarios con bloqueadores de anuncios habilitados, es de código abierto y el código completo se encuentra en github:

https://github.com/retargetly/mockingbird

Es más orientado editor para que puedan mostrar fácilmente mensajes de los contenedores anuncio o en una ventana emergente. El plugin se actualiza con frecuencia, y vale la pena intentarlo. Este es el violín también:

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

El único método que debe utilizar es

mockingbird.adsBlocked(Obj)

La llamada se puede hacer en cualquier parte del código y no es necesario jQuery para hacer que funcione.

deseo suerte!

No creo que hay una manera fácil de hacer esto. Lo que puede hacer es crear "trampa". Hacer un script php escuchar a una URL muy obvio como yourdomain.com/ad.png. Probablemente se puede lograr esto mediante la reescritura de URL. Si se carga esta página usted puede observar esto en una variable de sesión y enviar un png en blanco 1x1.

En la siguiente petición se puede ver si se ha cargado ad.png. Si no es así se puede adivinar que el cliente está utilizando algún tipo de software AdBlock. Asegúrese de configurar las cabeceras HTTP apropiadas para evitar que los clientes almacenar en caché "ad.png".

Este es el único enfoque del lado del servidor que se me ocurre en este momento y que tiene algunos defectos.

  • El archivo PNG puede almacenar en caché sin tener en cuenta las cabeceras http
  • Esto no funcionará para la primera solicitud HTTP
  • Algunos carga del servidor adicional como los navegadores le dejan de golpear ad.png para cada solicitud
  • que la imagen se carga desde el servidor no es garantía de que en realidad está mostrando
  • Es probable que más efectos secundarios que no he pensado en

Por favor, haga un comentario en este post si decide probarlo.

En cuanto a una solución del lado del cliente. Esto no debería ser difícil. Se puede crear una pequeña Javascript para funcionar en completa carga de la página. Este script puede comprobar que la página contiene el DOM-nodos que mantienen los anuncios. Si esto cuando la página se carga por completo (no sólo el DOM) se puede comprobar el ancho y la altura de las imágenes del anuncio. La desventaja más obvia de esta solución es que los clientes pueden desactivar javascript.

Algunas buenas respuestas aquí, así que sólo voy a añadir esto:

utilizar algún sistema de gestión de publicidad (usted puede escribir su propia). Con eso, el seguimiento de cada anuncio que se está visualizando (y que sea obvio, como ads.php o showad.php o lo que sea). Si ese guión nunca es llamado, el usuario está utilizando algún tipo de software de bloqueo de anuncios.

Asegúrese de manejar todos y cada anuncio a través de ese controlador, sin embargo. Mod_rewrite no es necesario, se puede hacer uso de PHP simple.

Lo que puede hacer para detectar la AdBlocker en el lado del servidor se somithing como:

<?php

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

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

 ?>

 noAdblocker=true;

Guardar este archivo como ads.php

Ahora el 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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top