Voici quelques résultats supplémentaires. Notez qu’il y a de nombreuses hypothèses dans le message ci-dessous, basées sur un manque de connaissances réelles.
Je vais suivre ce message avec mon opinion sur ce qui se passe et ce qui devrait se produire.
Merci pour ta réponse, Robert.
Notez que l’Oneboxing de vidéos via la route /watch échouait (et échoue toujours !) lorsque je l’ai essayé, donc je n’avais pas besoin d’une boucle pour forcer l’échec.
Donc, une hypothèse que j’ai faite est que l’user-agent utilisé par Onebox est Discourse Forum Onebox v2.6.0.beta1, basé sur ce code…
J’ai choisi une vidéo au hasard et j’ai tenté d’utiliser curl pour lire les en-têtes.
Je l’ai fait depuis l’intérieur du conteneur Docker de mon site en production, ce qui a produit la réponse suivante.
Résultat du premier curl utilisant la route /watch?
commande
curl --user-agent "Discourse Forum Onebox v2.6.0.beta1" -sD - -o /dev/null "https://m.youtube.com/watch?v=s0ONj4TG0UA"
réponse:
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="Ce n'est pas une politique P3P ! Voir http://support.google.com/accounts/answer/151657?hl=en-GB pour plus d'informations."
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"
J’ai donc été redirigé avec une réponse 303 vers l’URL dans l’en-tête location, qui était https://www.youtube.com/watch?v=s0ONj4TG0UA&app=desktop.
Cela a simplement eu pour effet d’ajouter &app=desktop à l’URL.
Résultat du deuxième curl vers l’URL redirigée - toujours sur la route /watch?
commande
curl --user-agent "Discourse Forum Onebox v2.6.0.beta1" -sD - -o /dev/null "https://www.youtube.com/watch?v=s0ONj4TG0UA&app=desktop"
réponse
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="Ce n'est pas une politique P3P ! Voir http://support.google.com/accounts/answer/151657?hl=en-GB pour plus d'informations."
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"
Je reçois donc un code de réponse 429 “trop de requêtes”, mais sans recevoir d’en-tête retry-after – arrêt immédiat sans négociation.
Quoi qu’il en soit, si c’est ce que voit Onebox, il ignore la réponse ou du moins, je ne sais pas où chercher si cela est enregistré.
Bien que cela puisse être une action légitime pour un seul 429, voir de nombreuses réponses 429 dans une très courte période de temps ne peut pas être ignoré.
Résultat du troisième curl - cette fois en utilisant la route /embed/
Pour être complet, j’ai immédiatement essayé d’obtenir la même vidéo, mais cette fois en utilisant la route /embed/.
commande
curl --user-agent "Discourse Forum Onebox v2.6.0.beta1" -sD - -o /dev/null "https://www.youtube.com/embed/s0ONj4TG0UA"
réponse
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="Ce n'est pas une politique P3P ! Voir http://support.google.com/accounts/answer/151657?hl=en-GB pour plus d'informations."
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 - Succès.
Le plugin lazy-yt semble réécrire les URL au format /watch
Je ne sais pas si cela a une quelconque importance, mais… le plugin intégré lazy-yt est-il activé par défaut ? Je l’ai remarqué dans mon installation de développement.
Il semble patcher la méthode to_html de l’Oneboxer YouTube.
Je ne sais pas si c’est important, mais la méthode to_html d’Onebox originale renvoie le format d’URL /embed/…
Alors que le plugin lazy-yt utilise le format d’URL /watch?v=.
Y a-t-il autre chose que je puisse faire pour montrer qu’il y a un problème nécessitant une certaine forme d’attention ? Le prochain message expliquera ce que je pense être la cause racine.