Youtube embeds missing

Bonjour @Iceman,

Oui, je viens de chercher dans la base de données pour vous et je n’ai trouvé aucune table ou champ où ce paramètre est stocké (il n’était pas dans la table site_settings).

Concernant votre commentaire :

… et l’interdiction est toujours en place 5 heures plus tard

Je ne possède aucune connaissance particulière sur la façon dont Google gère ces « interdictions », mais je soupçonne que, une fois que leurs algorithmes déclenchent une interdiction, il peut falloir beaucoup plus de temps à Google pour la lever (des jours, voire des semaines).

Cependant, je n’ai aucune connaissance fonctionnelle sur le fonctionnement de ce processus d’interdiction, ni même sur le « nom officiel de ce processus d’interdiction » chez Google.

Vous, si ?

Existe-t-il une page d’assistance de Google où ils en parlent ? Quel est le nom exact du processus d’interdiction auquel vous faites référence ?

2 « J'aime »

Il n’existe définitivement aucune page de support où Google explique exactement comment fonctionne leur système de blocage anti-DoS ou tout système connexe.

3 « J'aime »

Après des efforts considérables, je pense que le problème est résolu.

Cependant, je ne suis pas particulièrement « fier » de la solution, mais bon, c’est Google : ils ne parlent ni n’expliquent rien. Voici donc mes conclusions :

  • Tout d’abord, une leçon importante : n’activez pas IPv6 sur DigitalOcean si vous utilisez Discourse, car leur plage IPv6 est bloquée par YouTube.

  • Une fois le problème IPv6 résolu, et en raison de l’augmentation du trafic, quel que soit l’hébergeur (j’en ai changé plusieurs fois, quelle aventure !), ce qui s’est produit ensuite, c’est que YouTube a commencé à bloquer mon installation Discourse par adresse IP, en raison du nombre élevé de vidéos YouTube publiées sur le site et de la manière dont Discourse les charge.

  • Pour vérifier ce blocage, vous devez soit utiliser votre serveur comme proxy vers une machine disposant d’un navigateur, soit effectuer une requête curl et rechercher cette ligne : « Désolé pour l’interruption. Nous recevons un grand volume de requêtes provenant de votre réseau. » (il existe ce sujet à titre de référence).

  • Grâce à l’aide de @riking, @neounix et @Overgrow, j’ai exécuté une série de commandes (que vous pouvez lire ci-dessus) pour tenter d’arrêter, de limiter ou de modifier la fréquence à laquelle nous régénérons les intégrations YouTube. Pour la plupart des sites, cela suffirait, mais nous avons dû faire face à la complication supplémentaire d’une migration après avoir essayé plusieurs hébergeurs, ce qui signifiait que tous les messages précédents devaient être régénérés. En fait, limiter la régénération à une par heure a en quelque sorte résolu le problème au début. Mais je suppose que ma communauté aime vraiment partager des vidéos, car cela n’a pas duré longtemps.

  • Évidemment, il n’y a aucun retour ni aucune aide de la part de YouTube, si ce n’est quelques fils de discussion sur leur forum mentionnant l’erreur, avec tous les commentaires disant « oui, j’ai aussi ce problème », mais aucune solution proposée.

  • Compte tenu des circonstances, et en me souvenant de la logique des publicités télévisées : « Il doit bien y avoir une autre solution ! », j’ai opté pour une approche « Rambo » : j’ai acheté une autre adresse IP, puis ajouté un cron qui change l’adresse IP sortante toutes les heures. Problème résolu.

Il est à prévoir que, si le site continue de croître et que les gens continuent de partager cet amour de YouTube, je pourrais avoir besoin d’acquérir une troisième adresse IP. Mais bon, tant que je n’aurai pas trouvé le bon moyen de mettre en place un « Discourse distribué » sur Kubernetes ou autre, c’est la meilleure solution possible.

Ce n’est pas la solution la plus élégante, je le sais.

Une fois de plus, merci pour toute l’aide (et surtout la patience, car je sais que je suis très débutant avec la combinaison Rails/Sidekiq/RubyConsole, mais j’essaie de m’améliorer en lisant le code de Discourse).

Merci !

7 « J'aime »

Brillant !

C’est une solution créative, efficace, qui sort des sentiers battus.

Félicitations pour avoir résolu ton énigme avec style et élégance !

4 « J'aime »

Après avoir suivi les conseils et recommandations, j’ai configuré un CDN CloudFront pour notre bucket AWS S3 sur notre instance Discourse il y a quelques jours.

J’ai ajouté l’URL du CDN S3 dans notre panneau de contrôle, puis j’ai exécuté la commande de rebaking sur plus de 200 000 publications.

À ce moment-là, je n’y ai pas vraiment prêté attention ; cela a fonctionné et a fait son travail pendant environ 12 heures.

Nous avons énormément, énormément de vidéos intégrées dans notre Discourse. Nous sommes une communauté de drones/UAV et les gens publient et partagent leurs photos et vidéos toute la journée. Des dizaines de milliers de vidéos YouTube sont intégrées dans nos publications Discourse.

Avec le recul… ? Après avoir ajouté une URL CDN, j’aurais probablement dû me contenter de rebaker uniquement les publications correspondant à un motif *.jpg ou similaire :man_facepalming:t2: :cry:

Quoi qu’il en soit, que s’est-il passé ?

YouTube a bloqué l’adresse IP de notre serveur :pensive:

Nous ne pouvons plus générer de onebox pour les liens YouTube ; notre communauté est confrontée à :

429 Too Many Requests

:pensive:

(une simple requête curl / wget depuis le serveur lui-même renvoie également la même erreur)

Il est évident que nous avons été bloqués à un moment donné pendant le rebaking, car la moitié des publications existantes qui avaient des vidéos fonctionnelles ne le sont plus :sob:

Je suppose que ce blocage est permanent, mais comme vous le savez, il est impossible de trouver quelqu’un chez YouTube à contacter pour supplier notre pardon.

Pour le cas où ce blocage serait permanent, une question pour @Iceman : pouvez-vous partager les détails de la manière dont vous avez obtenu une deuxième adresse IP chez Digital Ocean, ainsi que les modifications apportées pour router le trafic « sortant » via cette IP tout en laissant le trafic entrant sur l’IP existante ?

Et une question pour tout le monde : quelqu’un sait-il si ce blocage est susceptible d’être temporaire ? :crossed_fingers:t2

Et/ou existe-t-il une solution pour réparer mes publications YouTube désormais très endommagées ?

Pour une communauté fortement axée sur les médias, c’est une véritable catastrophe pour nous.

1 « J'aime »

Il est peu probable que cela soit permanent ; cela devrait disparaître avec le temps.

2 « J'aime »

Si quelqu’un cherche à effectuer le même changement, vous pouvez utiliser une Remap au lieu d’un rebake, ce qui est presque instantané et ne génère aucune requête vers l’extérieur.

5 « J'aime »

Désolé pour ma réponse tardive.

Je ne peux pas vous aider avec Digital Ocean ; je les ai quittés lorsque leur prise en charge d’IPv6 était insuffisante.

J’ajoute de plus en plus d’adresses IP au « switch » qui effectue des requêtes sortantes vers YouTube en les faisant tourner pour éviter les bannissements. Mais elles finissent par être bannies, ce qui crée un cercle vicieux. Si vous êtes « banni » et que cette adresse IP continue d’effectuer des requêtes, elle continue d’être bannie. Vous devez attendre entre 1 et 8 heures sans aucune requête pour que YouTube vous « débannisse ». Plus vous avez d’utilisateurs et plus ils publient de vidéos YouTube, plus la situation empire.

Grâce à la dernière mise à jour des oneboxes, il est plus facile de repérer le problème (car vous pouvez voir le code 429 directement dans Discourse, au lieu de devoir le chercher parce que les vidéos ne s’affichent pas correctement). Cependant, dans la limite de ma compréhension, je me demande s’il n’existe pas une meilleure façon de gérer l’intégration des vidéos YouTube. En effet, lorsque la vidéo est lue, la requête provient de l’adresse IP du client (je suppose), mais lorsque la vidéo est affichée, c’est votre site qui effectue la requête pour chaque vidéo.

3 « J'aime »

Merci @Iceman :+1:t2:

C’est vraiment utile de le savoir.

Vendredi, j’ai installé le plugin Onebox Assistant et j’ai acheminé toutes les boîtes de prévisualisation via le proxy embed.rocks.

Aujourd’hui, depuis la console du serveur, j’ai tenté un wget aléatoire sur une vidéo YouTube.

Comme prévu, nous avons été débannis !

Ce après-midi, j’ai de nouveau désactivé Onebox Assistant et nous récupérons les vidéos directement, sans aucun problème pour le moment.

Si je n’avais pas fait cela, vous aviez raison : nous n’aurions probablement jamais été débannis, car nous aurions sollicité YouTube toutes les heures environ, les gens publiant constamment de nouvelles vidéos :grimacing:

Merci encore :smiley:

3 « J'aime »

Merci pour ces informations supplémentaires @Iceman et @Richie — cela s’est produit assez souvent récemment, donc toute information supplémentaire sur la façon dont YouTube gère la limitation de débit est très utile.

Nous tenons également à rassurer les gens : ces « bannissements » sont automatiques dans les deux sens — si vous êtes patient et réduisez le nombre de requêtes YouTube que votre site effectue, vous devriez être retiré de la liste des vilains de Santa en quelques jours. :santa_claus::page_with_curl:

4 « J'aime »

J’ai utilisé une variante de cela pour traiter doucement un grand nombre de messages. Une suggestion à faible risque et qui fait gagner énormément de temps, merci @riking !

Pour information, j’ai utilisé ceci pour suivre la progression :

Post.where(baked_version: nil).count
1 « J'aime »

Ce sujet a été automatiquement fermé après 2875 jours. Les nouvelles réponses ne sont plus autorisées.