Il existe un téléchargeur de ligne de commande open source très populaire appelé youtube-dl
, qui fait exactement cela. Il récupère les liens de fichiers audio et vidéo d’un lien YouTube donné - ou de tout autre site Web populaire comme Vimeo, Yahoo! Vidéo, uStream, etc.
Pour voir comment cela fonctionne, consultez l’ extracteur YouTube . C'est trop pour montrer ici. D'autres extracteurs existent pour des sites plus simples . Steven Penny a également un téléchargeur JavaScript simple pour YouTube, qui est un peu plus simple.
Mais fondamentalement, pour un lecteur vidéo Flash, il doit être initialisé et configuré via du JavaScript. En termes simples, le lecteur de l'objet Flash recevra l'URL d'un flux vidéo à charger.
Pour trouver le flux vidéo, vous devez analyser le code HTML et le code JS de la page vidéo pour trouver le code d'initialisation approprié, puis à partir de là, essayer de trouver le lien vers le fichier MP4 lui-même. Il est peut-être en texte clair, mais il peut également être généré à la volée avec des jetons de téléchargement spécifiques. Souvent, le code JavaScript est obscurci pour rendre plus difficile sa reconfiguration. Les informations vidéo peuvent également être contenues dans un fichier XML chargé de manière asynchrone par JS.
Pour la vidéo à téléchargement progressif HTML5, le fichier source réel est généralement mentionné directement dans l’ source
enfant de la video
balise, donc si vous effectuez une recherche sur la page mp4
ou similaire. Par exemple, dans l'émission de télévision allemande Tagesschau 100 , vous trouverez:
<source src="http://media.tagesschau.de/video/2014/0626/TV-20140626-1649-5801.webl.h264.mp4" type="video/mp4">
Pour les technologies de lecture plus avancées telles que MPEG DASH ou HTTP Live Streaming (HLS) d'Apple, vous devez analyser un fichier de méta-informations pour obtenir le flux vidéo réel. Le méta-fichier ( .mpd
par exemple, dans DASH et .m3u8
pour HLS) contiendra des liens vers des segments de vidéo et d’audio, que vous devrez ensuite combiner pour obtenir un fichier lisible.
Il n'y a pas de solution générale pour cela. Cela nécessite une inspection minutieuse et un débogage du site cible.
Bookmarklet YouTube
Voici comment je l'ai fait avec JavaScript
Commencez avec
ytplayer.config.args
objet. Ceci contient toutes les URL de la vidéo. Il est divisé enChacun de ceux-ci est un tableau séparé par des virgules de ce que j'appellerais des "objets de flux". Chaque "objet de flux" contiendra des valeurs comme celle-ci
Chaque URL sera codée , vous devrez donc les décoder. Maintenant la partie la plus délicate.
YouTube a au moins 3 niveaux de sécurité pour leurs vidéos
Les vidéos RTMPE sont généralement utilisées dans les longs métrages officiels et sont protégées par SWF Verification Type 2. Cela existe depuis 2011 et n’a pas encore été désossé.
Les vidéos de type "s" sont les plus difficiles à télécharger. Vous les verrez typiquement sur les vidéos VEVO et similaires. Ils commencent par une signature telle que
Ensuite, la signature est brouillée avec une fonction comme celle-ci
Cette fonction est dynamique, elle change tous les jours. Pour rendre la tâche plus difficile, la fonction est hébergée sur une URL telle que
cela introduit le problème de la politique de même origine . Essentiellement, vous ne pouvez pas télécharger ce fichier
www.youtube.com
car il s’agit de domaines différents. Une solution de ce problème est CORS . Avec CORS,s.ytimg.com
pourrait ajouter cet en-têteet cela permettrait au JavaScript de télécharger depuis
www.youtube.com
. Bien sûr, ils ne le font pas. Une solution de contournement pour cette solution consiste à utiliser un proxy CORS. C'est un proxy qui répond avec toutes les requêtes avec l'en-tête suivantDonc, maintenant que vous avez envoyé votre fichier JS par proxy et que vous avez utilisé la fonction pour brouiller la signature, vous pouvez l'utiliser dans la chaîne de requête pour télécharger une vidéo.
la source
s
type vidéo etRTMPE
type vidéo?Ma réponse: à partir du 22 janvier 2019, l'utilisation de ces méthodes peut être bloquée si vous essayez de contourner sans lier également vos informations d'utilisateur.
Pourquoi? étant donné que je suis un nouvel utilisateur de cette plate-forme, je ne peux pas commenter pour la règle spécifiée par @ Daniel-B . Selon le nouveau ToS (en allemand car je suis en Allemagne; veuillez traduire) pour YouTube inférieur à 6,1 G $:
Ils peuvent maintenant connaître la durée de chaque demande et savoir si vous violez. Comment est-il possible maintenant, étant donné ce scénario et votre adresse IP externe seront connues même si vous utilisez un VPN pour vous protéger sans lier les détails de l'utilisateur à un service quelconque.
la source