Hier sind weitere Ergebnisse. Beachten Sie, dass der folgende Beitrag viele Annahmen enthält – basierend auf mangelndem fundiertem Wissen.
Ich werde auf diesen Beitrag mit meiner Einschätzung folgen, was hier vor sich geht und was geschehen sollte.
Danke für die Antwort, Robert.
Beachten Sie, dass das Oneboxing von Videos über die Route /watch (und das ist immer noch so!) fehlgeschlagen ist, als ich es versucht habe, sodass ich keine Schleife benötigte, um einen Fehler zu erzwingen.
Eine Annahme, die ich getroffen habe, ist, dass der user-agent, den Onebox verwendet, Discourse Forum Onebox v2.6.0.beta1 lautet, basierend auf diesem Code…
Ich habe ein zufälliges Video ausgewählt und versucht, mit curl die Header auszulesen.
Ich habe dies innerhalb des Docker-Containers auf meiner Live-Site durchgeführt, was folgende Antwort ergab.
Ergebnis des ersten curl mit der Route /watch?
Befehl
curl --user-agent "Discourse Forum Onebox v2.6.0.beta1" -sD - -o /dev/null "https://m.youtube.com/watch?v=s0ONj4TG0UA"
Antwort:
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"
Ich wurde also mit einer 303-Antwort an die URL im location-Header weitergeleitet, die https://www.youtube.com/watch?v=s0ONj4TG0UA&app=desktop lautete.
Dies hatte lediglich den Effekt, &app=desktop an die URL anzuhängen.
Ergebnis des zweiten curl an die umgeleitete URL – immer noch auf der Route /watch?
Befehl
curl --user-agent "Discourse Forum Onebox v2.6.0.beta1" -sD - -o /dev/null "https://www.youtube.com/watch?v=s0ONj4TG0UA&app=desktop"
Antwort
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"
Ich erhalte also einen 429-Statuscode „zu viele Anfragen“, aber ohne einen retry-after-Header gesendet zu bekommen – sofortiges Aufhören ohne Verhandlung.
Wie auch immer, wenn Onebox dies sieht, ignoriert es die Antwort, oder zumindest weiß ich nicht, wo ich danach suchen soll, falls sie protokolliert wird.
Obwohl dies vielleicht für einen einzelnen 429-Fall legitim sein könnte, können viele 429-Antworten in sehr kurzer Zeit nicht ignoriert werden.
Ergebnis des dritten curl – diesmal mit der Route /embed/
Zur Vollständigkeit habe ich sofort versucht, dasselbe Video abzurufen, diesmal jedoch über die Route /embed/.
Befehl
curl --user-agent "Discourse Forum Onebox v2.6.0.beta1" -sD - -o /dev/null "https://www.youtube.com/embed/s0ONj4TG0UA"
Antwort
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 – Erfolg.
Das lazy-yt-Plugin scheint URLs im /watch-Format umzuschreiben
Ich bin mir nicht sicher, ob dies überhaupt von Bedeutung ist, aber… ist das eingebettete Plugin lazy-yt standardmäßig aktiviert? Ich habe es in meiner Entwicklungsumgebung bemerkt.
Es scheint die to_html-Methode des YouTube Oneboxers zu patchen (monkey patch).
Ich weiß nicht, ob dies von Bedeutung ist, aber die ursprüngliche to_html-Methode des Oneboxers gibt das /embed/-URL-Format zurück…
Während das lazy-yt-Plugin das /watch?v=-URL-Format verwendet.
Gibt es noch etwas anderes, das ich tun kann, um zu zeigen, dass es ein Problem gibt, das Aufmerksamkeit erfordert? Im nächsten Beitrag werde ich erklären, was ich als die Ursache des Problems betrachte.