اختفاء تكاملات يوتيوب

مرحباً @Iceman

نعم، قمت بالبحث في قاعدة البيانات للتو ولم أجد أي جدول أو حقل حيث يتم تخزين هذا الإعداد (لم يكن موجوداً في جدول site_settings)

أما بخصوص تعليقك:

… والحظر لا يزال سارياً بعد 5 ساعات

لا أملك أي معرفة خاصة بكيفية إدارة جوجل لهذه “الحظورات”، لكنني أشك في أنه بعد أن تثير خوارزمياتهم حظراً، قد يستغرق الأمر وقتاً أطول بكثير لكي تقوم جوجل بـ “إلغاء الحظر” (أيام أو حتى أسابيع).

ولكن مرة أخرى، لا أملك أي معرفة عملية بكيفية عمل هذه العملية من الحظر “أو حتى ما هو الاسم الرسمي لعملية الحظر هذه” من جوجل.

هل أنت تعرف؟

هل توجد صفحة دعم من جوجل تناقش هذا الأمر؟ ما هو الاسم الدقيق لعملية الحظر التي تشير إليها؟

لا توجد بالتأكيد صفحة دعم تشرح Google فيها بالضبط كيفية عمل نظام منع حجب هجمات الحرمان من الخدمة (DoS) أو أي نظام ذي صلة.

بعد عناء وجهد ودموع، أعتقد أن المشكلة حُلّت.

ومع ذلك، لستُ فخورًا جدًا “بحل” هذه المشكلة، لكن يا للهول، هذا غوغل؛ لن يتحدثوا أو يشرحوا لك أي شيء، لذا… إليك الاستنتاجات:

  • أولاً وقبل كل شيء، درس مهم: لا تفعّل IPv6 على DigitalOcean إذا كنت تستخدم Discourse، لأن نطاق IPv6 الخاص بهم محظور من قِبل YouTube.

  • بعد إصلاح مشكلة IPv6، ومع زيادة حركة المرور، بغض النظر عن المضيف (تغيّر عدة مرات، ما هي الرحلة!)، ما حدث بعد ذلك هو أن YouTube قام بحظر عنوان IP الخاص بتثبيت Discourse لدي، بسبب العدد الكبير لفيديوهات YouTube المنشورة على الموقع وكيفية تحميل Discourse لها.

  • للتحقق من هذا الحظر، يجب إما استخدام خادمك كوسيط (proxy) لخادم يحتوي على متصفح، أو ببساطة استخدام أمر curl والبحث عن السطر التالي: “نعتذر عن الانقطاع. لقد تلقينا عددًا كبيرًا من الطلبات من شبكتك.” (هناك موضوع للمرجعية)

  • بفضل مساعدة @riking و @neounix و @Overgrow، نفذتُ سلسلة من الأوامر (يمكنك قراءتها أعلاه) لمحاولة إما إيقاف أو تقييد أو تغيير معدل عملية “خبز” تضمين فيديوهات YouTube. بالنسبة لمعظم المواقع، سيكون ذلك كافيًا، لكننا واجهنا drama إضافية ناتجة عن الترحيل بعد تجربتي لعدة مضيفات، لذا كان على جميع المنشورات السابقة أن تُخبز. في الواقع، تقييد العملية إلى مرة واحدة كل ساعة شبه حل المشكلة في البداية. لكني أظن أن مجتمعي يحب مشاركة الفيديوهات حقًا لأن هذا الحل لم يدم طويلًا.

  • من الواضح أنه لا توجد أي تغذية راجعة أو مساعدة من YouTube هنا، باستثناء بضع خيوط على منتداها تحتوي على الخطأ وجميع التعليقات التي تقول “نعم، لدي هذه المشكلة أيضًا” دون وجود حلول.

  • بالنظر إلى الظروف، وتذكر منطق الإعلانات التجارية القائل بـ “يجب أن يكون هناك طريق آخر!”، اخترتُ نهجًا “رامبو”: اشتريت عنوان IP آخر. ثم أضفت مهمة مجدولة (cron) تقوم بتبديل عنوان IP الصادر كل ساعة. المشكلة حُلّت.

من المتوقع أنه إذا استمر الموقع في النمو واستمر الناس في مشاركة حبهم لفيديوهات YouTube، فقد أحتاج إلى شراء عنوان IP ثالث. لكن يا للهول، حتى أجد طريقة صحيحة لتنفيذ “Discourse موزع” في K8S أو شيء مشابه، فهذا أفضل ما يمكن الحصول عليه.

ليست الأنيق من الحلول، كما أعرف.

مرة أخرى، شكرًا لكم على كل المساعدة (وعلى الصبر في الغالب، لأنني أعلم أنني مبتدئ جدًا مع مزيج Rails/Sidekiq/RubyConsole، لكنني أحاول التحسن من خلال قراءة كود Discourse).

شكرًا!

رائع!

إنها حل إبداعي وفعّال، يعكس “تفكيرًا خارج الصندوق”.

تهانينا على حل لغزك بأسلوب وأناقة!

بعد اتباع النصائح/التوصيات، قمت بإعداد شبكة توزيع محتوى (CDN) من CloudFront لسلة S3 الخاصة بـ AWS في منصة Discourse لدينا قبل بضعة أيام.

أضفت عنوان URL الخاص بـ CDN الخاص بـ S3 في لوحة التحكم لدينا، ثم أصدرت بعد ذلك أمر إعادة معالجة (rebake) لأكثر من 200,000 منشور.

لم أكن أهتم كثيرًا في ذلك الوقت، فقد بدأ العمل بسحره خلال الـ 12 ساعة التالية تقريبًا.

لدينا العديد، العديد من مقاطع الفيديو المدمجة في منشورات Discourse. نحن مجتمع متخصص في الطائرات المسيرة (الدرون/UAV)، ويشارك الأعضاء ويشاركون صورهم ومقاطع الفيديو الخاصة بهم طوال اليوم. فهناك عشرات الآلاف من مقاطع فيديو YouTube مدمجة في منشوراتنا على Discourse.

بمراجعة ما حدث؟… بعد إضافة عنوان URL لـ CDN، ربما كان عليّ فقط إعادة معالجة المنشورات التي تطابق نمط *.jpg أو ما شابه :man_facepalming:t2: :cry:

على أي حال، ماذا حدث؟

قامت YouTube بحظر عنوان IP لخادمنا :pensive:

لم نعد قادرين على عرض أي روابط لـ YouTube باستخدام خاصية onebox، ويواجه مجتمعنا الرسالة التالية:

429 Too Many Requests

:pensive:

(حتى طلب بسيط باستخدام curl أو wget من الخادم نفسه يعيد نفس الرسالة)

من الواضح أننا تم حظرنا في مرحلة ما أثناء عملية إعادة المعالجة، حيث أن نصف المنشورات الموجودة التي كانت تحتوي على مقاطع فيديو عاملة لم تعد تعمل الآن :sob:

أفترض أن هذا الحظر دائم، ولكن كما تعلمون، من المستحيل العثور على شخص في YouTube للتواصل معه وطلب العفو.

في حال كان الحظر دائمًا، لدي سؤال لـ @Iceman: هل يمكنك مشاركة تفاصيل كيفية الحصول على عنوان IP ثانٍ من Digital Ocean، والتغييرات التي قمت بها لتوجيه حركة المرور الصادرة عبر هذا العنوان الجديد مع ترك حركة المرور الواردة على عنوان IP الحالي؟

وسؤال للجميع: هل يعرف أحد ما إذا كان هذا الحظر مؤقتًا فقط؟ :crossed_fingers:t2: وهل هناك أي إجراء يمكنني اتخاذه لإصلاح منشورات YouTube المكسورة الآن؟

لمجتمع يعتمد بشكل كبير على الوسائط، فإن هذا الوضع كارثي بالنسبة لنا.

من غير المرجح أن يكون الأمر دائمًا، فمن المحتمل أن يختفي مع مرور الوقت.

إذا كان شخص ما يبحث عن نفس التغيير، فيمكنك استخدام إعادة تعيين الخرائط بدلاً من إعادة الطهي، وهي عملية شبه فورية ولا تتطلب إرسال طلبات إلى أي مكان.

آسف على التأخر في الرد.

لا يمكنني مساعدتك في Digital Ocean، فقد انتقلت بعيدًا عنهم عندما كانت دعم IPv6 لديهم غير كافٍ.

أقوم بإضافة المزيد والمزيد من عناوين IP إلى “المبدّل” الذي يقوم بطلبات الخروج إلى YouTube، مع التبديل بين عناوين IP لتجنب الحظر. لكنهم في النهاية يُحظرون، وتصبح الأمور في طريق مسدود. إذا كنت “محظورًا” واستمر هذا العنوان في إرسال الطلبات، فسيظل يُحظر. يجب أن تمر فترة تتراوح بين ساعة واحدة و8 ساعات دون أي طلبات حتى يقوم YouTube بـ “إلغاء الحظر”. وكلما زاد عدد المستخدمين وكلما زاد عدد مقاطع الفيديو التي ينشرونها، سيزداد الوضع سوءًا.

بفضل أحدث تحديث للـ oneboxes، أصبح من الأسهل اكتشاف المشكلة (لأنك تستطيع رؤية رمز الخطأ 429 داخل Discourse بدلاً من البحث عنه لأن الفيديوهات لا تُعرض بشكل صحيح). ومع ذلك، وبسبب فهمي المحدود، أتساءل عما إذا كان هناك طريقة أفضل للتعامل مع تضمين مقاطع فيديو YouTube. لأنه عند تشغيل الفيديو، يأتي الطلب من عنوان IP الخاص بالعميل (أظن ذلك)، ولكن عند عرض الفيديو، فإن موقعك هو من يقوم بالطلب لكل مقطع فيديو.

شكرًا لك @Iceman :+1:t2:

هذه معلومة مفيدة حقًا.

لقد قمت بتثبيت إضافة Onebox Assistant وتوجيه جميع الـ oneboxes عبر وكيل embed.rocks يوم الجمعة.

اليوم، على وحدة تحكم الخادم، جربت أمر wget عشوائي لمقطع فيديو على يوتيوب.

كما هو متوقع، تم إلغاء الحظر عنا!

تم تعطيل Onebox Assistant مرة أخرى هذا بعد الظهر، ونقوم الآن بالجلب المباشر دون أي مشاكل حتى الآن.

لو لم أقم بذلك، أعتقد أنك محق وكنا لن نُلغى الحظر عنا أبدًا لأننا كنا سنصل إلى يوتيوب كل ساعة تقريبًا مع نشر الناس لمقاطع فيديو جديدة باستمرار :grimacing:

شكرًا مجددًا :smiley:

شكرًا لك على المعلومات الإضافية @Iceman و @Richie — لقد طُرِح هذا الأمر بشكل متكرر مؤخرًا، لذا فإن أي معلومات إضافية حول الطريقة التي يتعامل بها يوتيوب مع تحديد معدل الطلبات ستكون مفيدة للغاية.

نود أيضًا طمأنة الجميع بأن هذه “الحظر” تلقائية في كلا الاتجاهين — إذا كنت صبورًا وقللت من عدد طلبات يوتيوب التي يقوم موقعك بإرسالها، فستُزال من قائمة سانتا السيئة خلال بضعة أيام. :santa_claus::page_with_curl:

استخدمتُ متغيرًا من هذا المعالج بلطف عبر عدد كبير من المنشورات. اقتراح منخفض المخاطر وموفر للوقت بشكل هائل، شكرًا لك @riking!

للعلم، استخدمتُ هذا لتتبع التقدم:

Post.where(baked_version: nil).count