Youtube embeds missing

@Iceman さん、こんにちは

はい、今すぐデータベースを検索しましたが、その設定が格納されているテーブルやフィールドは見つかりませんでした(site_settings テーブルには含まれていませんでした)。

また、あなたのコメントについてですが:

… そして 5 時間経ってもBANは解除されていません

Google がこれらの「BAN」をどのように管理しているかについて特別な知識はありませんが、Google のアルゴリズムが BAN を発動した後、解除されるまでにはもっと長い時間(数日、あるいは数週間)かかる可能性があると考えています。

ただし、この BAN のプロセスが「どのように機能するか」、あるいは「公式の BAN プロセスの名称」についてすら、私は詳しい知識を持っていません。

あなたはご存知ですか?

これについて Google が議論しているサポートページはありますか?あなたが言及しているこの BAN プロセスの正確な名称は何ですか?

GoogleがDoS防止ブロックや関連するシステムの仕組みを正確に説明するサポートページは、明らかに存在しません。

血と汗と涙の末、解決したと思います。

ただし、この解決策に特に「誇り」を感じているわけではありません。しかし、相手はGoogleですから、何も話してくれず、何も説明してくれません。したがって、結論は以下の通りです。

  • まず第一に、重要な教訓:Discourseを使用している場合は、DigitalOceanでIPv6を有効にしないでください。YouTubeがDigitalOceanのIPv6アドレス範囲をブロックしているためです。

  • IPv6の問題が修正された後、トラフィックの増加に伴い(ホストは何度か変更しました、本当に大変な旅でした)、その後起こったのは、YouTubeが当サイトのDiscourseインスタンスをIPブロックしたことです。これは、サイトに投稿されたYouTube動画の量と、Discourseがそれらを読み込む仕組みが原因でした。

  • このブロックを確認するには、サーバーをブラウザ付きのサーバーへのプロキシとして使用する、またはcurlを実行して以下の行を検索する必要があります。「申し訳ありませんが、中断いたします。ネットワークから大量のリクエストを受信しています。」(参考:このトピック

  • @riking@neounix@Overgrow のご支援により、YouTube埋め込みのバーク(画像生成)を停止、制限、または変更する一連のコマンドを実行しました(上記参照)。多くのサイトではこれで十分ですが、私は数回のホスト変更を試みた後、サイトが移行されたため、以前の投稿すべてを再バークする必要がありました。実際、1時間ごとに1回に制限することで、最初は「まあまあ」解決しました。しかし、私のコミュニティは「動画を共有するのが本当に大好き」なようで、その効果は長続きしませんでした。

  • もちろん、YouTubeからはフィードバックやサポートは一切ありません。公式フォーラムにはエラーに関するスレッドがいくつかあり、コメントには「私も同じ問題を抱えています」という声はありますが、解決策は提示されていません。

  • こうした状況下で、インフォマーシャルの「他にも方法があるはずだ!」というロジックを思い出し、「ラムボ」的なアプローチを選択しました。別のIPアドレスを購入し、1時間ごとに発信元IPアドレスを切り替えるcronジョブを追加しました。これで問題は解決しました。

サイトが成長し続け、人々が「YouTubeへの愛を共有し続ける」場合、3番目のIPアドレスを取得する必要があるかもしれません。しかし、K8Sなどで「分散型Discourse」を実現する正しい方法を見つけるまでの間は、これが最善策です。

最もエレガントな解決策ではないことは承知しています。

改めて、ご支援(そして何より忍耐)に感謝します。Rails/Sidekiq/RubyConsoleの組み合わせについては、私が非常に未熟であることを理解していただいていると思います。Discourseのコードを読みながら、改善に努めています。

ありがとうございました!

素晴らしい!

まさに創造的で効果的な、発想の転換に富んだ解決策ですね。

スタイルと器用さでパズルを解決されたことをおめでとうございます!

数日前、Discourse の AWS S3 バケットに対して、アドバイスや推奨に従って CloudFront CDN を設定しました。

コントロールパネルに S3 の CDN URL を追加し、その後、20 万件以上の投稿に対してリベイク(再レンダリング)コマンドを実行しました。

その時点では特に気にしていませんでした。CDN は順調に機能し、約 12 時間ほど魔法のように動いていました。

当コミュニティには、非常に多くの動画が埋め込まれています。ドローン/UAV 関連のコミュニティであり、人々は一日中写真や動画を投稿・共有しています。Discourse の投稿には、YouTube の動画が数万本含まれています。

振り返ってみれば、CDN URL を追加した後は、*.jpg などのパターンに一致する投稿だけをリベイクすればよかったのかもしれません :man_facepalming:t2: :cry:

さて、何が起こったのでしょうか?

YouTube が当サーバーの IP アドレスをブロックしてしまいました :pensive:

もう YouTube のリンクをワンボックス表示できず、コミュニティのメンバーは以下のメッセージに直面しています。

429 Too Many Requests

:pensive:

(サーバー自体で単純な curl や wget を実行しても、同じエラーが返されます)

明らかに、リベイク実行中にブロックされました。以前は正常に動作していた動画の半分ほどが、もはや表示されなくなってしまいました :sob:

このブロックは恒久的なものだと想定していますが、ご存知の通り、YouTube に連絡して謝罪を願うことは不可能です。

万が一、恒久的な場合のために、@Iceman さんにお伺いしたいことがあります。Digital Ocean で 2 番目の IP アドレスを取得した手順と、その IP からの「送信」トラフィックをルーティングしつつ、既存の IP で「受信」トラフィックを維持するように変更した具体的な内容をお共有いただけますでしょうか?

また、皆さんに伺いたいのですが、このブロックは単に一時的なものだと考えられますでしょうか?:crossed_fingers:t2 あるいは、現在壊れてしまった YouTube 投稿を修復するために何かできることはありますか?

メディア中心のコミュニティにとって、これは非常に致命的な状況です。

永続的なものではないでしょう。時間の経過とともに消えていくはずです。

同じ変更をお探しの方は、再焼成の代わりに Remap を使用できます。これはほぼ瞬時に行え、どこにもリクエストを送信する必要がありません。

返信が遅くなり申し訳ありません。

Digital Ocean についてはお手伝いできません。IPv6 サポートが不十分だったため、以前から利用を中止しています。

YouTube へのリクエストを IP をローテーションさせて行う「スイッチ」に対して、私は IP をどんどん追加しています。しかし、IP は最終的にBANされ、行き詰まってしまいます。もし「BAN」された状態でその IP でリクエストを続けると、さらにBANが繰り返されます。YouTube が「BAN解除」を行うには、1〜8 時間リクエストを送らない期間が必要です。ユーザーが増え、投稿される YouTube 動画が増えるほど、状況は悪化します。

最新の onebox 更新により、問題が特定しやすくなりました(動画が正しく表示されないため探していた 429 エラーを、Discourse 内で直接確認できるようになったためです)。ただし、私の限られた理解の範囲では、YouTube 埋め込みをより良い方法で処理できないかと疑問に思っています。動画が再生される際はクライアントの IP からリクエストが来るのだと思いますが(推測)、動画が表示される際には、サイト側が動画ごとにリクエストを行っているからです。

@Iceman さん、ありがとうございます :+1:t2:

これは本当に役立つ情報ですね。

金曜日に Onebox Assistant プラグインをインストールし、すべての Onebox を embed.rocks プロキシ経由に設定しました。

今日、サーバーコンソールで YouTube 動画のランダムな wget を試してみました。

確かに、ブロックが解除されていました!

午後には Onebox Assistant を再度無効にし、直接取得を開始しましたが、今のところ問題はありません。

もしそれをやっていなかったら、おっしゃる通り、ブロックが解除されることはなかったと思います。なぜなら、人々が常に新しい動画を投稿するため、私たちは毎時間のように YouTube にアクセスし続けていただろうからです :grimacing:

改めてありがとうございます :smiley:

追加情報を提供してくださりありがとうございます、@Iceman さん、@Richie さん。最近この話題がよく挙がっていますので、YouTube がレート制限をどのように扱っているかについての追加情報は非常に役立ちます。

また、これらの「禁止措置」は双方向に自動的に行われることをお知らせしておきます。辛抱強く、サイトから行う YouTube へのリクエスト数を減らしていただければ、数日以内にサンタの「悪者リスト」から外れます。:santa_claus::page_with_curl:

私はこのバリエーションを使って、多くの投稿を慎重に処理しました。リスクが低く、時間を大幅に節約できる素晴らしい提案をありがとうございます、@riking

参考までに、進捗状況の追跡にはこれを使用しました:

Post.where(baked_version: nil).count