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

إليك بعض النتائج الإضافية. لاحظ أن هناك العديد من الافتراضات في المنشور أدناه - بناءً على نقص المعرفة الحقيقية.

سأتبع هذا المنشور برأيي حول ما يحدث وما يجب أن يحدث.

شكرًا لك على الرد، روبرت.

لاحظ أن عملية Oneboxing للفيديوهات باستخدام المسار /watch كانت (وما زالت!) تفشل عندما حاولت ذلك، لذا لم أكن بحاجة إلى حلقة تكرارية لإجبارها على الفشل.

لذلك، فإن الفرضية التي افترضتها هي أن user-agent الذي تستخدمه Onebox هو Discourse Forum Onebox v2.6.0.beta1 بناءً على هذا الكود…

اخترت فيديو عشوائي وحاولت استخدام curl لقراءة الرؤوس (headers).

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

نتيجة أول طلب curl باستخدام المسار /watch?

الأمر

curl --user-agent "Discourse Forum Onebox v2.6.0.beta1" -sD - -o /dev/null "https://m.youtube.com/watch?v=s0ONj4TG0UA"

الاستجابة:

curl --user-agent "Discourse Forum Onebox v2.6.0.beta1" -sD - -o /dev/null "https://m.youtube.com/watch?v=s0ONj4TG0UA"
HTTP/2 303 
content-length: 0
p3p: CP="This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl=en-GB for more info."
cache-control: no-cache
x-frame-options: SAMEORIGIN
content-type: text/html; charset=utf-8
location: https://www.youtube.com/watch?v=s0ONj4TG0UA&app=desktop
accept-ch-lifetime: 2592000
x-content-type-options: nosniff
accept-ch: DPR
expires: Tue, 27 Apr 1971 19:44:06 GMT
strict-transport-security: max-age=31536000
date: Fri, 07 Aug 2020 11:35:21 GMT
server: YouTube Frontend Proxy
x-xss-protection: 0
set-cookie: VISITOR_INFO1_LIVE=rcVTSJn81Ck; path=/; domain=.youtube.com; secure; expires=Wed, 03-Feb-2021 11:35:20 GMT; httponly; samesite=None
set-cookie: YSC=cFXIPerzT3Y; path=/; domain=.youtube.com; secure; httponly; samesite=None
set-cookie: GPS=1; path=/; domain=.youtube.com; expires=Fri, 07-Aug-2020 12:05:20 GMT
alt-svc: h3-29=":443"; ma=2592000,h3-27=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"

لذا تم إعادة توجيهي باستخدام استجابة 303 إلى العنوان الموجود في رأس location وهو https://www.youtube.com/watch?v=s0ONj4TG0UA&app=desktop.

كان لهذا ببساطة تأثير إضافة &app=desktop إلى الرابط.

نتيجة طلب curl الثاني إلى الرابط المعاد توجيهه - لا يزال على المسار /watch?

الأمر
curl --user-agent "Discourse Forum Onebox v2.6.0.beta1" -sD - -o /dev/null "https://www.youtube.com/watch?v=s0ONj4TG0UA&app=desktop"

الاستجابة

HTTP/2 429 
x-content-type-options: nosniff
expires: Tue, 27 Apr 1971 19:44:06 GMT
x-frame-options: SAMEORIGIN
cache-control: no-cache
p3p: CP="This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl=en-GB for more info."
accept-ch-lifetime: 2592000
content-type: text/html; charset=utf-8
accept-ch: DPR
strict-transport-security: max-age=31536000
content-length: 48982
date: Fri, 07 Aug 2020 11:46:00 GMT
server: YouTube Frontend Proxy
x-xss-protection: 0
set-cookie: VISITOR_INFO1_LIVE=VQwNuouhq-s; path=/; domain=.youtube.com; secure; expires=Wed, 03-Feb-2021 11:46:00 GMT; httponly; samesite=None
set-cookie: YSC=8IRfPRFRY6c; path=/; domain=.youtube.com; secure; httponly; samesite=None
set-cookie: GPS=1; path=/; domain=.youtube.com; expires=Fri, 07-Aug-2020 12:16:00 GMT
set-cookie: VISITOR_INFO1_LIVE=VQwNuouhq-s; path=/; domain=.youtube.com; secure; expires=Wed, 03-Feb-2021 11:46:00 GMT; httponly; samesite=None
set-cookie: YSC=8IRfPRFRY6c; path=/; domain=.youtube.com; secure; httponly; samesite=None
set-cookie: GPS=1; path=/; domain=.youtube.com; expires=Fri, 07-Aug-2020 12:16:00 GMT
alt-svc: h3-29=":443"; ma=2592000,h3-27=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"

لذا يتم إرسال كود استجابة 429 “طلبات كثيرة جدًا” لي، ولكن بدون إرسال رأس retry-after - توقف فورًا دون أي مفاوضات.

في كلتا الحالتين، إذا كان هذا ما تراه Onebox، فهي تتجاهل الاستجابة، أو على الأقل لا أعرف أين أبحث عنها إذا كانت تُسجل.

بينما قد يكون هذا إجراءً مشروعًا في حالة استجابة 429 واحدة، لا يمكن تجاهل رؤية العديد من استجابات 429 في فترة زمنية قصيرة جدًا.

نتيجة طلب curl الثالث - هذه المرة باستخدام المسار /embed/

للاكتمال، حاولت فورًا الحصول على نفس الفيديو ولكن هذه المرة باستخدام المسار /embed/.

الأمر

curl --user-agent "Discourse Forum Onebox v2.6.0.beta1" -sD - -o /dev/null "https://www.youtube.com/embed/s0ONj4TG0UA"

الاستجابة

HTTP/2 200 
accept-ch-lifetime: 2592000
content-type: text/html; charset=utf-8
expires: Tue, 27 Apr 1971 19:44:06 GMT
x-content-type-options: nosniff
cache-control: no-cache
p3p: CP="This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl=en-GB for more info."
strict-transport-security: max-age=31536000
accept-ch: DPR
date: Fri, 07 Aug 2020 11:55:29 GMT
server: YouTube Frontend Proxy
x-xss-protection: 0
set-cookie: VISITOR_INFO1_LIVE=PNE6x6djF00; path=/; domain=.youtube.com; secure; expires=Wed, 03-Feb-2021 11:55:29 GMT; httponly; samesite=None
set-cookie: VISITOR_INFO1_LIVE=PNE6x6djF00; path=/; domain=.youtube.com; secure; expires=Wed, 03-Feb-2021 11:55:29 GMT; httponly; samesite=None
set-cookie: GPS=1; path=/; domain=.youtube.com; expires=Fri, 07-Aug-2020 12:25:29 GMT
set-cookie: YSC=pDW-hdbauK8; path=/; domain=.youtube.com; secure; httponly; samesite=None
alt-svc: h3-29=":443"; ma=2592000,h3-27=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
accept-ranges: none
vary: Accept-Encoding

200 - نجاح.

يبدو أن إضافة lazy-yt تعيد كتابة الروابط بتنسيق /watch

غير متأكد مما إذا كان هذا ذا أهمية على الإطلاق، ولكن… هل إضافة المضمنة lazy-yt مفعلة افتراضيًا؟ لاحظتها في تثبيت التطوير الخاص بي.

يبدو أنها تقوم بتعديل طريقة to_html الخاصة بـ YouTube Oneboxer بشكل غير رسمي (monkey patch).

لا أعرف ما إذا كان ذلك مهمًا، لكن طريقة to_html الأصلية لـ Onebox ترجع تنسيق عنوان URL /embed/

بينما تستخدم إضافة lazy-yt تنسيق عنوان URL /watch?v=.

هل هناك أي شيء آخر يمكنني فعله لإظهار وجود مشكلة تحتاج إلى نوع من الاهتمام؟ المنشور التالي سيشرح ما أعتقد أنه السبب الجذري.