AntiAdBlock.Core

Detección

9 min de lecturaPor Marcus Holt

Cómo detectar uBlock Origin Lite tras Manifest V3

uBlock Origin Lite es un bloqueador Manifest V3 que rompe las suposiciones de los scripts anti adblock clásicos. Esto es lo que cambió y cómo detectarlo.

Qué es realmente uBlock Origin Lite

uBlock Origin Lite, normalmente escrito uBOL, es una extensión distinta del uBlock Origin clásico. Se creó específicamente para la plataforma Manifest V3 de Chrome después de que Google empezara a retirar el Manifest V2. No es una versión recortada del original: es una arquitectura diferente con un comportamiento en ejecución diferente, y esa distinción es justo el motivo por el que la detección tiene que cambiar.

El uBlock Origin clásico es un bloqueador dinámico. Ejecuta un proceso en segundo plano persistente, lee cada petición de red y decide en JavaScript si bloquearla. uBOL no puede funcionar así. Bajo Manifest V3 depende casi por completo de la API declarativeNetRequest, donde es el propio navegador quien aplica un conjunto fijo de reglas que la extensión registró de antemano.

La consecuencia práctica para los editores es que uBOL es más silencioso. Hace menos trabajo dentro de la página, expone menos efectos secundarios observables y deja una huella mucho más pequeña para que un script de detección la encuentre. Un bloqueador que antes se delataba con artefactos evidentes de DOM y de tiempos ahora pasa desapercibido con mucha más limpieza.

declarativeNetRequest de MV3 frente al bloqueo dinámico de MV2

Bajo Manifest V2, un bloqueador podía interceptar el flujo webRequest y ejecutar lógica arbitraria antes de que una petición se completara. Ese poder es lo que usaban el uBlock Origin clásico, AdGuard y Adblock Plus. También les permitía inyectar scriptlets, reescribir respuestas y reaccionar a cualquier cosa que la página hiciera en tiempo de ejecución.

El Manifest V3 elimina la forma bloqueante de webRequest para los bloqueadores de contenido y la sustituye por declarativeNetRequest. La extensión entrega una lista de reglas estáticas; Chrome las compila y las aplica de forma nativa. La extensión nunca ve la petición individual y no puede tomar una decisión petición a petición en JavaScript. Esto es más rápido y más privado, pero también mucho menos flexible.

Para la detección esto importa porque la mayoría de las señales anti adblock heredadas eran en realidad señales de MV2. Dependían de que el bloqueador hiciera algo visible en JavaScript en el momento en que se lanzaba una petición. Con declarativeNetRequest el bloqueo ocurre por debajo de la página, en la capa de red del navegador, y la página solo ve el resultado: una petición que falló.

Por qué la detección por cebo clásica falla con uBOL

El truco anti adblock más antiguo es el cebo de DOM. El script crea un elemento con una clase como ad-banner o adsbox, espera un instante y comprueba si el elemento fue ocultado o eliminado. Si lo fue, debe de haber un filtro cosmético activo, así que hay un bloqueador presente.

uBOL desmonta esto de dos maneras. Primero, su filtrado cosmético es más limitado que el de uBO clásico, sobre todo en sus modos más bajos, así que un elemento cebo genérico puede no ocultarse en absoluto. Segundo, y más importante, la tarea central de uBOL es el bloqueo de red mediante declarativeNetRequest, no el ocultamiento cosmético. Un elemento cebo que nunca se descarga desde una URL bloqueada no le da nada al detector que observar.

Un cebo que sí carga un script desde una ruta de anuncios conocida aún puede funcionar, pero solo si la ruta está en la lista de reglas que uBOL incluye, y solo en los modos en los que uBOL tiene permisos de host para actuar. Una única sonda de cebo produce por tanto una respuesta de sí o no ruidosa y dependiente del modo. Con uBOL en concreto produce muchos falsos negativos, que es el peor modo de fallo para un editor: el bloqueador está ahí, se pierden ingresos y el script no informa de nada.

Los modos Basic, Optimal y Complete

uBOL expone tres niveles de permisos y cambian su comportamiento de forma drástica. En modo Basic uBOL usa solo los conjuntos de reglas que puede aplicar sin permisos de host por sitio. El filtrado de red sigue funcionando mediante declarativeNetRequest, pero el filtrado cosmético y la inyección de scriptlets son mínimos porque la extensión no tiene acceso a la página.

En modo Optimal el usuario concede permisos de host amplios, lo que desbloquea el filtrado cosmético genérico y un conjunto de reglas más extenso. En modo Complete se concede a uBOL acceso al sitio concreto y puede inyectar scriptlets y aplicar reglas cosméticas específicas del sitio, acercándose lo máximo a la experiencia del uBlock Origin clásico.

Un motor de detección que trate uBOL como una sola cosa se equivocará la mayor parte del tiempo. La misma extensión puede ser casi invisible en un sitio y agresivamente cosmética en otro, dependiendo solo del modo que el usuario eligió. Una detección fiable tiene que leer varias señales independientes e inferir el modo, en lugar de suponer un comportamiento fijo.

Huellas de tiempo, redirecciones noopjs y el ensemble

Incluso un bloqueo silencioso por declarativeNetRequest deja rastros medibles. Cuando Chrome bloquea una petición de forma nativa, el fallo regresa con una curva de tiempos distinta a la de un error de red genuino o un servidor lento. Medir cómo y cuándo fallan las peticiones de anuncios conocidas, a lo largo de varias sondas, produce una huella de tiempo que sobrevive a MV3.

Una segunda señal potente es la redirección. declarativeNetRequest puede redirigir una petición bloqueada hacia un recurso empaquetado y neutralizado, la llamada redirección noopjs o noop servida desde los web_accessible_resources de la extensión. Cuando una petición que debería haber devuelto código de anuncios resuelve en cambio a un script vacío pero sintácticamente válido, esa sustitución es en sí misma una prueba de bloqueador, y una prueba sólida para uBOL.

Ninguna de estas es concluyente por sí sola. Los tiempos pueden distorsionarse por una mala conexión; una redirección noop necesita la sonda adecuada; el cebo cosmético depende del modo. La respuesta robusta es un ensemble: ejecutar muchos vectores independientes y dejar que voten. AntiAdBlock Core usa un motor de 11 vectores justo por este motivo, y reentrena sus heurísticas cada noche contra las deltas de las listas de EasyList, uBlock y AdGuard para que las sondas vayan un paso por delante. Cualquier vector puede fallar; el veredicto no depende de él.

Un script adblock killer totalmente mantenido ejecuta todos estos vectores y vota el resultado, por eso la detección gestionada alcanza una precisión del 99,7% en todos los modos de uBOL donde un script de señal única cae casi a cero. La guía de anti-adblock script 2026 explica cómo configurarlo en un sitio en producción.

Preguntas frecuentes

¿uBlock Origin Lite es lo mismo que uBlock Origin?

No. uBlock Origin Lite (uBOL) es una extensión Manifest V3 independiente construida en torno a declarativeNetRequest. El uBlock Origin clásico es un bloqueador dinámico Manifest V2. Se comportan de forma distinta y necesitan detección distinta.

¿Por qué mi script anti adblock antiguo no detecta uBOL?

La mayoría de los scripts heredados dependen del cebo de DOM y de señales de filtrado cosmético. uBOL bloquea sobre todo en la capa de red mediante declarativeNetRequest y hace poco trabajo cosmético en sus modos bajos, así que las comprobaciones de cebo de un solo vector producen falsos negativos.

¿Se puede detectar uBlock Origin Lite de forma fiable?

Sí, pero no con un solo truco. Las huellas de tiempo en peticiones bloqueadas y las heurísticas de redirección noop sobreviven a MV3. Un ensemble que vota entre muchos vectores, como el motor de 11 vectores de AntiAdBlock Core, detecta uBOL en sus modos Basic, Optimal y Complete.

Pon a prueba el mejor script anti adblock.

Gratis hasta 10.000 detecciones al mes. Instalación en 60 segundos.

Sigue leyendo

Sigue explorando