volver al inicio Más artículos

Así detectan las webs tu bloqueador de anuncios (y cuándo se equivocan)

Positivo
Comprobando AdBlock...

Comprobando si tienes un bloqueador de anuncios instalado...

Hiciste clic para entrar a un artículo y lo que te encontraste fue un muro: “Bloqueador de anuncios detectado. Desactívalo para continuar”. Quizá la acusación era justa. Quizá no usas ningún bloqueador de anuncios y aun así el sitio insiste en que sí. En cualquier caso, el sitio nunca vio tu lista de extensiones, y te pilló de todos modos.

No existe ninguna API que le entregue a una página web tu lista de extensiones. Así que los scripts anti-adblock no buscan el bloqueador: plantan cosas que un bloqueador eliminaría y luego comprueban qué sobrevivió. El widget de esta página ejecuta ahora mismo seis de esas trampas contra tu navegador; el resto del artículo explica qué está haciendo cada una.

La versión corta: una página no puede preguntarte qué extensiones usas, así que en su lugar tiende trampas: un elemento de anuncio falso y un puñado de peticiones de anuncios falsas. Si el señuelo desaparece, estás bloqueando. Ese es todo el truco, y por eso también acaban acusadas cosas que no son bloqueadores de anuncios (el filtrado DNS, los Shields de Brave, algunos antivirus). Las trampas detectan el bloqueo, no los bloqueadores.

Las cuentas son simples: los anuncios pagan la página, los anuncios bloqueados no pagan nada, y un muro que reconvierte en impresiones a una parte de los visitantes que bloquean compensa el fastidio de todos los demás. Esa es la única razón de que existan los scripts que vienen a continuación.

El elemento señuelo: cazado por lo que falta

Casi todos los bloqueadores de anuncios traen de serie el mismo núcleo de reglas: EasyList, un catálogo mantenido por la comunidad de qué aspecto tiene la publicidad en una página. Junto a decenas de miles de patrones de URL, incluye reglas cosméticas: ocultar cualquier elemento con nombres de clase como ad-unit o adsbox.

Ese catálogo es público, así que los scripts anti-adblock también lo leen. El truco más viejo de la detección consiste en crear un div invisible de un píxel vestido exactamente con esos nombres de clase y leer su offsetHeight. Un navegador sin bloqueo reporta el píxel. Uno bloqueado reporta cero, porque un filtro cosmético puso el div en display: none. La página nunca vio tu extensión. Vio un div dejar de existir.

Un div señuelo, dos desenlaces
Lo que planta la página
<div class="adsbox ad-unit banner_ad">
oculto por un filtro cosmético
Lo que lee el detector
offsetHeight: 0
El señuelo desapareció. Bloqueador de anuncios detectado.
El detector planta un elemento que los bloqueadores de anuncios suelen ocultar, lo mide y deduce tu bloqueador por el hueco que dejó.

Esta es la comprobación “Señuelo CSS” del widget de arriba, y el motor dentro de las viejas bibliotecas BlockAdBlock y FuckAdBlock que la mitad de los tutoriales de «cómo detectar adblock» de internet siguen reempaquetando. Esa indirección es la misma jugada de los sistemas anti-bot cuando cazan la automatización del navegador: a Puppeteer tampoco lo ve nadie, solo lo que Puppeteer cambia.

Las peticiones que nunca vuelven

La segunda familia de trampas trabaja en la red. Los bloqueadores no se limitan a ocultar elementos: se niegan a descargar nada de servidores de anuncios conocidos, así que la página envía señuelos: un script de pagead2.googlesyndication.com, una imagen de tpc.googlesyndication.com, un fetch() a ads.pubmatic.com. Infraestructura publicitaria real, solicitada a propósito. Si en lugar del evento de carga se dispara el gestor de errores, algo en tu máquina mató la petición. La consola de Chrome hasta le pone nombre al culpable: net::ERR_BLOCKED_BY_CLIENT.

Cuatro de las seis comprobaciones del widget tienen esta forma, una por tipo de petición, porque las reglas de filtrado tratan de manera distinta los scripts, las imágenes, las imágenes cargadas por CSS y los fetch, y a un bloqueador lo pueden cazar en una mientras pasa otra sin problema.

Muchos editores se saltan los señuelos por completo. El propio script de anuncios de Google, adsbygoogle.js, define un objeto de JavaScript al cargarse, y la página simplemente comprueba si ese objeto existe. Cuando el script de anuncios real es su propio señuelo, bloquearlo y delatarte pasan a ser el mismo evento.

Cómo detecta YouTube tu bloqueador de anuncios (y por qué es distinto)

YouTube no se molesta con divs señuelo. Su reproductor sabe qué anuncios adjuntó el servidor al stream, espera que sus propios eventos de reproducción se disparen y lleva la lógica de detección dentro del JavaScript del reproductor, ofuscada y rebarajada con la frecuencia suficiente para que los autores de las listas de filtros tengan que ir parcheando detrás de ella. Google también ha experimentado con la inserción de anuncios del lado del servidor, cosiendo los anuncios directamente en el stream de vídeo, donde ninguna lista de filtros puede alcanzarlos. Eso juega en otra categoría de peso que un script señuelo copiado y pegado, y viene respaldado por política oficial: la posición de Google es que los bloqueadores de anuncios violan los Términos de Servicio de YouTube. Allí la carrera armamentística es rápida y específica, y exactamente por eso “cómo detecta YouTube el adblock” no tiene una respuesta estable. La mecánica de señuelos de esta página sí la tiene, y es la que ejecuta el otro noventa y nueve por ciento de los muros de “por favor, desactiva tu bloqueador de anuncios”.

Acusado sin tener ningún bloqueador instalado

Escribe “adblock detected” en Google y una de las primeras sugerencias es “adblock detected but no adblock”. Las trampas explican la confusión: se disparan con el bloqueo, viva donde viva.

  • Filtrado DNS. Un Pi-hole, NextDNS o un router con filtrado de anuncios mata la petición señuelo antes de que salga de tu red. Para el señuelo, eso es indistinguible de uBlock Origin.
  • Navegadores que bloquean por defecto. Los Shields de Brave descartan las peticiones de anuncios de fábrica, y la protección estricta contra el rastreo de Firefox bloquea dominios conocidos de anuncios y de rastreo. Sin necesidad de extensión.
  • Otras extensiones. Los eliminadores de banners de cookies y las herramientas de privacidad ocultan elementos y bloquean peticiones por sus propios motivos, y hacen saltar las mismas trampas.
  • Software de seguridad. Las suites de antivirus con “protección web” filtran dominios de anuncios para toda la máquina.

El detector no puede saber qué capa se comió su señuelo, y a la pantalla de aviso le da igual. Si este es tu caso, el widget de arriba hace el diagnóstico: nombra cuáles de las seis comprobaciones saltaron. Una comprobación de elemento apunta a algo que oculta contenido de la página; las comprobaciones de peticiones apuntan a algo en la ruta de red.

Cómo evitar que las webs detecten tu bloqueador de anuncios

Tienes tres opciones honestas y dos a lo bruto.

  • Poner el sitio en la lista blanca de tu bloqueador. El desenlace que el muro existe para producir, y el mecanismo que Adblock Plus institucionalizó como su programa Acceptable Ads, activado por defecto.
  • Mantener tus listas de filtros al día. El mismo ecosistema que bloquea anuncios también bloquea el anti-adblock: EasyList mantiene una lista dedicada, la Adblock Warning Removal List, y uBlock Origin incluye sus listas de “Annoyances”, que quitan muchos muros antes de que llegues a verlos.
  • Pagar por los sitios que de verdad lees. Corta el pulso de raíz.
  • Modo lectura, o JavaScript desactivado. Las dos a lo bruto: ambas matan el detector junto con todo lo demás que hace funcionar la página.

Bloquear anuncios es legal, y que un sitio se niegue a atenderte hasta que dejes de hacerlo también es legal. El tribunal supremo alemán lo dijo tal cual en 2018, cuando varios editores demandaron a los creadores de Adblock Plus y perdieron. Con la ley zanjada en los dos frentes, lo único que queda es la carrera armamentística.

Tu bloqueador se suma a tu fingerprint

Para nuestra comparación de cinco bloqueadores de anuncios populares ejecutamos estas mismas seis comprobaciones contra cada uno, y la dispersión fue amplia: Adblock Plus hizo saltar cinco de seis, uBlock Origin dos, Ghostery solo una.

Cinco bloqueadores contra las seis trampas
Bloqueador de anunciosBibliotecaSeñuelo CSSScriptImagenFondo CSSFetchcazado por
Ghostery1/6
uBlock Origin2/6
uBlock Lite2/6
AdBlock3/6
Adblock Plus5/6
la comprobación detecta el bloqueador el bloqueador pasa desapercibido
Misma página, mismas seis trampas: Adblock Plus hace saltar cinco, Ghostery una. La forma de la fila identifica una configuración tan bien como la puntuación.

De ahí se siguen dos cosas. La primera: no todos los bloqueadores hacen el mismo ruido, y “detectable” es una propiedad que puedes comparar antes de elegir. La segunda: el patrón en sí es información. Qué trampas saltan depende de qué bloqueador y qué listas de filtros usas, así que el resultado viaja junto a tu fingerprint de fuentes y tu hash de canvas hasta el perfil que construye un rastreador. Un bloqueador de anuncios no te hace invisible. Te convierte en alguien que bloquea anuncios de una manera concreta y medible.

Qué hacer en la práctica

  1. Mira qué salta. Ejecuta el widget de esta página y luego el análisis completo del navegador para todo lo adyacente: hashes de fingerprint, WebRTC, el lote completo. Saber qué comprobaciones te cazan es la diferencia entre adivinar y arreglar.
  2. ¿Acusado sin motivo? Encuentra la capa. Desactiva tus extensiones y recarga. Si te sigue detectando, el bloqueo está más abajo: filtrado DNS, valores por defecto del navegador o la protección web del antivirus. Poner un sitio en la lista blanca de una extensión que no tienes jamás arreglará un bloqueo que está haciendo tu router.
  3. ¿Gestionas varias cuentas? Cuida el patrón. Un patrón de bloqueo es un rasgo más que tiene que mantenerse consistente por identidad, sesión tras sesión. Incogniton mantiene cada perfil como un navegador completamente separado, con sus propias extensiones y ajustes, de modo que los hábitos de bloqueo del perfil A nunca se filtran al fingerprint del perfil B.

La próxima vez que un sitio jure que llevas un bloqueador de anuncios, sabrás qué fue lo que cazó en realidad: un div que perdió su altura o un señuelo que nunca volvió. El widget de arriba te dice cuál de los dos te delató.

Logotipo de Incogniton

Mejora tu privacidad

Flecha