La ficha ya no está. uBlock Origin — el de verdad, no la versión Lite — ha dejado de existir para la Chrome Web Store. El 31 de agosto Google retiró todas las extensiones Manifest V2 que quedaban, la última casilla sin marcar de un calendario de deprecación que lleva publicando, revisando y retrasando discretamente desde 2019.
Me senté a escribir el post obvio sobre esto. Plataforma grande se carga el bloqueador bueno, la web empeora, un minuto de silencio. Luego fui a buscar números para respaldarlo y tuve que tirar el borrador, que es molesto pero seguramente más útil.
El calendario, en corto
La pelea llevaba tiempo terminada; lo del 31 de agosto era papeleo.
La escotilla para empresas — la política ExtensionManifestV2Availability, que permitía a los administradores mantener MV2 vivo en flotas gestionadas — desapareció en Chrome 139. Este verano salieron de Chromium los flags de desarrollo que quedaban y el override por línea de comandos, así que a finales de julio ya no había ninguna forma soportada de reactivar Manifest V2 en Chrome. La purga del 31 de agosto quitó lo último: la posibilidad de instalarlo.
Si ya tienes uBO completo en un Chrome lo bastante viejo como para ejecutarlo, sigue funcionando. También deja de actualizarse para siempre. Guarda ese detalle.
La postura de Raymond Hill no ha cambiado en años y conviene contarla bien, porque mucha cobertura la cuenta del revés: no hay versión Manifest V3 de uBlock Origin completo porque él decidió que reconstruirlo con la nueva API destriparía justo lo que lo hacía útil, no porque Google lo prohibiera por su nombre. Lo que sí publica para Chrome es uBlock Origin Lite, una extensión distinta y más pequeña, construida sobre las primitivas de MV3 desde el principio.
La parte donde se me cae el obituario
Esto es lo que me destrozó el borrador. Un artículo revisado por pares en PoPETs a principios de año — investigadores de la Universidad Goethe de Fráncfort, con el código de replicación en GitHub — cogió cuatro bloqueadores (Adblock Plus, AdGuard, Stands y uBlock Origin), ejecutó las versiones MV2 y MV3 de cada uno en su configuración por defecto sobre 924 sitios web, y midió qué se colaba de verdad.
Ninguna caída estadísticamente significativa. En una de las mediciones, las versiones MV3 pillaron de media 1,8 scripts de rastreo más por sitio.
Ese no es el resultado que esperaba nadie en ninguno de los dos bandos, yo incluido. «Manifest V3 mata el bloqueo de anuncios» se ha repetido tantas veces que había adquirido textura de hecho, y cuando por fin alguien se sentó a medirlo bien sobre un crawl real, el efecto era prácticamente cero.
Así que antes de nada: si estás en Chrome e instalas uBO Lite, no vas por ahí desprotegido. Funciona. Hill lo mantiene. La sesión de navegación mediana está cubierta.
Lo que el benchmark no mide
Y aun así.
Un crawl de 924 sitios en configuración por defecto es exactamente el escenario donde una lista de reglas estática y predeclarada luce estupendamente. Sitios grandes, redes publicitarias mainstream, justo el tráfico para el que todas las listas de filtros llevan reglas curadas desde siempre. Claro que el motor declarativo lo resuelve: esa carga de trabajo es para la que se diseñó.
Lo que esa medición no puede ver es todo lo que haces cuando los defaults no funcionan. El filtrado dinámico, cuando desactivas un tercero concreto en un sitio concreto porque algo se ha roto. El selector de elementos, para el bloque patrocinado que carga desde una ruta de primera parte y que ninguna regla de red va a cazar jamás. El logger, para cuando una página hace cosas raras y quieres ver qué está pidiendo en realidad. Tus propios filtros, añadidos a la 1 de la mañana, con efecto inmediato.
Nada de eso entra en el benchmark, porque nada de eso es un default. Es la cola larga — y la cola larga es la razón entera por la que la gente con manías eligió uBO en vez de los otros seis bloqueadores que también bloquean DoubleClick.
El resumen honesto es más estrecho y menos citable de lo que le gustaría a cualquiera de los dos bandos: MV3 no degradó el bloqueo de forma medible para el usuario mediano, y sí eliminó casi todos los controles por los que el usuario no mediano instaló uBO.
Una extensión ha dejado de ser un programa
El cambio de fondo cabe en una línea, y es lo que merece la pena llevarse aunque no toques una extensión de navegador en tu vida.
Con MV2, un bloqueador registraba un listener en webRequest y se le llamaba, dentro del camino de red, para absolutamente cada petición del navegador. Tu código se ejecutaba. Mirabas la URL, el iniciador, el tipo, el estado que hubieras ido acumulando, y decidías. Lógica arbitraria, en tiempo de petición.
Con MV3 tienes declarativeNetRequest. Escribes las reglas por adelantado, se las das a Chrome, y Chrome hace el matching en su propio motor. Tú no estás en el camino. No ves las peticiones. Y tienes presupuesto: un mínimo garantizado de 30.000 reglas estáticas, con las dinámicas en una cuota bastante más apretada.
Ese es el cambio entero: de ejecuta mi código en cada petición a declara tu intención y ya lo aplicamos nosotros. Una extensión ha pasado de ser un programa a ser un fichero de configuración.
Y aquí viene la parte que tengo que concederles cada vez que quiero enfadarme más de lo que consigo: las razones que da Google no son falsas. Un listener bloqueante de webRequest es, literalmente, código de terceros metido en el camino crítico de cada petición de red, con acceso en directo a todo lo que navegas, publicado por quien sea que instalaste. Como arquitectura, da miedo. Si diseñaras las extensiones de navegador hoy, no diseñarías eso.
El problema nunca fue que la API vieja fuese defendible. Es que la empresa que decidió que tenía que morir es también la empresa que vende los anuncios, así que nadie iba a leer el cambio con buena fe — y Google se pasó seis años comportándose de forma que la lectura con mala fe pareciera razonable. No puedes montar el argumento de rendimiento y privacidad y ser a la vez el negocio publicitario. Esa decisión tenía que tomarla otro y no había otro.
La copia congelada es la bomba de verdad
Vuelvo al detalle de antes, porque creo que es lo que se está infravalorando.
El estudio comparó bloqueadores MV2 y MV3 que estaban ambos mantenidos. Es una comparación justa y es la que había que hacer. No es la situación en la que está nadie ahora.
Bloquear anuncios es un juego adversarial con reloj semanal. Las listas de filtros se mueven sin parar porque el otro lado se mueve sin parar: los dominios rotan, las rutas se aleatorizan, el CDN baraja. Un bloqueador que deja de actualizarse no falla un martes; se degrada, en silencio, durante meses, mientras el iconito de la barra te sigue diciendo que todo va bien.
Así que las instalaciones congeladas de uBO completo que siguen corriendo en Chromes viejos están con la cuenta atrás puesta. Son el mejor bloqueador que ha hecho nadie, apuntando a la web de agosto pasado, para siempre.
uBOL sí se mantiene, pero sus actualizaciones de listas viajan en las releases de la extensión, pasando por la revisión de la store, en vez de descargarse a su propio ritmo. Eso es un cambio de latencia en una carrera que se mide en días. Ni fatal, ni irrelevante — y es el eje que me gustaría ver medido dentro de un año: no «¿MV3 bloquea?», sino «¿cómo deriva el bloqueo de MV3?».
Qué haría yo
Si quieres uBO completo, la respuesta es un navegador que siga soportándolo. Firefox 155 lo hace, Brave lo hace. No es un apaño: es donde vive la extensión ahora.
Si te quedas en Chrome — la mayoría se queda, y está bien — instala uBO Lite, el de Hill, y deja de darle vueltas. Pero ya que entras, mira lo que tienes instalado. Un montón de extensiones MV2 abandonadas acaban de volverse permanentemente inmantenibles, y a una buena parte de ellas las va a «adquirir» alguien a quien le va a encantar ser dueño de una extensión congelada, con permisos amplios de host y una base de usuarios que no está mirando. Eso ya ha pasado, varias veces, y va a volver a pasar este otoño. Cualquier cosa MV2 que no estés usando activamente, quítala hoy.
Y si construyes sobre una plataforma que no es tuya, el patrón de aquí es el que hay que archivar. Nadie te ha quitado una funcionalidad. Te han cambiado la forma del acceso: código en el camino, sustituido por declaraciones que evalúa otro. Los benchmarks salen bien, porque los benchmarks miden el caso común y el caso común es exactamente para lo que se construyó la versión declarativa. Lo que has perdido son todas las escotillas a las que habrías recurrido el día en que el caso común no aplicaba — y eso te enteras después, de una cosa rota concreta cada vez.
En fin
Manifest V2 está muerto, los bloqueadores siguen bloqueando casi igual, y no creo que eso sea la buena noticia que parece. Lo medible no se ha movido. Lo no medible — poder meter la mano y cambiar el comportamiento del software que corre en tu propia máquina, ahora mismo, sin pedirle permiso a una tienda — es lo que se ha ido.
En fin. Vete a auditar tu lista de extensiones. La mitad son fósiles.
Comentarios