voltar à visão geral Mais artigos

Como Sites Detectam Seu Bloqueador de Anúncios (e Quando Erram)

Positivo
Verificando AdBlock...

Verificando se você tem um bloqueador de anúncios instalado...

Você clicou para ler um artigo e encontrou um muro no lugar dele: “Bloqueador de anúncios detectado. Desative-o para continuar.” Talvez a acusação fosse justa. Talvez você nem use bloqueador de anúncios e o site insista mesmo assim que você usa. De qualquer forma, o site nunca viu sua lista de extensões, e ainda assim pegou você.

Não existe API que entregue a uma página web a sua lista de extensões. Então os scripts anti-adblock não procuram o bloqueador. Eles plantam coisas que um bloqueador removeria e depois verificam o que sobreviveu. O widget nesta página executa seis dessas armadilhas contra o seu navegador agora mesmo; o resto deste artigo explica o que cada uma está fazendo.

Versão resumida: uma página não pode perguntar quais extensões você usa, então ela arma armadilhas: um elemento de anúncio falso e um punhado de requisições de anúncio falsas. Se a isca some, você está bloqueando. Esse é o truque inteiro, e é por isso que coisas que não são bloqueadores de anúncios (filtragem de DNS, os Shields do Brave, alguns antivírus) também acabam acusadas. As armadilhas detectam o bloqueio, não os bloqueadores.

A economia é simples: anúncios pagam pela página, anúncios bloqueados não pagam nada, e um muro que converte uma fatia dos visitantes que bloqueiam de volta em impressões compensa irritar o resto. Essa é a única razão pela qual os scripts abaixo existem.

O elemento-isca: flagrado pelo que falta

Quase todo bloqueador de anúncios traz o mesmo núcleo de regras: a EasyList, um catálogo mantido pela comunidade que descreve a aparência que a publicidade tem numa página. Ao lado de dezenas de milhares de padrões de URL, ela carrega regras cosméticas: ocultar qualquer elemento com nomes de classe como ad-unit ou adsbox.

Esse catálogo é público, então os scripts anti-adblock também o leem. O truque mais antigo da detecção é criar uma div invisível de um pixel vestindo exatamente esses nomes de classe e ler seu offsetHeight. Um navegador sem bloqueio reporta o pixel. Um bloqueado reporta zero, porque um filtro cosmético definiu a div como display: none. A página nunca viu sua extensão. Ela viu uma div deixar de existir.

Uma div-isca, dois desfechos
O que a página planta
<div class="adsbox ad-unit banner_ad">
oculta por um filtro cosmético
O que o detector lê
offsetHeight: 0
A isca sumiu. Bloqueador de anúncios detectado.
O detector planta um elemento que os bloqueadores de anúncios costumam ocultar, mede esse elemento e deduz o seu bloqueador pelo buraco que ficou.

Essa é a verificação de “isca CSS” no widget acima, e o motor dentro das antigas bibliotecas BlockAdBlock e FuckAdBlock que metade dos tutoriais de “como detectar adblock” da internet ainda reempacota. Essa indireção é o mesmo movimento que os sistemas antibot fazem quando caçam automação de navegador: o Puppeteer também é invisível; só se enxerga o que ele muda.

As requisições que nunca voltam

A segunda família de armadilhas atua na rede. Bloqueadores não apenas escondem elementos, eles se recusam a buscar conteúdo de servidores de anúncio conhecidos, então a página envia chamarizes: um script de pagead2.googlesyndication.com, uma imagem de tpc.googlesyndication.com, um fetch() para ads.pubmatic.com. Infraestrutura de anúncios real, requisitada de propósito. Se o handler de erro dispara em vez do evento de load, algo na sua máquina matou a requisição. O console do Chrome até nomeia o culpado: net::ERR_BLOCKED_BY_CLIENT.

Quatro das seis verificações do widget têm esse formato, uma por tipo de requisição, porque as regras de filtro tratam scripts, imagens, imagens carregadas via CSS e fetches de forma diferente, e um bloqueador pode ser pego em uma enquanto passa em outra.

Muitos veículos dispensam os chamarizes por completo. O próprio script de anúncios do Google, o adsbygoogle.js, define um objeto JavaScript quando carrega, e a página simplesmente verifica se esse objeto existe. Quando o script de anúncios de verdade é a própria isca, bloqueá-lo e se denunciar viram o mesmo evento.

Como o YouTube detecta seu bloqueador de anúncios (e por que é diferente)

O YouTube não perde tempo com divs-isca. Seu player sabe quais anúncios o servidor anexou ao stream, espera que seus próprios eventos de reprodução disparem e carrega a lógica de detecção dentro do JavaScript do player, ofuscada e reembaralhada com frequência suficiente para obrigar os autores das listas de filtro a viver correndo atrás com novos remendos. O Google também já experimentou inserção de anúncios no lado do servidor, costurando os anúncios diretamente no stream de vídeo, onde nenhuma lista de filtro consegue alcançá-los. Isso é outra categoria de peso em relação a um script de isca copiado e colado, e vem respaldado por política: a posição do Google é que bloqueadores de anúncios violam os Termos de Serviço do YouTube. A corrida armamentista ali é rápida e específica, e é exatamente por isso que “como o YouTube detecta adblock” não tem resposta estável. A mecânica de iscas desta página tem, e é ela que sustenta os outros noventa e nove por cento dos muros de “desative seu bloqueador de anúncios”.

Acusado sem nenhum bloqueador de anúncios instalado

Digite “adblock detected” no Google e uma das primeiras sugestões é “adblock detected but no adblock”. As armadilhas explicam a confusão: elas disparam com o bloqueio, onde quer que ele more.

  • Filtragem de DNS. Um Pi-hole, um NextDNS ou um roteador com filtro de anúncios mata a requisição-chamariz antes de ela sair da sua rede. Para a isca, isso parece exatamente o uBlock Origin.
  • Navegadores que bloqueiam por padrão. Os Shields do Brave derrubam requisições de anúncio de fábrica, e a proteção contra rastreamento do Firefox no modo rigoroso bloqueia domínios conhecidos de anúncio e rastreamento. Nenhuma extensão necessária.
  • Outras extensões. Removedores de banner de cookies e ferramentas de privacidade escondem elementos e bloqueiam requisições por motivos próprios, e acionam as mesmas armadilhas.
  • Softwares de segurança. Suítes de antivírus com “proteção web” filtram domínios de anúncio para a máquina inteira.

O detector não consegue dizer qual camada comeu a isca, e a tela de aviso insistente não se importa. Se essa é a sua situação, o widget acima faz o diagnóstico: ele aponta quais das seis verificações dispararam. Uma verificação de elemento indica algo escondendo conteúdo da página; verificações de requisição indicam algo no caminho da rede.

Como impedir que sites detectem seu bloqueador de anúncios

Você tem três opções honestas e uma dupla mais bruta.

  • Colocar o site na lista de permissões (whitelist) do seu bloqueador. O desfecho que o muro existe para produzir, e o mecanismo que o Adblock Plus institucionalizou como seu programa Acceptable Ads, ativado por padrão.
  • Manter suas listas de filtro atualizadas. O mesmo ecossistema que bloqueia anúncios também bloqueia anti-adblock: a EasyList mantém uma Adblock Warning Removal List dedicada, e o uBlock Origin traz as listas “Annoyances”, que removem muitos muros antes mesmo de você vê-los.
  • Pagar pelos sites que você realmente lê. Encerra o impasse de vez.
  • Modo leitura, ou JavaScript desligado. A dupla mais bruta: ambos matam o detector junto com todo o resto que faz a página funcionar.

Bloquear anúncios é perfeitamente legal, e um site se recusar a atender você até que pare também é. A mais alta corte da Alemanha disse exatamente isso em 2018, quando editoras processaram os criadores do Adblock Plus e perderam. Com a lei resolvida dos dois lados, o que sobra é a corrida armamentista.

Seu bloqueador entra no seu fingerprint

Para a nossa comparação de cinco bloqueadores de anúncios populares, rodamos essas mesmas seis verificações contra cada um, e a variação foi ampla: o Adblock Plus acionou cinco das seis, o uBlock Origin duas, o Ghostery apenas uma.

Cinco bloqueadores contra as seis armadilhas
Bloqueador de anúnciosBibliotecaIsca CSSScriptImagemFundo CSSFetchpego por
Ghostery1/6
uBlock Origin2/6
uBlock Lite2/6
AdBlock3/6
Adblock Plus5/6
a verificação detecta o bloqueador o bloqueador passa despercebido
Mesma página, mesmas seis armadilhas: o Adblock Plus aciona cinco delas, o Ghostery uma. O formato da linha identifica uma configuração tão bem quanto a pontuação.

Duas coisas decorrem disso. Primeiro, os bloqueadores não são igualmente barulhentos, e “detectável” é uma propriedade que você pode escolher de antemão. Segundo, o padrão em si é informação. Quais armadilhas disparam depende de qual bloqueador e quais listas de filtro você usa, então o resultado viaja junto com o seu fingerprint de fontes e o hash de canvas para dentro do perfil que um rastreador constrói. Um bloqueador de anúncios não torna você invisível. Ele torna você alguém que bloqueia anúncios de um jeito específico e mensurável.

O que realmente fazer

  1. Veja o que dispara. Rode o widget nesta página e depois o scan completo do navegador para tudo o que vem junto: hashes de fingerprint, WebRTC, o pacote inteiro. Saber quais verificações pegam você é a diferença entre chutar e consertar.
  2. Acusado injustamente? Encontre a camada. Desative suas extensões e recarregue. Se continuar detectado, o bloqueio mora mais fundo: filtragem de DNS, padrões do navegador ou a proteção web do antivírus. Colocar um site na lista de permissões de uma extensão que você não tem nunca vai resolver um bloqueio que o seu roteador está fazendo.
  3. Gerencia múltiplas contas? Atenção ao padrão. Um padrão de bloqueio é mais um traço que precisa se manter consistente por identidade, sessão após sessão. O Incogniton mantém cada perfil como um navegador totalmente separado, com suas próprias extensões e configurações, de modo que os hábitos de bloqueio do perfil A nunca vazam para o fingerprint do perfil B.

Na próxima vez que um site jurar que você está usando um bloqueador de anúncios, você vai saber o que ele pegou de verdade: uma div que perdeu a altura, ou um chamariz que nunca voltou. O widget acima diz qual dos dois entregou você.

Logotipo da Incogniton

Eleve o nível da sua privacidade

Seta