- O YouTube reforçou recentemente seus experimentos anti-bloqueadores de anúncios, fazendo com que alguns usuários encontrem um efeito de buffering falso
- Esse buffering falso funciona atrasando o início do vídeo em cerca de 80% da duração do anúncio
- Os usuários podem contornar parcialmente esse efeito adicionando uma configuração específica ao filtro de bloqueio de anúncios
- O YouTube detecta e reage a bloqueadores de anúncios com várias tecnologias, como cache global e o protocolo SABR
- Alguns scripts de bloqueio em JavaScript também causam limitações no funcionamento do navegador, dos filtros e das extensões
Visão geral
- Recentemente, o YouTube voltou a introduzir e testar uma função anti-bloqueador de anúncios
- Por meio de testes A/B, a função experimental está sendo aplicada apenas a algumas contas
- Usuários do uBlock Origin ou do navegador Brave podem usar filtros para evitar essas mudanças (já incluídos nos filtros padrão)
Fenômeno de buffering falso
- O principal efeito é um buffering mais longo ao iniciar o vídeo (não ocorre no meio da reprodução)
- A duração desse buffering falso equivale a 80% do tempo do anúncio que originalmente teria de ser assistido
- Por exemplo, se o anúncio tiver 15 segundos, o usuário enfrentará cerca de 12 segundos de buffering
- Se houver vários anúncios em sequência, o efeito de espera corresponde à soma de 80% da duração de cada um
- Usuários com bloqueador de anúncios ainda assim continuam tendo ganho de tempo
Estrutura interna e princípio de funcionamento
- O InnerTube é a API interna oficial do YouTube, usada por clientes web e móveis para acessar vídeos e informações relacionadas
- Os fluxos de vídeo são entregues por GVS (Google Video Services), e os links expiram com o tempo, exigindo regeneração
- O YouTube também usa servidores do Google Global Cache para otimizar a carga de rede
- No passado, a faixa do vídeo era definida simplesmente por parâmetros de consulta, mas recentemente passou a usar um protocolo binário proprietário chamado SABR (Server ABR)
- O SABR pode enviar um backoff (comando de atraso) quando necessário, induzindo o cliente a esperar por um determinado período
Causa real do buffering falso
- Ao detectar um bloqueador de anúncios, o InnerTube inclui no fluxo GVS um backoff equivalente a 80% da duração do anúncio
- Esse backoff é sempre aplicado quando o usuário pertence ao grupo do teste A/B, independentemente de o anúncio estar sendo bloqueado ou não
- Usuários sem bloqueio de anúncios não percebem esse atraso, porque o backend pré-carrega o vídeo de conteúdo
- Notificações como "Experiencing interruptions" aparecem devido a backoffs prolongados
- Alegações que circulam na web, como "problema de sobrecarga de CPU", não são verdadeiras
Como bloquear anúncios na origem
- Para não receber o próprio fluxo de anúncios, é possível definir a propriedade
isInlinePlaybackNoAd como true
- Se a solicitação JSON incluir o item
"isInlinePlaybackNoAd":true, o InnerTube não incluirá anúncios nem backoff
- Usuários do uBlock Origin podem inserir a regra correspondente nos filtros do usuário para aplicar isso automaticamente
- Essa propriedade pode ser confirmada no JavaScript do frontend e nas definições de Protocol Buffers
Limitações e efeitos colaterais
- Esse método só pode contornar o problema em navegações dentro do aplicativo de página única do YouTube já carregado (warm loading)
- No acesso inicial (cold loading), isso não funciona por causa dos dados iniciais fornecidos pelo backend
- Tentar remover à força esses dados iniciais causa vários problemas, como em transmissões ao vivo, velocidade da página e experiência do usuário
Bypass do script de bloqueio (Locker Script)
- O YouTube insere, para alguns grupos experimentais, um script de bloqueio que torna objetos globais imutáveis no topo da tag ``
- Extensões como o uBlock Origin só conseguem fazer hook desses objetos antes que esse script seja executado
- O Firefox consegue contornar isso com filtragem de HTML, mas navegadores Chromium não oferecem suporte a esse método
- Em resposta a isso, é possível contornar o filtro com a abordagem de hook em
Object.assign
- Usando esse método, é possível inserir
"isInlinePlaybackNoAd":true com recursos avançados de Proxy
1 comentários
Comentários do Hacker News
Compartilha a experiência recente de ter largado o YouTube por completo; antes assistia por horas por dia, especialmente conteúdos excelentes de educação e ciência, mas sentiu que na prática não precisava disso. Menciona ainda o bônus de ficar sem anúncios e viver sem entrar no site de propósito, embora ainda veja ocasionalmente quando alguém envia um vídeo. Recomenda fortemente que todos reduzam o consumo passivo de entretenimento como o YouTube e redirecionem esse tempo para atividades criativas e conscientes.
Há também a opção de simplesmente pagar pelo serviço; a família inteira usa um plano de assinatura e vive sem anúncios. Considera que o custo-benefício vale muito a pena. Diz que até daria para terminar um projeto de montagem de moto sem vídeos, mas questiona por que faria isso.
Fez o mesmo com a Netflix e cancelou o Prime, deixando de usar a Amazon como um todo. Claro, o AWS é uma exceção por causa dos dados, então na prática é impossível largar. Usa o YouTube com plano sem anúncios e, se a promessa de não ter anúncios for quebrada, o YouTube também entrará na lista de banimento permanente.
Apagou a conta do YouTube e migrou para o Patreon. Ainda recebe notificações no YouTube para vídeos de criadores que apoia no Patreon, e isso permitiu um consumo de conteúdo muito mais intencional e de maior qualidade.
Menciona a realidade de uma grande parcela da população viciada nessas plataformas e compara isso à era do “cigarro 2.0”.
Dá a dica de que muitos dos melhores programas de ciência também estão em plataformas como PBS e Nebula.
Enquanto o Google continuar forçando anúncios, devemos prestar mais atenção e fiscalizar melhor o caráter impróprio e fraudulento dos anúncios aos quais somos expostos. O argumento é que, especialmente quando o bloqueio de anúncios é a única forma de proteger a si mesmo e a família contra publicidade nociva, faz sentido exigir mais responsabilidade do Google pelos anúncios que ele distribui.
Está chocado com o nível baixíssimo e inadequado dos anúncios no YouTube hoje em dia. Acha que a liderança está jogando o padrão no chão por causa de KPI, bônus e promoções. Já chegou a ver até anúncio pornográfico em miniatura no celular, algo que considera pior do que os antigos anúncios de Evony Online. Enxerga isso como sinal de que o YouTube entrou em estagnação de crescimento.
Na TV aberta, o tempo de anúncios é controlado de forma previsível, mas no YouTube há anúncios péssimos demais e longos demais. Às vezes, mesmo pulando um anúncio de 5 segundos enquanto algo toca ao fundo, entra um infomercial de 30 minutos ou até mais. Considera estranho, quase criminoso, que o YouTube permita anúncios tão longos atrapalhando o fluxo de visualização sem intenção do usuário. Supõe que a plataforma deve cobrar muito caro para aceitar esse tipo de publicidade.
Defende o princípio de que o esforço e o trabalho envolvidos na criação de conteúdo e na construção de plataformas merecem compensação justa. Explica que todo conteúdo — livros, filmes, TV, notícias — tem um custo, seja em dinheiro ou assistindo anúncios. Se a pessoa odeia anúncios, recomenda assinar o serviço pago.
Faz uma defesa bem-humorada dos desenvolvedores de bloqueadores de anúncios, dizendo que, se existisse uma bandeira “Thin Adblock Writer Line”, ela já estaria presa no carro.
Sugere simplesmente pagar pelo plano Premium; ninguém é obrigado a usar o YouTube.
Menciona que no Firefox é fácil bloquear anúncios com filtro HTML, e diz ter ficado surpreso ao descobrir que isso não é possível no Chromium por falta de API de extensão, ficando chocado com a diferença entre os ambientes de desenvolvimento.
Tem experimentado bastante atraso de buffering no YouTube recentemente, mas na verdade não considera isso um grande incômodo. O que incomoda nos anúncios não é o tempo, e sim a exposição forçada a áudio e vídeo que a pessoa não queria. Durante 12 segundos de buffering, apenas checa e-mails ou fica alguns segundos olhando para o nada, e acabou se adaptando naturalmente. Aliás, se o buffering acontece toda vez, parece que o cérebro passa a ignorar automaticamente; talvez fosse mais irritante se acontecesse só de vez em quando, tipo 1 em cada 5.
Levanta a pergunta fundamental: “Por que justificamos o bloqueio de anúncios? Conteúdo custa dinheiro, armazenamento e distribuição também custam; existe alguma base moral ou senso de privilégio para bloquear anúncios?”. Se a resposta for apenas que anúncios são desagradáveis, talvez devêssemos nos perguntar por que tratamos o gratuito como algo garantido. Diz que não é um julgamento moral, mas uma tentativa sincera de entender.
No passado, o Google AdSense limitava a 3 anúncios por página e até suspendia quem violasse isso, mas hoje há páginas com 10, 15 ou mais anúncios. No YouTube, começou com banners e depois vieram anúncios antes do vídeo, no meio, trechos patrocinados dentro do próprio conteúdo e até publicidade na parte inferior para assinantes Premium. Até a busca do Google já fica tão lotada de anúncios no topo que é preciso rolar para achar resultados orgânicos. Não quer defender um “direito” ao uso gratuito, mas acha que “passou de todos os limites” e por isso usa adblock em todos os dispositivos.
Argumenta que a pergunta “por que sentimos que temos direito ao grátis?” já parte de uma premissa diferente da forma como usuários reais pensam. As pessoas fazem porque podem e porque querem; quem quer impedir isso é que precisaria de uma razão ética. Ninguém tem obrigação moral de assistir anúncios. Pelo contrário, anúncios manipulam a atenção humana e extraem valor disso, sendo inerentemente manipulativos e invasivos à privacidade, portanto não são um contrato que possa ser imposto à força.
Compara o bloqueio de anúncios a pegar em armas numa guerra, porque o Google finge agir em benefício dos usuários enquanto se torna cada vez mais hostil e anticompetitivo. Explica que, no passado, anúncios eram difíceis ou impossíveis de bloquear, mas grande parte do que se bloqueia hoje é na verdade um híbrido de publicidade e vigilância. Fornece links com artigos relacionados e contexto adicional.
Aponta que criadores do YouTube recebem 55% da receita total e que, apesar do clima de crítica ao sistema altamente lucrativo do Google, a realidade é que boa parte dos custos importantes vai para os criadores. Apoio ativo, como no Patreon, é praticado apenas por uma minoria de fãs muito engajados; já a maioria, que reclama enquanto desfruta do “banquete grátis”, está apenas evitando arcar com os custos.
Aponta que o funcionamento de um script que usa
Object.definePropertypara tornar imutáveis propriedades de objetos globais, permitindo contornar bloqueios por meio de objetos-isca, representa uma falha grave do navegador ou da própria especificação. Defende que o conteúdo e os scripts da página não deveriam poder limitar funcionalidades de extensões do navegador.Diz claramente que o objetivo do bloqueio de anúncios, para si, é evitar distração e troca de contexto; com a sobrecarga informacional causada por anúncios, fica difícil tolerar mais esse incômodo em cima de uma carga cognitiva já elevada.
Questiona como alguém pode ter carga cognitiva alta vendo YouTube, perguntando com ironia se a pessoa está observando um vídeo de treinamento cirúrgico no meio de um transplante de coração.
Diz que isso se resolve facilmente pagando US$ 13 por mês e evitando a troca de contexto; se a carga cognitiva é tão alta assim, provavelmente a pessoa ganha o bastante para isso, então seria a opção mais eficiente.
Relata de forma direta a experiência de alguém que paga com gosto o Youtube Premium para a família inteira, tanto para remover anúncios quanto para preservar a renda dos criadores.
Diz que discorda totalmente disso e usa o NewPipe, assistindo sem anúncios sem gastar um centavo.
Comenta que não sabe se a mensagem acima é sátira ou não, mas, se for séria, acha surpreendente ver alguém pagando voluntária e alegremente ainda mais dinheiro a um grande senhorio da internet.
Considera surpreendente que o YouTube ainda não injete anúncios diretamente no stream de vídeo. Em ambientes HLS/DASH, seria fácil inserir conteúdo no meio do fluxo, o que tornaria o bloqueio de anúncios mais difícil. Além disso, se a taxa de envio de pacotes fosse limitada à velocidade de reprodução, também daria para impedir desvios por pré-download.
Explica que, mesmo nesse cenário, o HLS é tão fortemente otimizado em hardware em larga escala que adicionar computação extra para anúncios segmentados inevitavelmente faria os custos dispararem. Recomenda consultar materiais da Netflix sobre otimização de desempenho de servidores de borda de streaming para entender melhor o tema.
Analisa que o YouTube não está tentando mudar tudo rápido demais, mas sim aplicar mudanças aos poucos. Prevê que em breve virá um cenário com inserção direta de anúncios no stream. Hoje anúncios e stream de vídeo ainda estão separados, mas já haveria testes paralelos de inserção de anúncios no servidor.
Apresenta o fluxo de bloqueio colaborativo baseado em timestamp de ferramentas como SponsorBlock e Tubular, e demonstra confiança de que no futuro também surgirão bloqueadores com IA local em tempo real reconhecendo conteúdo publicitário no dispositivo. Acha que, por mais que tentem impedir, o bloqueio de anúncios não vai acabar tão cedo.
Diz que o YouTube já está de fato fazendo testes A/B com inserção de anúncios no lado do servidor (SSAI). Ainda não recebeu esses anúncios pessoalmente, mas compartilha o estado atual da situação.
Acredita que, da mesma forma que o cliente pode inserir anúncios no vídeo, também pode cortá-los. Com um banco de dados coletivo como o do SponsorBlock, seria perfeitamente possível detectar anúncios, e até anúncios embutidos no stream poderiam ser contornados e bloqueados.