Los videos de YouTube con incrustación onebox dejaron de funcionar

Me encantaría recibir consejos sobre qué hacer en este caso, pero también tengo algunas ideas sobre cómo podría manejarse mejor.

Lo que podría estar sucediendo

Una teoría es que nuestro servidor pudo haber sido identificado por YouTube como un posible granjero de videos musicales y, por eso, estamos siendo limitados o bloqueados.

Somos un foro realmente insignificante en el Reino Unido con un tráfico modesto, pero tenemos un par de hilos (en realidad uno dividido en dos debido a su tamaño) con 10.000 + 2.000 publicaciones de videos musicales. Es una cadena musical donde el siguiente usuario simplemente publica una canción relacionada, a menudo de manera tangencial, con la publicación anterior.

Por supuesto, tenemos otros hilos con enlaces de YouTube, pero este en particular es (~100 %) denso en contenido musical.

Tras una reconstrucción (rebake) el fin de semana, supongo que YouTube analizó la actividad del Oneboxer al intentar obtener encabezados de muchos videos musicales y su algoritmo nos puso en la lista de sospechosos.

Posteriormente, volví a intentar reconstruir las publicaciones, lo que presumiblemente confirmó las sospechas de YouTube de que lo único que hacemos desde esta dirección IP es intentar descargar videos musicales.

Podría estar relacionado con Digital Ocean

Así que, al buscar en Google los errores 429 en YouTube e ignorando todos los resultados relacionados con la API de YouTube, finalmente se llega a un grupo de problemas similares que indican que sus direcciones IP han sido incluidas en listas grises, negras o prohibidas como resultado de estar en servidores virtuales. El nombre de Digital Ocean fue mencionado específicamente.

La sugerencia es que YouTube podría “prohibir” una serie de direcciones IP y que otros servidores legítimos a menudo se ven afectados como daño colateral.

Aquí hay un problema y una posible solución de este tipo:

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

Y aquí hay otro de un desarrollador en medium.com que trabaja en la API de embed.ly:

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

La resolución sugerida en la primera publicación fue deshabilitar IPv6 en el droplet.

¿Alguien sabe si eso suena plausible o si podría causar algún problema?

He pospuesto hacer esto por el momento para poder recopilar cualquier otro dato que pueda ser necesario para ayudar a resolver el problema.

Lo que debería suceder

En primer lugar, entiendo que la reacción aquí probablemente sea que mi experiencia es un caso excepcional y que no se necesita ningún cambio.

Puedo entenderlo. Pero si @marcozambi y yo hemos encontrado el mismo problema en un período relativamente corto, entonces sugiere que podría ser algo que otros también verán. ¿Quizás YouTube se ha vuelto más estricto recientemente en su control de las incrustaciones?

Les pediría que recuerden que, en este momento, mi foro está en un limbo completo. Tengo decenas de miles de enlaces que no se han incrustado correctamente mediante Onebox, pero no sé dónde están y solo se me ocurre hacer una reconstrucción total para encontrarlos todos, lo que casi con seguridad atraerá más atención negativa por parte de YouTube.

Como mínimo, Onebox no puede fallar en silencio cuando se encuentra con un error de límite de tasa. Debe alertar a los administradores y, cuando sea posible, pausar el proceso que desencadenó el problema de límite de tasa.

Opciones para alertar al propietario del foro

No creo que esto sea fácil. En absoluto.

Veo que Onebox desempeña varios roles claramente diferentes:

a) Construye Oneboxes en tiempo real a medida que se redactan las publicaciones.
b) Responde a reconstrucciones de publicaciones antiguas (a menudo con enlaces ya conocidos) en segundo plano y de forma silenciosa.
c) Se le pide que maneje grandes cantidades de trabajos en segundo plano durante una migración o reconstrucción.

Si ocurriera un error de límite de tasa durante el escenario a), el autor notaría que el Onebox no se expandió y podría quejarse a los administradores del foro; podría ser detectado. Supongo que también es posible capturar el único error durante la redacción y enviar un error o mensaje a los administradores.

En el escenario b), el fallo podría ocurrir durante el procesamiento en segundo plano de la publicación y, por lo tanto, necesitaría reintentarse o, si se alcanzara un número máximo de reintentos, podría fallarse y notificar a los administradores del foro.

En el escenario c), sería necesario conocer el contexto más amplio de muchos fallos ocurriendo al mismo tiempo. En este momento, no creo que exista ningún control general del proceso de reconstrucción de publicaciones de modo que 10.000 errores 429 devueltos por Onebox puedan reconocerse como un problema mayor que enviar 10.000 mensajes individuales a los administradores.

En la práctica, un fallo como ese significaría que todas las llamadas a Onebox para la expansión de videos de YouTube (y posiblemente de otros proveedores también) deberían suspenderse hasta que ya no estemos sujetos a límites de tasa.

Enfoques alternativos

Limitar las solicitudes salientes

Supongo que el principio de que la prevención es mejor que la cura podría dictar que se coloque un limitador de tasa de Discourse frente a las solicitudes, de modo que Discourse retenga las solicitudes según una configuración definida.

Esto causaría caos en las reconstrucciones y migraciones.

Asistente de Onebox

¿Quizás todos necesitamos relaciones comerciales con organizaciones que almacenan en caché y proxy las incrustaciones, como la utilizada por @merefield en su complemento Onebox Assistant?

Listar en blanco al ‘bot’

¿Podríamos encontrar una manera de incluir al ‘bot’ de Discourse en la lista blanca de YouTube? Probablemente sea demasiado propenso a abusos.

API de YouTube

Al igual que Onebox lo hace con Twitter, ¿quizás podríamos usar la API de YouTube si sus límites de tasa son mayores?

Buena investigación, gracias.

No sé si lo notaste, pero mencioné que incluso Signal Messenger tiene problemas con YouTube y sigue siendo un tema abierto:

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

También ocurre en WhatsApp.

Solo quería añadir que nos “bloquean” regularmente en YT cada 2 o 3 semanas; permanecemos bloqueados durante una semana aproximadamente y luego nos desbloquean. Después, el ciclo se repite.
Solo tenemos unas pocas cientos de enlaces a videos de YouTube; nuestros usuarios publican no más de un puñado al día…

Entonces, sin usar el complemento OneBox Assistant, ¿no hay ninguna solución para previsualizar los enlaces youtu.be en el Discourse base?

Todos los formatos de enlaces de YouTube deberían expandirse mediante Onebox.

¿No te está funcionando?

De no ser así, ¿qué problemas estás experimentando?

Estoy en la última versión de Discourse y acabo de publicar un mensaje con un enlace de youtu.be, pero no mostró la vista previa. Los enlaces normales de YouTube sí funcionan.

Veamos

https://youtu.be/gLCduDJVksc me parece bien

Sí, funciona en meta.discourse. Estoy tratando de averiguar por qué no funciona en el mío. ¿Hay alguna configuración para esto en el panel de administración?

Es probable que YouTube haya bloqueado tu servidor o rango de IPs, como se discutió anteriormente.

Pero los enlaces normales de YouTube funcionan. Si los hubieran prohibido, ¿no dejarían de funcionar todos?

No es así, @AntiMetaman.

Como sugirió @codinghorror más arriba, parece que YouTube aplica límites de tasa o bloquea ciertos formatos de enlaces de YouTube, mientras que otros siguen funcionando.

En mi caso, el formato ‘/embed’ funciona, pero los demás no.

Parece que YouTube establece límites de tasa que varían según el formato. El formato ‘/embed’ parece permitir un mayor número de solicitudes. Esto es puramente anecdótico y no tengo datos concretos al respecto.

Algunas preguntas:

¿Estás alojando en Digital Ocean?

¿Estás ejecutando IPv6?

¿Has verificado que el ID del video esté correctamente formado (11 caracteres)? (Pregunta tonta, pero te sorprendería)

¿Has probado cada uno de los tres formatos soportados para un video de YouTube? Es decir:

¿Cuál funcionó y cuál no?

He dado cabezazos contra este problema durante semanas, pero logré una solución funcional; aunque realmente no entiendo por qué funciona.

Asumiendo que estás experimentando el mismo problema, prueba instalar el Onebox Assistant, actívalo pero no lo configures.

Descubrí que necesitaba reiniciar el servidor después de activarlo para asegurarme de que funcionara.

En esta configuración, que realmente no debería funcionar en absoluto, mis videos de YouTube que de otro modo estarían limitados por tasa (en cualquier formato) son expandidos por Onebox, pero no tengo idea de cómo funciona esto.

He estado discutiendo el problema con @merefield (el autor) aquí…

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

SI, y es un gran SI, esto también funciona para ti, no es una solución adecuada, ya que es solo una peculiaridad de los valores de retorno de los métodos y no debería confiarse en ella a largo plazo.

Por separado, también he usado el plugin Onebox Assistant como estaba previsto, suscribiéndome a embed.rocks, y funciona a la perfección.

¿Podrías definir los enlaces regulares y no regulares de YouTube, por favor?

Si ese es el caso, ¿por qué no puede Onebox convertir a un formato que funcione antes de consultar los datos?

Podría ser, supongo, pero no es una ‘solución’.

Todos los formatos parecen tener límite de tasa y finalmente fallan. Incluso el formato ‘/embed’ falló para mí después de intentar volver a generar todos los incrustados de YouTube que habían fallado durante una re-generación anterior.

Además, solo he visto dos experiencias compartidas aquí donde la ruta ‘/embed’ funcionó cuando otras fallaron, incluida la mía.

Aún no hay suficiente evidencia, ni suficientes ‘afectados’, como para sugerir un cambio.

¿Tú también estás experimentando el problema, @Terrapop, o solo eres un interesado?

Soy un interesado mientras trasladamos nuestra comunidad popular a Discourse pronto. Por ahora, solo estamos en fase de prueba; funciona por el momento, pero queremos tener una configuración segura desde el inicio. Por lo tanto, probablemente configuraremos Onebox Assistant para que apunte a nuestro propio punto final, el cual retransmitirá y almacenará en caché las respuestas de embeds.rock. Si esto falla, obtendremos los datos de Iframely.

Ok, así que solo estaba experimentando y logré reproducirlo aquí en meta.discourse. Creo que tiene algo que ver con el markdown. Mis enlaces de youtu.be sí funcionan en mi foro como se esperaba, pero no en los ejemplos de abajo. YouTube no está bloqueando mi host en absoluto.

  1. Esto no funcionará ni siquiera en meta.discourse: https://youtu.be/MLpyi-oVoI

¿Ves? No hay nada malo con el enlace del video. Si pones el enlace en la siguiente línea, aún así no funcionará.

  1. Esto tampoco funcionará:
    https://youtu.be/MLpyi-oVoIY

¿Ves? Ahora, si pego este mismo enlace aquí, funcionará:

Me alegra que no estés siendo bloqueado por YouTube. Creo que todo funciona como debería: es un problema de formato.

Creo que para que la expansión de Onebox funcione, el enlace debe cumplir dos condiciones: a) estar al principio de una línea, por sí solo, y b) si está en medio de una lista, debe haber un retorno de línea adicional antes de él.

Si observas la versión sin formato de tu publicación:

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

Ok, así que solo estaba experimentando y pude reproducirlo aquí en meta.discourse. Creo que tiene algo que ver con el markdown. Mis enlaces de youtu.be sí funcionan en mi foro como se esperaba, pero no en los ejemplos de abajo. YouTube no está bloqueando mi servidor en absoluto.

1. Esto no funcionará ni siquiera en meta.discourse: https://youtu.be/MLpyi-oVoI

¿Ves? No hay nada mal con el enlace del video. Si pones el enlace en la siguiente línea, aún no funcionará.

2. Esto tampoco funcionará:
https://youtu.be/MLpyi-oVoIY

¿Ves? Ahora, si pego este mismo enlace aquí, funcionará:

https://youtu.be/MLpyi-oVoIY

Puedes ver que en el primer punto (1), el enlace aparece en medio de la línea, por lo que no se expandirá. El enlace debe ser lo primero en la línea.

Y en el punto 2, solo hay un retorno de línea antes del enlace de YouTube, por lo que tampoco se expandirá.

Si observas la versión formateada de tu publicación, quizás puedas ver que el enlace de YouTube tiene una sangría colgante…

…lo que significa que el markdown sigue tratando el enlace como parte del punto de la lista 2, por lo que no se expandirá.

Podrías hacerlo así.

  1. Este es un texto de relleno
  2. Este enlace funcionará porque he dejado dos retornos de línea después de esta línea y antes del enlace de YouTube

Sí, solo tendré que aprender a trabajar con Markdown y poner los enlaces de YouTube en una línea separada. Mis usuarios aún se están acostumbrando, y fue un post hecho por un usuario que llamó mi atención, donde su enlace youtu.be no funcionaba, lo que llevó a todo esto.

Hola, comencé a rebakear más de 1 millón de publicaciones hace 2 días, y las vistas previas de YouTube ya no funcionan desde hoy, así que supongo que mi IP fue bloqueada.
¿Qué se recomienda en este caso? ¿Debería simplemente esperar a que termine el rebaking y contactar a YouTube para ver si puedo ser desbloqueado?
¿O usar "Onebox Assistant", crawl for those previews reliably!?

Ciertamente es una opción si puedes permitirte el coste.