Pergunta

Eu estava visitando recentemente um site E notei que a página tinha uma seção que dizia que percebeu que eu estava usando o software de anúncios e eu poderia desligá -lo para ajudar a apoiar um pequeno site como esse. Eu estava me perguntando como você faria isso? Seria melhor fazer o lado do cliente ou o servidor?

Foi útil?

Solução

Isso é algo que simplesmente não pode ser feito no lado do servidor - há um motivo de Zilch para a pessoa bater na sua porta e dizer "Olhe para mim, eu tenho adblockplus!". Quando do lado do cliente, o Adblock está tentando influenciar ativamente o conteúdo da página, algo que você pode ver acontecer e ver que eles estão usando um adblocker.

De qualquer forma, eu sabia que o Newgrounds.com também está fazendo isso. (O novo layout deles foi estragado para os usuários do Adblock Plus - como uma resposta, eles fizeram um concurso para o melhor "se você não vai nos ajudar através de nossos anúncios, vá comprar algo na loja".

Uma rápida olhada na fonte de Newgrounds me disse que está fazendo isso com um javascript simples. Primeiro no documento:

var user_is_leecher = true;

Em seguida, há uma etiqueta de script externa: src=checkabp?thisistotrickabp=***adress of ad affilliate***

Agora a piada: eles simplesmente confiam no Adblock Plus para filtrar esse script, pois tudo o que existe lá está: user_is_leecher = false;

A partir daí, eles podem fazer praticamente qualquer coisa.

Outras dicas

Todos os métodos mencionados aqui dependem dos bloqueadores de anúncios para eliminar o código. Isso não funciona para alguns adblockers (como o NetBarrier no Mac). Você também precisa continuar atualizando seu código quando os adblockers pegarem.

Para detectar se o usuário está bloqueando anúncios, tudo o que você precisa fazer é encontrar uma função no AD JavaScript e tentar testar. Não importa qual método eles estão usando para bloquear o anúncio. Aqui está o que parece para os anúncios do Google Adsense:

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

Este método está descrito aqui: http://www.metamorphoste.com/detect-web-popup-blocker-foftware-adblock spam

Você pode fazê -lo no lado do servidor emparelhando solicitações de páginas HTML e para os anúncios de acorde (provavelmente com alguns identificadores exclusivos para cada solicitação ...) ... mas isso é apenas uma ideia, eu nunca tentei e nunca sequer vi isso usado.

Eu achei essa parte no código que parece parecer como eles fizeram isso:

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

Eu acho que existem várias maneiras de fazê -lo, mas provavelmente a mais fácil seria ter algum tipo de imagem de fundo ou texto que será substituído quando o anúncio for carregado. Assim, se o anúncio for carregado, você verá o anúncio. Se o anúncio não carregar, você verá o texto.

Este exemplo seria o lado do cliente, feito por JavaScript ou apenas CSS simples, pode até ser suficiente.

Pode haver alguns truques do lado do servidor que também podem fazer isso, mas eles seriam desnecessariamente elaborados e desajeitados. Um método que se lembra que incluiria algum tipo de API com o anunciante que poderia ser perguntado "o usuário do IP como. E carregaram alguma imagem?" E, dessa maneira, obtenha a resposta. Mas duvido que existam esses serviços - seria muito mais fácil fazer no lado do cliente.

Eu acredito que é muito mais fácil fazê -lo no lado do cliente do que no lado do servidor. Os bloqueadores de anúncios são instalados no cliente, para que possam manipular o DOM e bloquear solicitações de Ajax. É por isso que acredito que faz mais sentido detectar no cliente do que no servidor.

De qualquer forma, este é um plug-in simples e simples que detecta usuários com bloqueadores de anúncios ativados, é de código aberto e o código completo está no github:

https://github.com/retargetly/mockingbird

É mais orientado para o editor para que eles possam mostrar mensagens facilmente nos contêineres de anúncios ou em um pop -up. O plug -in é frequentemente atualizado e vale a pena tentar. Este é o violino também:

http://jsfiddle.net/RETARGETLE/9VSHA32H/

O único método que você precisa usar é

mockingbird.adsBlocked(Obj)

A chamada pode ser feita em qualquer lugar do código e você não precisa de jQuery para fazê -lo funcionar.

Te desejo boa sorte !

Eu não acho que exista uma maneira fácil de fazer isso. O que você pode fazer é criar "Trap". Faça um script PHP ouça um URL muito óbvio como o yourDomain.com/ad.png. Você provavelmente pode conseguir isso por reescrita de URL. Se esta página for carregada, você poderá observar isso em uma variável de sessão e enviar de volta um PNG em branco 1x1.

Na próxima solicitação, você pode ver se o ad.png foi carregado. Se não tiver, você pode adivinhar que o cliente está usando alguma forma de software Adblock. Certifique -se de definir os cabeçalhos HTTP apropriados para impedir que os clientes em cache "ad.png".

Essa é a única abordagem do lado do servidor que consigo pensar no momento e tem algumas falhas.

  • O arquivo PNG pode ser armazenado em cache, independentemente dos cabeçalhos HTTP
  • Isso não funcionará para a primeira solicitação HTTP
  • Alguma carga extra do servidor como navegadores continuará atingindo ad.png para cada solicitação
  • Que a imagem é carregada do servidor não é garantia para que ela realmente seja exibida
  • Provavelmente mais efeitos colaterais que eu não pensei

Por favor, faça um comentário sobre este post se você decidir experimentá -lo.

Em relação a uma solução do lado do cliente. Isso não deve ser difícil. Você pode criar um minúsculo JavaScript para ser executado na página LOAD COMPLETO. Esse script pode verificar se a página contém os Nodes DOM mantendo os anúncios. Se você é isso quando a página for carregada completamente (não apenas o DOM), você pode verificar a largura e a altura de suas imagens de anúncios. A desvantagem mais óbvia com esta solução é que os clientes podem desativar os javascripts.

Algumas boas respostas aqui, então vou adicionar isso:

Use algum sistema de gerenciamento de anúncios (você pode escrever o seu). Com isso, rastreie todos os anúncios que estão sendo exibidos (e o torne óbvio, como ads.php ou showad.php ou qualquer outra coisa). Se esse script nunca for chamado, o usuário estará usando alguma forma de software de bloqueio de anúncios.

Certifique -se de lidar com cada anúncio através desse manipulador, no entanto. Mod_rewrite não é necessário, isso pode ser feito usando PHP simples.

O que você pode fazer para detectar o Adblocker no lado do servidor é a somither como:

<?php

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

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

 ?>

 noAdblocker=true;

Salve este arquivo como ads.php

Agora o 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top