L'intégration des vidéos YouTube Onebox a cessé de fonctionner

J’aimerais beaucoup avoir des conseils sur la marche à suivre ici, mais j’ai aussi quelques idées sur la façon dont cela pourrait être mieux géré.

Ce qui pourrait se passer

Une théorie est que notre serveur a peut-être été identifié par YouTube comme potentiellement dédié au « farming » de vidéos musicales, et que nous subissons des limitations ou un blocage.

Nous sommes un tout petit forum sans prétention au Royaume-Uni avec un trafic modeste, mais nous avons quelques fils de discussion (en réalité un seul divisé en deux en raison de sa taille) contenant plus de 10 000 + 2 000 messages de vidéos musicales. C’est une chaîne musicale où le prochain poster ajoute simplement une chanson liée, souvent de manière tangentielle, au message précédent.

Nous avons bien sûr d’autres fils avec des liens YouTube, mais celui-ci est particulièrement (~100 %) dense en musique.

Suite à une reconstruction (« rebake ») ce week-end, je suppose que YouTube a analysé l’activité du Oneboxer tentant de récupérer les en-têtes pour de nombreuses vidéos musicales, et que son algorithme nous a mis au coin.

J’ai ensuite réessayé de reconstruire les messages, ce qui a probablement confirmé les soupçons de YouTube selon lesquels tout ce que nous faisons depuis cette adresse IP est de tenter de télécharger des vidéos musicales.

Peut-être lié à Digital Ocean

En cherchant sur Google les erreurs 429 sur YouTube et en ignorant tous les résultats liés à l’API YouTube, on finit par aboutir à un groupe de problèmes similaires qui indiquent tous que leurs adresses IP ont été mises sur liste grise, liste noire ou bannies en raison de leur hébergement sur des serveurs virtuels. Le nom de Digital Ocean a été spécifiquement mentionné.

La suggestion est que YouTube pourrait « bannir » une série d’adresses IP et que d’autres serveurs légitimes sont souvent victimes de dommages collatéraux.

Voici un tel problème et une solution potentielle :

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

Et en voici un autre provenant d’un développeur sur medium.com qui travaille sur l’API embed.ly :

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

La résolution suggérée dans le premier message était de désactiver IPv6 sur le droplet.

Quelqu’un sait-il si cela semble plausible, ou si cela pourrait causer des problèmes ?

J’ai attendu pour le faire pour le moment afin de pouvoir collecter toutes les autres données nécessaires pour faciliter la résolution.

Ce qui devrait se passer

Premièrement, je comprends que la réaction ici soit probablement que mon expérience est un cas limite et qu’aucun changement n’est nécessaire.

Je peux le comprendre. Mais si @marcozambi et moi avons découvert le même problème dans un laps de temps relativement court, cela suggère que d’autres pourraient le rencontrer. Peut-être que YouTube est devenu récemment plus rigoureux dans sa surveillance des intégrations ?

Je vous demande de garder à l’esprit que, pour le moment, mon forum est dans une impasse totale. J’ai des dizaines de milliers de liens qui n’ont pas pu être intégrés via Onebox, mais je ne sais pas où ils se trouvent. Je ne vois qu’une reconstruction totale pour les trouver tous, ce qui attirera presque certainement davantage l’attention négative de YouTube.

À tout le moins, Onebox ne peut pas échouer silencieusement lorsqu’il rencontre une erreur de limite de taux. Il doit alerter les administrateurs et, si possible, mettre en pause le processus qui a déclenché le problème de limite de taux.

Options pour alerter le propriétaire du forum

Je ne pense pas que ce soit facile. Pas du tout.

Je vois Onebox comme jouant plusieurs rôles distincts :

a) il construit des Oneboxes en temps réel lors de la rédaction des messages,
b) il répond aux reconstructions de messages anciens (avec souvent des liens déjà connus) en arrière-plan et de manière silencieuse,
c) il est sollicité pour gérer des masses de messages de tâches en arrière-plan lors d’une migration ou d’une reconstruction.

Si une erreur de limite de taux survenait lors du scénario a), l’auteur remarquerait que le Onebox ne s’est pas étendu et pourrait se plaindre aux administrateurs du forum — cela pourrait être remarqué. Je suppose qu’il est également possible de capturer l’erreur unique lors de la rédaction et d’envoyer une erreur ou un message aux administrateurs ?

Dans le scénario b), l’échec peut survenir lors du traitement en arrière-plan du message, et il faudrait donc soit réessayer, soit, si le nombre de réessais est atteint, marquer l’échec et notifier les administrateurs du forum.

Dans le scénario c), le contexte plus large de nombreuses échecs se produisant simultanément devrait être connu. Pour le moment, je ne crois pas qu’il existe un contrôle global du processus de reconstruction des messages permettant de reconnaître que 10 000 erreurs 429 renvoyées par Onebox constituent un problème plus important que l’envoi de 10 000 messages individuels aux administrateurs.

En réalité, un échec de ce type signifierait que tous les appels à Onebox pour l’expansion de vidéos YouTube (et peut-être d’autres fournisseurs également) devraient être mis en pause jusqu’à ce que nous ne soyons plus limités par le taux.

Approches alternatives

Limiter les taux des requêtes sortantes

Je suppose que l’adage « mieux vaut prévenir que guérir » pourrait dicter la mise en place d’un limiteur de taux Discourse devant les requêtes, afin que Discourse retarde les requêtes selon certaines configurations.

Cela perturberait gravement les reconstructions et les migrations.

Assistant Onebox

Peut-être avons-nous tous besoin de relations commerciales avec des organisations qui mettent en cache et font proxy des intégrations, comme celle utilisée par @merefield dans son plugin Onebox Assistant ?

Mettre le « bot » sur liste blanche

Pourrions-nous trouver un moyen de mettre le « bot » Discourse sur liste blanche auprès de YouTube ? Probablement trop ouvert aux abus.

API YouTube

Tout comme Onebox le fait avec Twitter, pourrions-nous utiliser l’API YouTube si les limites de taux sont plus élevées ?

De bonnes recherches, merci.

Je ne sais pas si vous l’avez remarqué, mais j’ai signalé que même Signal Messenger rencontre des problèmes avec YouTube et que c’est toujours un problème ouvert :

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

Cela se produit également sur WhatsApp.

Je voulais simplement ajouter que nous nous faisons régulièrement « bannir » par YT toutes les 2 à 3 semaines. Nous restons bannis pendant environ une semaine, puis nous sommes dé-bannis. Ensuite, le cycle recommence.
Nous n’avons que quelques centaines de liens vers des vidéos YouTube, et nos utilisateurs n’en publient pas plus d’une poignée par jour…

Donc, sans utiliser le plugin OneBox Assistant, il n’y a pas de solution pour prévisualiser les liens youtu.be dans le Discourse de base ?

Tous les formats de liens YouTube devraient être étendus par Onebox.

Ça ne fonctionne pas pour vous ?

Si ce n’est pas le cas, quels problèmes rencontrez-vous ?

Je suis sur la dernière version de Discourse et je viens de publier un message avec un lien youtu.be, mais l’aperçu ne s’affiche pas. Les liens YouTube classiques fonctionnent.

Voyons

https://youtu.be/gLCduDJVksc me semble correct

Oui, cela fonctionne sur meta.discourse. J’essaie de comprendre pourquoi cela ne fonctionne pas sur le mien. Y a-t-il des paramètres à configurer depuis le panneau d’administration ?

YouTube a probablement banni votre serveur ou votre plage d’adresses IP, comme discuté ci-dessus.

Mais les liens YouTube normaux fonctionnent. S’ils étaient bannis, ils ne fonctionneraient pas tous ?

Ce n’est pas le cas, @AntiMetaman.

Comme @codinghorror l’a suggéré ci-dessus, YouTube semble limiter le débit ou bannir certains formats de liens YouTube, tandis que d’autres continuent de fonctionner.

Dans mon cas, le format de lien ‘/embed’ fonctionne, mais pas les autres.

Il semble que YouTube impose des limites de débit différentes selon le format. Le format ‘/embed’ semble autoriser des nombres plus élevés. Ceci est purement anecdotique et je n’ai aucune donnée concrète à ce sujet.

Quelques questions :

Hébergez-vous sur Digital Ocean ?

Utilisez-vous IPv6 ?

Avez-vous vérifié que l’ID de la vidéo est correctement formé — 11 caractères ? (question idiote, mais vous seriez surpris)

Pour une vidéo YouTube donnée, avez-vous essayé chacun des trois formats pris en charge ? C’est-à-dire :

Lequel a fonctionné et lequel n’a pas fonctionné ?

Je me suis cogné la tête contre ce problème pendant des semaines, mais j’ai réussi à trouver une solution fonctionnelle — bien que je ne comprenne vraiment pas pourquoi elle fonctionne.

En supposant que vous rencontriez le même problème, essayez d’installer l’assistant Onebox, puis activez-le, mais ne le configurez pas.

J’ai découvert qu’il fallait redémarrer le serveur après l’avoir activé pour garantir son bon fonctionnement.

Dans cette configuration — qui ne devrait vraiment pas fonctionner du tout — mes vidéos YouTube autrement limitées en débit (quel que soit le format) sont étendues par Onebox, mais je ne sais pas comment cela fonctionne.

J’ai discuté du problème avec @merefield (l’auteur) ici…

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

SI, et c’est un gros SI, cela fonctionne aussi pour vous, ce n’est pas une vraie solution car il s’agit simplement d’une bizarrerie des valeurs de retour de méthode et cela ne devrait pas être utilisé à long terme.

Séparément, j’ai également utilisé le plugin Onebox Assistant comme prévu — en m’abonnant à embed.rocks — et cela fonctionne à merveille.

Pourriez-vous définir les liens YouTube réguliers et non réguliers, s’il vous plaît ?

Dans ce cas, pourquoi Onebox ne peut-il pas se convertir au format qui fonctionne avant d’interroger les données ?

Ça pourrait, je suppose, mais ce n’est pas une « solution ».

Tous les formats semblent être limités en débit et finissent par échouer. Même le format « /embed » a échoué pour moi après avoir tenté de régénérer tous les嵌ements YouTube qui avaient échoué lors d’une régénération précédente.

De plus, je n’ai vu que deux retours d’expérience ici où la méthode « /embed » a fonctionné alors que d’autres ont échoué — y compris le mien.

Il n’y a pas encore assez de preuves, ni assez de personnes affectées, pour justifier un changement.

Rencontrez-vous aussi le problème, @Terrapop, ou êtes-vous simplement un observateur intéressé ?

Je suis un acteur intéressé alors que nous transférons bientôt notre communauté populaire vers Discourse. Pour l’instant, nous sommes en phase de test et cela fonctionne, mais nous souhaitons une configuration sécurisée dès le départ. Nous allons donc probablement configurer Onebox Assistant pour qu’il pointe vers notre propre point de terminaison, qui relaiera et mettra en cache les réponses provenant d’embeds.rock. Si cela échoue, nous récupérerons les données via Iframely.

Ok, donc je faisais juste un peu de test et j’ai réussi à reproduire le problème ici sur meta.discourse ! Je pense que cela a un lien avec le markdown. Mes liens youtu.be fonctionnent en effet correctement sur mon forum, mais pas dans les exemples ci-dessous. YouTube ne bloque pas du tout mon hôte.

  1. Cela ne fonctionnera pas même sur meta.discourse : https://youtu.be/MLpyi-oVoI

Voyez ? Il n’y a rien de mal avec le lien de la vidéo. Si vous placez le lien sur la ligne suivante, cela ne fonctionnera toujours pas.

  1. Cela ne fonctionnera pas non plus :
    https://youtu.be/MLpyi-oVoIY

Vous voyez ? Maintenant, si je colle ce même lien ici, il fonctionnera :

Heureux de voir que vous n’êtes pas bloqué par YouTube. Je pense que tout fonctionne comme prévu : il s’agit d’un problème de mise en forme.

Je crois que pour que l’expansion Onebox fonctionne, le lien doit se trouver a) au début d’une ligne, seul, et b) s’il est au milieu d’une liste, il faut un saut de ligne supplémentaire avant lui.

Si vous regardez la version brute de votre message :

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

Ok, donc je venais juste de faire quelques essais et j'ai réussi à reproduire le problème ici sur meta.discourse ! Je pense que cela a un lien avec le markdown. Mes liens youtu.be fonctionnent bien sur mon forum comme prévu, mais pas dans les exemples ci-dessous. YouTube ne bloque pas du tout mon hôte.

1. Cela ne fonctionnera pas même sur meta.discourse : https://youtu.be/MLpyi-oVoI

Voyez ? Il n'y a rien de mal avec le lien de la vidéo. Si vous mettez le lien sur la ligne suivante, cela ne fonctionnera toujours pas.

2. Cela ne fonctionnera pas non plus :
https://youtu.be/MLpyi-oVoIY

Vous voyez ? Maintenant, si je colle ce même lien ici, cela fonctionnera :

https://youtu.be/MLpyi-oVoIY

Vous pouvez voir que pour le premier élément 1. - le lien apparaît au milieu de la ligne, donc il ne s’étendra pas. Le lien doit être la première chose sur la ligne.

Et pour l’élément 2., il n’y a qu’un seul saut de ligne avant le lien YouTube, donc il ne s’étendra pas non plus.

Si vous regardez la version mise en forme de votre message, vous devriez pouvoir voir que le lien YouTube a une indentation suspendue…

…ce qui signifie que le markdown traite toujours le lien comme faisant partie du point de liste 2, donc il ne l’étendra pas.

Vous pourriez faire ceci.

  1. Voici un texte de remplissage
  2. Ce lien fonctionnera car j’ai laissé deux sauts de ligne après cette ligne et avant le lien YouTube

Oui, je vais juste devoir apprendre à travailler avec Markdown et placer les liens YouTube sur une ligne distincte. Mes utilisateurs s’y habituent encore, et c’est un message publié par un utilisateur qui a attiré mon attention : son lien youtu.be ne fonctionnait pas, ce qui a conduit à tout cela.

Bonjour, j’ai commencé le re-cuisson de plus d’un million de messages il y a deux jours, et les aperçus YouTube ne fonctionnent plus depuis aujourd’hui. Je suppose donc que mon adresse IP a été bannie.
Que conseillez-vous dans ce cas ? Dois-je simplement attendre la fin du re-cuisson et contacter YouTube pour voir si je peux être débanni ?
Ou utiliser "Onebox Assistant", crawl for those previews reliably! ?

C’est certainement une solution si vous pouvez vous le permettre.