توقف تضمين مقاطع يوتيوب عبر Onebox عن العمل

أود الحصول على بعض النصائح حول ما يجب فعله هنا، لكن لدي أيضًا بعض الأفكار حول كيفية التعامل مع هذا الأمر بشكل أفضل.

ما الذي قد يحدث

إحدى النظريات هي أن سيرفرنا قد تم تحديده من قبل YouTube على أنه يقوم بحصاد مقاطع الفيديو الموسيقية، وبالتالي نواجه قيودًا أو حظرًا.

نحن منتدى صغير غير ملحوظ في المملكة المتحدة بحركة مرور ضئيلة، لكن لدينا خيطين (في الواقع خيط واحد تم تقسيمه إلى اثنين بسبب حجمه) يحتويان على أكثر من 10 آلاف و2 ألف منشور لفيديوهات موسيقية. إنه سلسلة موسيقية حيث ينشر المستخدم التالي أغنية مرتبطة، غالبًا بطريقة هامشية، بالمنشور السابق.

بال当然، لدينا خيوط أخرى تحتوي على روابط YouTube، لكن هذا الخيط بالتحديد كثيف جدًا بالمحتوى الموسيقي (حوالي 100%).

بعد إعادة معالجة (re-bake) في عطلة نهاية الأسبوع، أفترض أن YouTube راقب نشاط أداة Onebox التي تحاول جلب رؤوس البيانات للعديد من مقاطع الفيديو الموسيقية، ووضعت خوارزمياتها موقعنا في قائمة المراقبة.

حاولت لاحقًا إعادة معالجة المنشورات، وهو ما يُفترض أنه أكد لـ YouTube شكوكها بأن كل ما نقوم به من عنوان IP هذا هو محاولة لتحميل مقاطع فيديو موسيقية.

قد يكون مرتبطًا بـ Digital Ocean

لذا، عند البحث في Google عن أخطاء 429 على YouTube وتجاهل جميع نتائج YouTube API، تشير النتائج في النهاية إلى مجموعة من المشاكل المتشابهة التي تقول إن عناوين IP الخاصة بها تم إدراجها في قوائم الرمادية/السوداء أو حظرها نتيجة لاستخدامها خوادم افتراضية - وتم ذكر اسم Digital Ocean تحديدًا.

الفرضية هي أن YouTube قد ‘يحظر’ سلسلة من عناوين IP، مما يؤدي غالبًا إلى تورط خوادم أخرى مشروعة كأضرار جانبية.

إليك إحدى هذه المشاكل والحل المحتمل:

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

وهنا مثال آخر من مطور على medium.com يعمل على واجهة برمجة التطبيقات (API) الخاصة بـ embed.ly:

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

كان الحل المقترح في المنشور الأول هو تعطيل IPv6 على الـ droplet.

هل يعرف أحد ما إذا كان ذلك يبدو محتملًا، أو إذا كان سيسبب أي مشاكل؟

لقد امتنعت عن القيام بذلك في الوقت الحالي حتى أتمكن من جمع أي بيانات أخرى قد تكون ضرورية للمساعدة في الحل.

ما الذي يجب أن يحدث؟

أولاً، أفهم أن رد الفعل هنا قد يكون أن تجربتي حالة هامشية (edge-case) ولا حاجة لأي تغيير.

أستطيع فهم ذلك. لكن إذا كان @marcozambi وأنا قد اكتشفنا نفس المشكلة في فترة زمنية قصيرة نسبيًا، فإن ذلك يشير إلى أن الآخرين قد يواجهونها أيضًا. ربما أصبحت YouTube أكثر صرامة مؤخرًا في مراقبة التضمين (embedding)؟

أطلب منكم أن تتذكروا أن منتداي في حالة ترقب تام حاليًا. لدي عشرات الآلاف من الروابط التي فشلت في أن يتم تضمينها عبر Onebox، لكنني لا أعرف مكانها، ولا يمكنني التفكير سوى في إعادة معالجة شاملة لإيجادها جميعًا، وهو ما سيحتمل أن يجذب انتباهًا سلبيًا أكبر من YouTube.

على أقل تقدير، لا يمكن أن يفشل Onebox بصمت عند اصطدامه بخطأ حد معدل الاستخدام (rate-limit). يجب أن يلفت الانتباه إلى المسؤولين، وعند الإمكان، إيقاف العملية التي تسببت في مشكلة حد معدل الاستخدام.

خيارات لإبلاغ صاحب المنتدى

لا أعتقد أن هذا سهل. على الإطلاق.

أرى أن Onebox يلعب عدة أدوار مختلفة بوضوح:

أ) يبني صناديق Onebox في الوقت الفعلي أثناء كتابة المنشورات.
ب) يستجيب لإعادة معالجة المنشورات القديمة (التي تحتوي غالبًا على روابط معروفة بالفعل) في الخلفية وبشكل غير مرئي.
ج) يُطلب منه التعامل مع كميات هائلة من وظائف الخلفية أثناء الهجرة أو إعادة المعالجة.

إذا حدث خطأ حد معدل الاستخدام خلال السيناريو أ)، فسيعرف المؤلف أن صندوق Onebox لم يتم توسيعه وقد يشتكي إلى مسؤولي المنتدى - وقد يتم ملاحظته. أفترض أيضًا أنه من الممكن التقاط الخطأ الفردي أثناء الكتابة وإرسال خطأ أو رسالة إلى المسؤولين.

في السيناريو ب)، قد يحدث الفشل أثناء المعالجة الخلفية للمنشور، وبالتالي يجب إما إعادة المحاولة، أو إذا تم الوصول إلى حد عدد المحاولات، يجب اعتبارها فاشلة وإخطار مسؤولي المنتدى.

في السيناريو ج)، يجب معرفة السياق الأوسع لحدوث العديد من الفشل في نفس الوقت. في الوقت الحالي، لا أعتقد أن هناك أي تحكم شامل في عملية إعادة معالجة المنشورات بحيث يمكن التعرف على 10,000 خطأ 429 قادمة من Onebox كمشكلة أكبر من إرسال 10,000 رسالة فردية إلى المسؤولين.

في الواقع، يعني فشل مثل هذا أن جميع المكالمات إلى Onebox لتوسيع مقاطع الفيديو من YouTube (وقد يكون ذلك لجهات أخرى أيضًا) يجب إيقافها مؤقتًا حتى نتجاوز حد معدل الاستخدام.

نهج بديلة

تحديد معدل الطلبات الصادرة

أعتقد أن المبدأ القائل بـ “الوقاية خير من العلاج” قد يفرض وضع معدل تحديد (rate-limiter) خاص بـ Discourse أمام الطلبات، بحيث يقوم Discourse بعد ذلك بحجز الطلبات بناءً على إعدادات معينة.

هذا سيسبب فوضى في عمليات إعادة المعالجة والهجرة.

مساعد Onebox

ربما نحتاج جميعًا إلى علاقات تجارية مع مؤسسات تقوم بتخزين وتحويل الطلبات (proxy) للمحتوى المضمن، مثل تلك التي يستخدمها @merefield في إضافة Onebox Assistant الخاصة به؟

إدراج البوت في القائمة البيضاء

هل يمكننا ربما إيجاد طريقة لإدراج ‘بوت’ Discourse في القائمة البيضاء لدى YouTube؟ ربما يكون ذلك مفتوحًا جدًا للإساءة.

واجهة برمجة تطبيقات YouTube

تمامًا كما يفعل Onebox مع Twitter، ربما يمكننا استخدام واجهة برمجة تطبيقات YouTube إذا كانت حدود معدل الاستخدام فيها أعلى؟

بحث جيد هناك، شكرًا لك.

لا أدري هل لاحظت، لكنني أشرت إلى أن تطبيق Signal Messenger يعاني أيضًا من مشاكل مع YouTube، وما زالت هذه المشكلة مفتوحة:

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

وهذا يحدث أيضًا على واتساب.

أردت فقط أن أضيف أننا نُمنع بانتظام من قبل يوتيوب كل أسبوعين إلى ثلاثة أسابيع، ويبقى الحظر ساريًا لمدة أسبوع تقريبًا، ثم يُرفع الحظر عنا. ثم تتكرر الدورة.
لدينا بضع مئات من الروابط إلى مقاطع فيديو على يوتيوب، ولا ينشر مستخدمونا أكثر من حفنة منها يوميًا…

لذا، دون استخدام إضافة OneBox Assistant، لا توجد أي طريقة لمعاينة روابط youtu.be في منصة Discourse الأساسية؟

يجب أن يتم توسيع جميع صيغ روابط YouTube بواسطة Onebox.

هل لا يعمل ذلك معك؟

إذا لم يكن كذلك، فما هي المشاكل التي تواجهها؟

أنا أحدث إصدار من Discourse، وقد نشرت للتو منشورًا يحتوي على رابط youtu.be ولم يظهر معاينة له. بينما تعمل روابط يوتيوب العادية بشكل صحيح.

لنرى

https://youtu.be/gLCduDJVksc تبدو جيدة من وجهة نظري

نعم، إنه يعمل على meta.discourse. أحاول معرفة السبب في أنه لا يعمل على موقعي. هل توجد أي إعدادات لتكوين هذا من لوحة الإدارة؟

من المرجح أن يوتيوب قد حظر خادمك أو نطاق عنوان IP الخاص بك، كما تم مناقشته أعلاه.

لكن روابط يوتيوب العادية تعمل. إذا كانت محظورة، أليس من المفترض أن لا تعمل جميعها؟

ليس الأمر كذلك، @AntiMetaman.

كما اقترح @codinghorror أعلاه، يبدو أن يوتيوب يفرض قيودًا على المعدل / يحظر بعض تنسيقات روابط يوتيوب بينما تستمر روابط أخرى في العمل.

في حالتي، تنسيق الرابط ‘/embed’ يعمل بينما لا تعمل التنسيقات الأخرى.

يبدو أن يوتيوب يوفر قيودًا على المعدل تختلف حسب التنسيق. يبدو أن تنسيق ‘/embed’ يسمح بأعداد أكبر. هذا مجرد ملاحظة شخصية ولم أجمع أي بيانات مؤكدة حول ذلك.

بعض الأسئلة:

هل تستضيف على Digital Ocean؟

هل تستخدم IPv6؟

هل تأكدت من أن معرف الفيديو مُصاغ بشكل صحيح - 11 حرفًا؟ (سؤال غبي - لكنك ستندهش

لفيديو يوتيوب معين، هل جربت كلًا من التنسيقات الثلاثة المدعومة؟ - أي:

أيها عمل وأيها لم يعمل؟

لقد قمت بضرب رأسي في هذه المشكلة لأسابيع، ولكن تمكنت من الحصول على حل قابل للتطبيق - لكنني حقًا لا أفهم لماذا يعمل.

بافتراض أنك تواجه نفس المشكلة، جرب تثبيت Onebox Assistant، ثم فعّله ولكن لا قم بتكوينه.

وجدت أنني بحاجة إلى إعادة تشغيل الخادم بعد تمكينه للتأكد من عمله.

في هذا التكوين - والذي لا ينبغي أن يعمل على الإطلاق - يتم توسيع مقاطع يوتيوب التي خضعت لقيود المعدل (بأي تنسيق) بواسطة Onebox - لكنني لا أعرف كيف يعمل هذا.

لقد ناقشت المشكلة مع @merefield (المؤلف) هنا…

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

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

بشكل منفصل، استخدمت أيضًا إضافة Onebox Assistant كما كان مقصودًا - عن طريق الاشتراك في embed.rocks، ويعمل بشكل رائع.

هل يمكنك تعريف روابط يوتيوب العادية وغير العادية، من فضلك؟

إذا كان الأمر كذلك، فلماذا لا يمكن لـ Onebox التحويل إلى التنسيق الذي يعمل قبل استقصاء البيانات؟

ربما، على ما أظن، لكنها ليست ‘حلاً’.

يبدو أن جميع الصيغ خاضعة لحدود معدل الاستخدام وتفشل في النهاية. حتى صيغة ‘/embed’ فشلت معي بعد أن حاولت إعادة إنشاء جميع تضمينات يوتيوب التي فشلت خلال إعادة إنشاء سابقة.

علاوة على ذلك، لم أرَ سوى تجربتين تم مشاركتهما هنا حيث نجحت طريقة ‘/embed’ بينما فشلت الطرق الأخرى - بما في ذلك تجربتي الخاصة.

لا توجد أدلة كافية بعد، ولا عدد كافٍ من ‘المتضررين’ حتى الآن، للاقتراح بإجراء تغيير.

هل تواجه أنت أيضًا هذه المشكلة، @Terrapop، أم أنك مجرد طرف مهتم؟

أنا طرف مهتم بينما ننتقل بمجتمعنا الشعبي إلى Discourse قريبًا. حاليًا في مرحلة الاختبار، ويعمل الوضع الحالي بشكل مؤقت، لكننا نرغب في إعداد آمن من البداية، لذا سنقوم على الأرجح بإعداد Onebox Assistant ليرسل إلى نقطة نهاية خاصة بنا، والتي ستقوم بتحويل وتخزين استجابات من embeds.rock، وفي حال فشل ذلك، سنقوم بجلب البيانات من Iframely.

حسنًا، لقد كنت أتجول فقط وتمكنت من إعادة إنتاج المشكلة هنا في meta.discourse! أعتقد أن الأمر يتعلق بـ markdown. في الواقع، تعمل روابط youtu.be الخاصة بي في منتداي كما هو متوقع، لكن ليس في الأمثلة أدناه. يوتيوب لا يحظر مضيفي على الإطلاق.

  1. لن يعمل هذا حتى على meta.discourse: https://youtu.be/MLpyi-oVoI

ترى؟ لا يوجد خطأ في رابط الفيديو. إذا وضعت الرابط في السطر التالي، فلن يعمل أيضًا.

  1. لن يعمل هذا أيضًا:
    https://youtu.be/MLpyi-oVoIY

هل ترى؟ الآن إذا قمت بلصق نفس الرابط هنا، فسيكون يعمل:

يسعدنا أن YouTube لم يحجبك. أعتقد أن كل شيء يعمل كما ينبغي - إنها مشكلة تنسيق.

أعتقد أن توسيع Onebox يتطلب أن يكون الرابط: أ) في بداية السطر بمفرده، وب) إذا كان في وسط قائمة، فيجب أن يكون هناك سطر فارغ إضافي / سطر جديد قبله.

إذا نظرت إلى النسخة الخام من منشورك

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

حسناً، لقد كنت ألعب للتو وتمكنت من إعادة إنتاج المشكلة هنا في meta.discourse! أعتقد أن الأمر يتعلق بـ markdown. روابط youtu.be الخاصة بي تعمل بالفعل في منتداي كما هو متوقع، ولكن ليس في الأمثلة أدناه. YouTube لا يحجب مضيفي على الإطلاق.

1. هذا لن يعمل حتى في meta.discourse: https://youtu.be/MLpyi-oVoI

هل ترى؟ لا يوجد خطأ في رابط الفيديو. إذا وضعت الرابط في السطر التالي، فلن يعمل بعد.

2. هذا لن يعمل أيضاً:
https://youtu.be/MLpyi-oVoIY

هل ترى؟ الآن إذا قمت بلصق نفس الرابط هنا، فسيكون فعالاً:

https://youtu.be/MLpyi-oVoIY

يمكنك رؤية أن العنصر الأول 1. - يظهر الرابط في منتصف السطر لذا لن يتم توسيعه. يجب أن يكون الرابط أول شيء في السطر.

وفي العنصر 2. يوجد سطر فارغ واحد فقط / سطر جديد قبل رابط YouTube لذا لن يتم توسيعه أيضاً.

إذا نظرت إلى النسخة المنسقة من منشورك، قد تتمكن من رؤية أن رابط YouTube يحتوي على مسافة بادئة معلقة…

…وهو ما يعني أن markdown لا يزال يعامل الرابط كجزء من النقطة 2، لذا لن يتم توسيعه.

يمكنك فعل هذا.

  1. هذا نص ممل
  2. هذا الرابط سيعمل لأنني تركت سطرين فارغين / سطر جديد بعد هذا السطر وقبل رابط YouTube

نعم، سأضطر فقط إلى تعلم العمل مع Markdown ووضع روابط يوتيوب في سطر منفصل. لا يزال مستخدمونا يتأقلمون مع الأمر، وهناك منشور من مستخدم لفت انتباهي لأن رابط youtu.be الخاص به لم يعمل، وهو ما أدى إلى كل هذا.

مرحبًا، بدأت إعادة طهي أكثر من مليون منشور قبل يومين، ولم تعد معاينات YouTube تعمل منذ اليوم، لذا أعتقد أن عنوان IP الخاص بي قد تم حظره.
ما هو الموصى به في هذه الحالة؟ هل يجب أن أنتظر ببساطة حتى تنتهي إعادة الطهي وأتواصل مع YouTube لأرى ما إذا كان يمكن إزالة الحظر عني؟
أم أن علي استخدام https://meta.discourse.org/t/onebox-assistant-crawl-for-those-previews-reliably/107405؟

إنها بالتأكيد طريقة إذا كنت تستطيع تحمل تكلفتها.