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.
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.
<div class="adsbox ad-unit banner_ad"> offsetHeight: 0 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.
| Bloqueador de anúncios | Biblioteca | Isca CSS | Script | Imagem | Fundo CSS | Fetch | pego por |
|---|---|---|---|---|---|---|---|
| Ghostery | ✓ | ✓ | ✓ | ✕ | ✓ | ✓ | 1/6 |
| uBlock Origin | ✓ | ✓ | ✓ | ✕ | ✓ | ✕ | 2/6 |
| uBlock Lite | ✓ | ✓ | ✓ | ✕ | ✓ | ✕ | 2/6 |
| AdBlock | ✓ | ✓ | ✕ | ✕ | ✓ | ✕ | 3/6 |
| Adblock Plus | ✕ | ✕ | ✕ | ✕ | ✓ | ✕ | 5/6 |
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
- 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.
- 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.
- 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ê.