Vídeos do YouTube com onebox embedding pararam de funcionar

Gostaria muito de receber conselhos sobre o que fazer aqui, mas também tenho algumas ideias sobre como isso poderia ser melhor tratado.

O que pode estar acontecendo

Uma teoria é que nosso servidor pode ter sido identificado pelo YouTube como potencialmente fazendo farming de vídeos de música e, por isso, estamos sendo limitados/bloqueados.

Somos um fórum realmente insignificante no Reino Unido, com tráfego modesto, mas temos alguns tópicos (na verdade, um dividido em dois devido ao tamanho) com 10 mil + 2 mil posts de vídeos de música. É uma corrente musical onde o próximo participante simplesmente posta uma música relacionada, muitas vezes de forma tangencial, ao post anterior.

Temos outros tópicos com links do YouTube, claro, mas este é particularmente denso em música (~100%).

Após uma reprocessamento (rebake) no fim de semana, estou supondo que o YouTube analisou a atividade do Oneboxer tentando capturar cabeçalhos de muitos vídeos de música e seu algoritmo nos colocou no “banco dos culpados”.

Posteriormente, tentei novamente processar os posts, o que presumivelmente confirmou as suspeitas do YouTube de que tudo o que fazemos a partir deste endereço IP é tentar baixar vídeos de música.

Pode estar relacionado à Digital Ocean

Então, pesquisando no Google erros 429 no YouTube e ignorando todos os resultados da API do YouTube, eventualmente cheguei a um grupo de problemas com nomes semelhantes, todos afirmando que seus endereços IP foram listados em cinza/preto/banidos por estarem em servidores virtuais — o nome da Digital Ocean foi especificamente mencionado.

A sugestão é que o YouTube pode “banir” uma série de endereços IP e que outros servidores legítimos são frequentemente arrastados como dano colateral.

Aqui está um desses problemas e uma solução potencial.

https://support.google.com/youtube/thread/21697789?hl=en

e aqui está outro de um desenvolvedor no medium.com que trabalha com a API embed.ly.

https://support.google.com/youtube/thread/21939228?hl=en

A resolução sugerida no primeiro post foi desabilitar o ip6 no droplet.

Alguém sabe se isso parece plausível ou se causaria algum problema?

Ainda não fiz isso por enquanto, para que eu possa coletar quaisquer outros dados que possam ser necessários para ajudar na resolução.

O que deveria acontecer?

Primeiramente, entendo que a reação aqui provavelmente seja a de que minha experiência é um caso isolado e que nenhuma mudança é necessária.

Posso entender isso. Mas se @marcozambi e eu encontramos o mesmo problema em um período relativamente curto, isso sugere que pode ser algo que outros também encontrarão. Talvez o YouTube tenha se tornado recentemente mais rigoroso em sua fiscalização de incorporações?

Peço que lembrem que, no momento, meu fórum está em completo limbo. Tenho dezenas de milhares de links que falharam em ser incorporados (Oneboxed), mas não sei onde estão e só consigo pensar em um reprocessamento total para encontrá-los todos, o que quase certamente atrairá mais atenção negativa do YouTube.

No mínimo, o Onebox não pode falhar silenciosamente ao encontrar um erro de limite de taxa (rate-limit). Ele deve chamar a atenção dos administradores e, quando possível, pausar o processo que desencadeou o problema de limite de taxa.

Opções para chamar a atenção do dono do fórum

Não acho que isso seja fácil. De forma alguma.

Vejo o Onebox desempenhando vários papéis distintos:

a) ele cria Oneboxes em tempo real à medida que os posts são compostos,
b) ele responde a reprocessamentos de posts antigos (com links muitas vezes já conhecidos) em segundo plano e sem interface gráfica (headless),
c) ele é solicitado a lidar com massas de posts de trabalho em segundo plano durante uma migração/reprocessamento.

Se um erro de limite de taxa ocorresse no cenário a), o autor perceberia que o Onebox não foi expandido e poderia reclamar com os administradores do fórum — talvez fosse notado. Acredito também que seja possível capturar o único erro durante a composição e enviar um erro ou mensagem aos administradores.

No cenário b), a falha pode ocorrer durante o processamento em segundo plano do post e, portanto, precisaria ser re tentada ou, se uma contagem de tentativas tivesse sido atingida, poderia ser marcada como falha e os administradores do fórum notificados.

No cenário c), seria necessário conhecer o contexto mais amplo de muitas falhas ocorrendo ao mesmo tempo. No momento, não acredito que exista algum controle abrangente do processo de reprocessamento de posts, de modo que 10.000 erros 429 retornados pelo Onebox pudessem ser reconhecidos como um problema maior do que enviar 10.000 mensagens individuais aos administradores.

Na realidade, uma falha como essa significaria que todas as chamadas ao Onebox para expansão de vídeos do YouTube (podem ser outros provedores também) precisariam ser colocadas em espera até que não estejamos mais limitados por taxa.

Abordagens alternativas

Limitar taxa de solicitações de saída

Acho que o ditado “prevenção é melhor que cura” poderia ditar que um limitador de taxa (rate-limiter) do Discourse fosse colocado na frente das solicitações, para que o Discourse então segurasse as solicitações com base em algumas configurações configuradas.

Isso causaria caos nos reprocessamentos e migrações.

Assistente Onebox

Talvez todos precisemos de relações comerciais com organizações que armazenam em cache e proxy incorporações, como a usada por @merefield em seu plugin Onebox Assistant?

Whitelist do ‘bot’

Seria possível encontrar uma maneira de colocar o ‘bot’ do Discourse na lista branca (whitelist) do YouTube? Provavelmente muito aberto a abusos.

API do YouTube

Assim como o Onebox faz com o Twitter, talvez pudéssemos usar a API do YouTube se os limites de taxa forem maiores?

Boas pesquisas aí, obrigado.

Não sei se você notou, mas mencionei que até o Signal Messenger tem problemas com o YouTube e isso ainda é um problema aberto:

https://meta.discourse.org/t/onebox-assistant-crawl-for-those-previews-reliably/107405/9?u=merefield

Isso também acontece no WhatsApp.

Só queria acrescentar que somos “banidos” pelo YT regularmente a cada 2 ou 3 semanas, ficamos banidos por cerca de uma semana e depois somos desbanidos. Então o ciclo se repete.
Temos apenas algumas centenas de links para vídeos do YT, e nossos usuários postam não mais do que uma mão cheia por dia…

Então, sem usar o plugin OneBox Assistant, não há solução para visualizar os links youtu.be no Discourse padrão?

Todos os formatos de links do YouTube devem ser expandidos pelo Onebox.

Não está funcionando para você?

Se não, quais problemas você está observando?

Estou na versão mais recente do Discourse e acabei de fazer uma postagem com um link youtu.be, mas a prévia não apareceu. Links normais do YouTube funcionam.

Vamos ver

https://youtu.be/gLCduDJVksc parece bom para mim

Sim, funciona no meta.discourse. Estou tentando descobrir por que não funciona no meu. Há alguma configuração para ajustar isso no painel de administração?

O YouTube provavelmente baniu seu servidor ou intervalo de IP, conforme discutido acima.

Mas links normais do YouTube funcionam. Se eles tivessem sido banidos, não seria que nenhum deles funcionaria?

Não é esse o caso, @AntiMetaman.

Como sugerido acima por @codinghorror, o YouTube parece aplicar limites de taxa ou banir certos formatos de links do YouTube, enquanto outros continuam funcionando.

No meu caso, o formato ‘/embed’ funciona, mas os outros não.

Parece que o YouTube impõe limites de taxa que variam conforme o formato. O formato ‘/embed’ parece permitir um número maior de requisições. Isso é puramente anecdótico e não tenho dados concretos sobre isso.

Algumas perguntas:

Você está hospedando no Digital Ocean?

Você está usando IPv6?

Verificou se o ID do vídeo está corretamente formatado — 11 caracteres? (pergunta boba, mas você ficaria surpreso)

Para um determinado vídeo do YouTube, você testou cada um dos três formatos suportados? Ou seja:

Qual funcionou e qual não funcionou?

Bati a cabeça nesse problema por semanas, mas consegui uma solução viável — embora realmente não entenda por que ela funciona.

Supondo que você esteja enfrentando o mesmo problema, tente instalar o Onebox Assistant, ative-o, mas não o configure.

Descobri que precisei reiniciar o servidor após ativá-lo para garantir que funcionasse.

Nessa configuração — que realmente não deveria funcionar de forma alguma — meus vídeos do YouTube, que estavam sujeitos a limite de taxa (em qualquer formato), são expandidos pelo Onebox. Mas não tenho ideia de como isso funciona.

Tenho discutido o problema com @merefield (o autor) aqui…

https://meta.discourse.org/t/onebox-assistant-crawl-for-those-previews-reliably/107405/36?u=bletch

SE, e é um grande SE, isso também funcionar para você, não é uma solução adequada, pois se trata apenas de uma peculiaridade nos valores de retorno de métodos e não deve ser confiada a longo prazo.

Separadamente, também usei o plugin Onebox Assistant conforme o previsto — inscrevendo-me no embed.rocks — e funciona perfeitamente.

Você pode definir links regulares e não regulares do YouTube, por favor?

Se for esse o caso, por que o Onebox não converte para o formato que funciona antes de consultar os dados?

Poderia, acho, mas não é uma ‘solução’.

Todos os formatos parecem ter limite de taxa e eventualmente falham. Até mesmo o formato ‘/embed’ falhou para mim depois que tentei reprocessar todos os embeds do YouTube que haviam falhado durante um reprocessamento anterior.

Além disso, só vi duas experiências compartilhadas aqui em que a rota ‘/embed’ funcionou onde outras falharam — incluindo a minha.

Ainda não há evidências suficientes, nem ‘afetados’ suficientes, para sugerir uma mudança.

Você também está enfrentando o problema, @Terrapop, ou é apenas um interessado?

Sou um interessado, pois em breve estaremos migrando nossa comunidade popular para o Discourse. Por enquanto, estamos apenas em fase de testes; funciona por enquanto, mas queremos ter uma configuração segura desde o início. Assim, provavelmente configuraremos o Onebox Assistant para apontar para nosso próprio endpoint, que fará o relay e o cache das respostas de embeds.rock. Caso isso falhe, faremos a extração via Iframely.

Ok, então eu estava apenas brincando e consegui reproduzir isso aqui no meta.discourse! Acredito que tenha algo a ver com o markdown. Meus links youtu.be funcionam mesmo no meu fórum como pretendido, apenas não nos exemplos abaixo. O YouTube não está bloqueando meu host de forma alguma.

  1. Isso não funcionará nem no meta.discourse: https://youtu.be/MLpyi-oVoI

Veja? Não há nada de errado com o link do vídeo. Se você colocar o link na linha seguinte, ainda assim não funcionará.

  1. Isso também não funcionará:
    https://youtu.be/MLpyi-oVoIY

Você vê? Agora, se eu colar o mesmo link aqui, ele funcionará:

Fico feliz que você não esteja sendo bloqueado pelo YouTube. Acredito que tudo está funcionando como deveria — é um problema de formatação.

Acredito que a expansão do Onebox exige que o link esteja: a) no início de uma linha, sozinho, e b) se estiver no meio de uma lista, precisa de uma quebra de linha adicional antes dele.

Se você olhar a versão bruta da sua postagem:

https://meta.discourse.org/raw/153748/36

Ok, então eu estava apenas brincando e consegui reproduzir isso aqui no meta.discourse! Acredito que tenha algo a ver com markdown. Meus links youtu.be de fato funcionam no meu fórum como pretendido, apenas não nos exemplos abaixo. O YouTube não está bloqueando meu host de forma alguma.

1. Isso não funcionará nem no meta.discourse: https://youtu.be/MLpyi-oVoI

Viu? Não há nada de errado com o link do vídeo. Se você colocar o link na linha seguinte, ainda não funcionará.

2. Isso também não funcionará:
https://youtu.be/MLpyi-oVoIY

Viu? Agora, se eu colar o mesmo link aqui, ele funcionará:

https://youtu.be/MLpyi-oVoIY

Você pode ver que no primeiro item (1) — o link aparece no meio da linha, então não será expandido. O link deve ser a primeira coisa na linha.

E no item 2, há apenas uma quebra de linha antes do link do YouTube, então ele também não será expandido.

Se você olhar a versão formatada da sua postagem, poderá ver que o link do YouTube tem um recuo pendente…

…o que significa que o markdown ainda está tratando o link como parte do ponto da lista 2, então não o expandirá.

Você pode fazer o seguinte.

  1. Este é um texto de preenchimento
  2. Este link funcionará, pois deixei duas quebras de linha após esta linha e antes do link do YouTube

Sim, vou ter que aprender a trabalhar com Markdown e colocar os links do YouTube em uma linha separada. Meus usuários ainda estão se acostumando com isso, e foi um post feito por um usuário que chamou minha atenção, onde o link youtu.be deles não funcionou, o que levou a tudo isso.

Olá, comecei a reprocessar mais de 1 milhão de publicações há 2 dias, e as prévias do YouTube não funcionam mais desde hoje, então imagino que meu IP tenha sido bloqueado.
O que é recomendado neste caso? Devo apenas aguardar o término do reprocessamento e entrar em contato com o YouTube para ver se posso ser desbloqueado?
Ou usar "Onebox Assistant", crawl for those previews reliably!?

Certamente é uma opção, se você puder arcar com o custo.