- YouTube reforzó recientemente sus experimentos anti-bloqueo de anuncios, lo que ha provocado un fenómeno de buffering falso en algunos usuarios
- Este buffering falso funciona retrasando el inicio del video alrededor del 80% de la duración del anuncio
- Los usuarios pueden eludir parcialmente este efecto si agregan cierta configuración a los filtros del bloqueador de anuncios
- YouTube detecta y responde a los bloqueadores de anuncios con varias tecnologías, como Global Cache y el protocolo SABR
- Algunos scripts de bloqueo en JavaScript también provocan restricciones en el funcionamiento del navegador, los filtros y las extensiones
Resumen general
- Recientemente YouTube volvió a introducir y probar funciones anti-bloqueo de anuncios
- Mediante pruebas A/B, estas funciones experimentales se aplican solo a algunas cuentas
- Los usuarios pueden usar filtros en uBlock Origin o en el navegador Brave para evitar estos cambios (ya incluidos en los filtros predeterminados)
Fenómeno del buffering falso
- El principal síntoma es un buffering más largo al iniciar el video (no ocurre a mitad de la reproducción)
- La duración de este buffering falso equivale aproximadamente al 80% del tiempo del anuncio que normalmente habría que ver
- Por ejemplo, si el anuncio dura 15 segundos, el usuario experimentará unos 12 segundos de buffering
- Si hay varios anuncios seguidos, se genera un tiempo de espera equivalente a la suma del 80% de la duración de cada uno
- Aun así, quienes usan bloqueadores de anuncios siguen obteniendo una ganancia de tiempo
Estructura interna y funcionamiento
- InnerTube es la API interna oficial de YouTube, utilizada por los clientes web y móviles para acceder a videos e información relacionada
- Los streams de video se entregan mediante GVS (Google Video Services) y sus enlaces expiran con el tiempo, por lo que deben regenerarse
- YouTube también utiliza servidores de Google Global Cache para optimizar la carga de red
- Antes se configuraba el rango de video simplemente con parámetros de consulta, pero recientemente se usa un protocolo binario propietario llamado SABR (Server ABR)
- SABR puede enviar un backoff (orden de espera) cuando es necesario, haciendo que el cliente espere cierto tiempo
Causa real del buffering falso
- Cuando se detecta el uso de bloqueador de anuncios, InnerTube incluye en el stream GVS un backoff equivalente al 80% de la duración del anuncio
- Este backoff siempre se aplica si el usuario pertenece al grupo de prueba A/B, independientemente de si el anuncio fue bloqueado o no
- Los usuarios sin bloqueo de anuncios no perciben esta demora porque el backend precarga por adelantado el video de contenido
- Avisos como "Experiencing interruptions" aparecen debido a backoff prolongados
- Los supuestos problemas de sobrecarga de CPU que circulan en la web no son reales
Cómo bloquear los anuncios desde el origen
- Para evitar recibir el propio stream del anuncio, se puede establecer la propiedad
isInlinePlaybackNoAd en true
- Si la solicitud JSON incluye el campo
"isInlinePlaybackNoAd":true, InnerTube no incluye ni anuncios ni backoff
- Es posible aplicarlo automáticamente insertando una regla relacionada en los filtros de usuario de uBlock Origin
- Esta propiedad puede confirmarse en el JavaScript del frontend y en las definiciones de Protocol Buffers
Limitaciones y efectos secundarios
- Este método solo puede eludir el problema durante la navegación dentro de la app de página única de YouTube ya cargada (carga en caliente)
- En la primera entrada (carga en frío) no se puede aplicar debido a los datos iniciales proporcionados por el backend
- Intentar eliminar esos datos iniciales por la fuerza provoca varios problemas en streams en vivo, velocidad de la página y experiencia del usuario
Elusión del script de bloqueo (Locker Script)
- YouTube inserta en algunos grupos de prueba un script de bloqueo que vuelve inmodificables los objetos globales en la parte superior de la etiqueta ``
- Extensiones como uBlock Origin solo pueden hacer hooking de esos objetos antes de que se ejecute ese script
- Firefox puede eludirlo mediante filtrado HTML, pero los navegadores Chromium no admiten este método
- Como respuesta, es posible eludir los filtros mediante hooking de
Object.assign
- Con este método también es posible usar funciones avanzadas de Proxy para insertar
"isInlinePlaybackNoAd":true
1 comentarios
Opiniones de Hacker News
Alguien comparte su experiencia de haber dejado YouTube por completo; antes veía durante horas al día contenido educativo y científico excelente, pero sintió que en realidad no lo necesitaba, y además menciona que de paso todo se vuelve más limpio sin anuncios; si alguien le manda un video de YouTube a veces lo ve, pero ya no entra por iniciativa propia, y recomienda fuertemente a todos reducir este tipo de consumo pasivo de entretenimiento y dedicar ese tiempo a actividades creativas y conscientes
También está la opción de simplemente pagar; en su familia todos usan el plan de suscripción y viven sin anuncios, y siente que vale bastante la pena; probablemente podría terminar un proyecto de construcción de motocicleta sin videos, pero piensa: ¿para qué hacerlo así?
Hizo lo mismo con Netflix, canceló Prime y dejó de usar Amazon por completo; claro, AWS es la excepción porque por los datos en la práctica es imposible dejarlo; usa YouTube con un plan sin anuncios, y si alguna vez incumplen esa promesa, YouTube también quedaría vetado de forma permanente
Borró su cuenta de YouTube y se pasó a Patreon; sigue recibiendo notificaciones de los videos de los creadores a los que apoya en Patreon y los ve en YouTube, y eso le ha permitido consumir contenido de forma mucho más intencional y de mayor calidad
Se menciona la realidad de que grandes masas de población están adictas a este tipo de plataformas, comparándolo con la era del “tabaco 2.0”
Consejo: muchos de los mejores programas de ciencia también están en plataformas como PBS y Nebula
Mientras Google siga imponiendo anuncios, deberíamos prestar mucha más atención y vigilar lo inapropiados y fraudulentos que son muchos de los anuncios a los que estamos expuestos; especialmente si bloquear anuncios es la única forma de protegerse a uno mismo y a la familia de publicidad dañina, entonces hay que exigirle mucha más responsabilidad a Google por los anuncios que distribuye
Últimamente el nivel de los anuncios en YouTube es tan bajo e inapropiado que resulta alarmante; los directivos parecen dejar el estándar por los suelos solo para cumplir KPI, bonos y ascensos; incluso ha visto anuncios pornográficos en miniaturas desde el móvil, algo que considera peor que los antiguos anuncios de Evony Online, y lo ve como una señal de que el crecimiento de YouTube se está estancando
En la TV el tiempo de anuncios se controla de forma fija, pero en YouTube hay demasiados anuncios basura y larguísimos; a veces, incluso si saltas un anuncio de 5 segundos mientras solo tienes algo de fondo, se mete después un infomercial de 30 minutos o más; le parece extraño y casi criminal que permitan anuncios tan largos que interrumpen el flujo de visualización de forma involuntaria, y supone que YouTube debe cobrar muchísimo por colocar ese tipo de publicidad
Existe el principio de que el esfuerzo y el trabajo que requiere crear contenido y construir una plataforma deben recibir una compensación justa; se explica que todo contenido —libros, películas, TV, noticias— se paga de una u otra forma, ya sea con dinero o viendo anuncios; si odias la publicidad, recomiendan pagar una suscripción
Si existiera una bandera de “Thin Adblock Writer Line” para celebrar a los desarrolladores de bloqueadores de anuncios, ya la tendría puesta en el coche
La sugerencia simple es pagar el plan premium; nadie obliga a nadie a usar YouTube
Se menciona que en Firefox es fácil bloquear anuncios con filtros HTML, y sorprende descubrir que en Chromium eso no es posible por la falta de una API de extensiones; le impacta mucho esa diferencia en el entorno de desarrollo
Aunque últimamente experimenta con frecuencia retrasos de buffering en YouTube, en realidad no le molestan demasiado; lo irritante de los anuncios no es el tiempo, sino la exposición forzada a audio y video que nunca quiso; durante 12 segundos de buffering simplemente revisa el correo o se queda mirando al vacío, y siente que si el buffering se repite cada vez, el cerebro termina ignorándolo automáticamente; incluso cree que si ocurriera solo una de cada cinco veces, sería más molesto
Se plantea la pregunta de fondo: “¿Por qué justificamos el bloqueo de anuncios? El contenido cuesta dinero, almacenarlo y distribuirlo también cuesta, así que ¿realmente hay una base moral o un sentido de privilegio que justifique bloquear anuncios?”; si simplemente es porque la publicidad resulta desagradable, entonces quizá habría que preguntarse “¿por qué damos por hecho que todo debe ser gratis?”; no lo plantea como un juicio moral, sino como una duda sincera para entenderlo
Antes Google AdSense limitaba a 3 anuncios por página y hasta suspendía por incumplimiento, pero ahora una sola página web puede tener 10, 15 o más anuncios; en YouTube se pasó del banner inicial a anuncios antes del video, anuncios intermedios, segmentos patrocinados dentro del propio contenido e incluso anuncios en la parte inferior para suscriptores premium; hasta la búsqueda de Google llena la parte superior con anuncios y hay que hacer scroll para llegar a los resultados orgánicos; no dice tener derecho a usar todo gratis, pero siente que “ya se pasaron”, y por eso usa adblock en todos sus dispositivos
Señalan que la propia pregunta “¿por qué sentimos que tenemos derecho a lo gratis?” no refleja cómo piensa la gente real; se hace porque se puede y porque se quiere, y lo que necesitaría justificación ética es impedirlo; sostienen que nadie tiene una obligación moral de ver anuncios, y que la publicidad, por su naturaleza manipuladora y orientada a explotar la atención humana, además de invasiva para la privacidad, es un contrato que no puede imponerse legítimamente desde el origen
Como Google finge estar del lado del usuario mientras en realidad se vuelve hostil y anticompetitiva, bloquear anuncios se compara con tomar un arma en una guerra; antes la publicidad era difícil o imposible de bloquear, pero gran parte de lo que hoy se bloquea son híbridos entre anuncio y vigilancia; se comparten artículos relacionados y contexto adicional
Se señala que los creadores de YouTube reciben el 55% de los ingresos totales; incluso en medio del ambiente crítico hacia el gigantesco sistema de ganancias de Google, la realidad es que la mayor parte de los costos importantes termina yendo a los creadores; la participación activa, como apoyar en Patreon, solo la practican algunos fans muy dedicados, mientras que la mayoría de los usuarios, que comen un banquete gratis y solo se quejan del restaurante, en realidad están evitando asumir el costo
Se critica que un script pueda usar
Object.definePropertypara volver inmutable una propiedad del objeto global y así eludir el bloqueo mediante objetos señuelo, considerándolo una falla grave del navegador o de la especificación; sostienen que el contenido y los scripts de una página no deberían poder limitar el funcionamiento de las extensiones del navegadorAlguien aclara que su objetivo al bloquear anuncios es evitar distracciones y cambios de contexto; opina que la sobrecarga de información que generan los anuncios se vuelve difícil de tolerar cuando ya existe una carga cognitiva alta
Otro responde preguntando cómo puede ser alta la carga cognitiva mientras ves YouTube; se pregunta si en medio estás observando videos de entrenamiento quirúrgico o realizando un trasplante de corazón
Otro comenta que por solo 13 dólares al mes eso se resuelve fácilmente sin preocuparse por cambios de contexto; si la carga cognitiva es tan alta, seguramente gana lo suficiente como para que esa sea la opción más eficiente
Se transmite de forma directa la experiencia de alguien que paga gustosamente Youtube Premium para toda la familia, tanto por quitar anuncios como por preservar los ingresos de los creadores
Otro dice que no está de acuerdo en absoluto con eso y usa Newpipe; lo usa sin anuncios y sin gastar ni un centavo
No sabe si el comentario anterior es sarcasmo o no, pero si es en serio, le sorprende ver a alguien tan alegre y voluntariamente dispuesto a pagarle más dinero a los grandes terratenientes de internet
A alguien le sorprende que YouTube no inserte los anuncios directamente dentro del stream de video; en un entorno HLS/DASH sería fácil meter contenido intermedio, así que si los incluyeran en el stream sería más difícil bloquearlos; además, analiza que si limitaran la entrega de paquetes al ritmo de reproducción, también impedirían que la gente descargue por adelantado para saltárselos
Se explica que incluso en ese entorno HLS está tan optimizado a gran escala a nivel de hardware que, si agregan más cómputo para anuncios dirigidos, los costos necesariamente se dispararían; recomiendan revisar el material de Netflix sobre optimización de rendimiento de servidores edge para streaming para entender mejor el tema
Se analiza que YouTube no está intentando cambiar demasiado rápido, sino aplicar estas medidas gradualmente; predicen que pronto llegará el escenario en el que inserten anuncios directamente en el stream; por ahora los anuncios y el stream de video siguen separados, pero ya se están haciendo experimentos por separado con inserción de anuncios del lado del servidor
Se presenta la línea de bloqueadores de anuncios colaborativos basados en marcas de tiempo, como SponsorBlock y Tubular; también expresan confianza en que pronto aparecerá bloqueo de anuncios con reconocimiento de contenido por IA en tiempo real dentro del dispositivo, y que por más que intenten frenarlo, el bloqueo de anuncios no va a desaparecer fácilmente
De hecho, comparten que YouTube ya está haciendo pruebas A/B de inserción de anuncios del lado del servidor (SSAI); esa persona todavía no se ha topado con esos anuncios, pero comparte el estado actual
También consideran que el cliente podría recortar los anuncios del video del mismo modo en que los inserta; con una base de datos colectiva como la de sponsorblock, creen que la detección de anuncios es perfectamente posible y que incluso los anuncios incrustados en el stream podrían bloquearse o saltarse