[Video] Faites vos adieux aux DRM avec ce script !

 

Salut à tous,

 

Régulièrement je vous montre comment sur de nombreux sites, récupérer des vidéos.
En épluchant le code source ou les requêtes "réseaux", nous parvenons souvent à retrouver le fichier vidéo et donc à le télécharger ...

Mais parfois ça n'est pas possible ... un exemple concret ?
Tout simplement "Youtube" !

 

Bien entendu, et avant que des petits malins mettent en commentaire qu'il existe une multitude de logiciels qui y parviennent, je tiens à préciser que ça n'est pas impossible, mais qu'il faut s'y prendre d'une manière différente ... Alors si vous préférez utiliser des logiciels tout faits, au lieux de comprendre comment ceux-ci fonctionnent, vous n'êtes malheureusement pas sur le bon site ...

Comment tout cela fonctionne ?

La vidéo est chargée dynamiquement, morceau par morceau, parfois un peu d'audio, parfois un peu de vidéo, ...
Bref, nous n'avons pas "UN" fichier, mais plusieurs morceaux de fichier ... qui s'ils ne sont pas assemblés correctement ne fonctionnent pas ...

Là où la DRM intervient, c'est qu'en fait, chacun des morceaux téléchargés est "modifié" de manière à être inexploitable pour quiconque tenterait des les récupérer sans passer par l'utilisation normale du site, qui lui, "traduira" ces morceaux pour que vous puissiez profiter de l'immense privilège de les visionner !

Alors, lorsque je parle de DRM, certains ne savent pas vraiment ce que c'est ...
C'est donc pour ça, que je vais tenter de vous expliquer dans les grandes lignes, ce qu'est une DRM !

 

Qu'est-ce qu'une DRM

 

DRM, abréviation correspondant à Digital Right Management, et littéralement traduit par "Gestion Numérique des Droits" (GND).
C'est une "protection" que l'on applique à un contenu numérique :

  • Une vidéo
  • Un morceau musicale
  • Un fichier audio
  • Un e-Book
  • ... 

Pour faire simple, cette protection vous empêchera de lire et / ou partager un contenu sans le bon logiciel, le bon appareil, bref sans un contexte bien particulier défini par l'entreprise qui vous met à disposition ledit contenu...

 

Comment contourner une DRM 

Deux méthodes s'offrent à vous ...

Soit vous plongez dans un code long, prenez votre mal en patience, et tentez de faire ce que l'on appelle du "Reverse Engineering", afin de comprendre comment sont mises en place la ou les protections pour pouvoir les enlever.

Soit vous filmez votre vidéo avec microphone et une caméra, car oui, on n'utilise pas de logiciel de screencast.
Passer par un logiciel dont on ne connaît pas le code source, c'est tricher, et tricher c'est le mal, et vous serez sévèrement puni pour ça ;)

Si je fais en sorte de vous éviter de télécharger et d'installer toute forme de logiciel et ou plugin, c'est parce que la plupart du temps vous ne savez pas vraiment ce que vous installez et d'où ça vient .. beaucoup de personnes utilisent probablement des cracks, ou téléchargent des softs douteux qui ... offrent pour la plupart d'entre eux, un accès V.I.P à des hackers sur votre ordinateur

Aussi, vous n'aurez besoin ni de passer par l'une ou l'autre de ces 2 méthodes ...
J'ai développé pour vous un script dont le job va être de capturer simultanément le son et les images d'une vidéo, puis les assembler, et enfin télécharger la vidéo une fois le son et l'image réassemblés !
La qualité sera bien sur différente de l'originale, car il faut imaginer que je vous évite d'avoir à brancher un microphone, et mettre une caméra devant votre écran, mais ce que je fais, est plus ou moins la même chose !

Vous obtiendrez à la fin un fichier que vous pourrez stocker sur votre ordinateur, smartphone, tablette, ... que vous pourrez partager sans avoir à vous prendre la tête !

Car on est d'accord, quand c'est gratuit c'est mieux !

Comment utilise le script 

 

Pré-requis 

Tout d'abord, il faudra vous rendre sur la page de la vidéo à télécharger.
Ce script fonctionne dans l'état, de manière assez rudimentaire.
Il vous faut donc n'avoir qu'une vidéo sur la page, "une", pas "deux", pas "trois", mais bien "une seule" vidéo.
Car seule la première vidéo détectée sera traitée.

 

Copiez le script suivant :

/*****************************************
*
*			Dyrk.org
*		   2016 - 2017
*			Dave-Hill
*
******************************************/

var sysObj = {}, d = document, 
download = function(blob, fileName) {
  var a = d.createElement("a");
  a.href =  window.URL.createObjectURL(blob);
  a.download = fileName;
  a.click();
  window.URL.revokeObjectURL(a.href);
}, start = function(){
	stop();
	sysObj.video.play();
	sysObj.startButton.disabled = true;
	sysObj.stopButton.disabled  = false;
	sysObj.stream 		= sysObj.canvas.captureStream();
	sysObj.audioStream 	= sysObj.ctxa.createMediaStreamDestination();
	sysObj.stream.addTrack(sysObj.audioStream.stream.getAudioTracks()[0]);
	sysObj.ctxa.createMediaElementSource(sysObj.video).connect(sysObj.audioStream);
	sysObj.recorderv = new MediaRecorder(sysObj.stream, sysObj.blob_type_v);
	sysObj.recorderv.addEventListener('dataavailable',	(e)  => { sysObj.blobs.push(e.data);});
	sysObj.recorderv.addEventListener('stop',			()	 => { download(new Blob(sysObj.blobs, sysObj.blob_type_v), "recording.webm") });
	sysObj.recorderv.start(100);
}, stop = function () { 
	sysObj.startButton.disabled = false;
	sysObj.stopButton.disabled  = true;
	sysObj.video.pause();
	sysObj.video.currentTime = 0;
	if (sysObj.recorderv)  sysObj.recorderv.stop(); 
}, init = function(){
	if (sysObj.mdv) 
		sysObj.mdv.parentNode.removeChild(sysObj.mdv);
		sysObj.startButton 		= d.createElement('button'), 
		sysObj.stopButton 		= d.createElement('button'),
		sysObj.mdv 				= d.createElement('div');
		sysObj.canvas 			= d.createElement('canvas');
		sysObj.ctxv    			= sysObj.canvas.getContext('2d');
		sysObj.ctxa    			= new AudioContext();
		sysObj.video 			= d.getElementsByTagName('video')[0];
		sysObj.video.width		= 1000;
		sysObj.video.height		= 600;
		sysObj.canvas.width 	= sysObj.video.width;
		sysObj.canvas.height 	= sysObj.video.height;
		sysObj.blobs			= [];
		sysObj.blob_type_v		= {type: 'video/webm'};
		sysObj.video.addEventListener('play', 
		function () {setInterval(function(e){if (!e.paused && !e.ended) sysObj.ctxv.drawImage(e, 0, 0);  }.bind(null, this), 24);}, 0);
		sysObj.stopButton.textContent 	= 'stop download';
		sysObj.startButton.textContent = 'start download';
		sysObj.mdv.appendChild(sysObj.startButton);
		sysObj.mdv.appendChild(sysObj.stopButton);
		sysObj.mdv.appendChild(sysObj.canvas);
		sysObj.stopButton.addEventListener('click',  stop);
		sysObj.startButton.addEventListener('click', start);
		sysObj.startButton.disabled = false;
		sysObj.stopButton.disabled  = true;
		sysObj.startButton.setAttribute('style',"float: left;padding: 10px;font-weight: bold;");
		sysObj.stopButton.setAttribute('style',"float: left;padding: 10px;font-weight: bold;");
		sysObj.mdv.setAttribute('style','position:fixed;top:10px;left:10px;z-index:200000000000;'+
		'width:98%;height:35px;border:1px solid black;border-radius:10px;background: white;opacity: 0.8;');
		sysObj.canvas.setAttribute('style','position:absolute:-1000px;;opacity:0');
		d.getElementsByTagName('html')[0].appendChild(sysObj.mdv);
}();

Collez le ensuite dans la barre d'adresse (l'url) de la page, en le préfixant par "javascript:"

 

Pour terminer, validez avec la touche "entrée" !
Une barre devrait alors apparaître en haut de votre page.

 

 

Cliquez ensuite sur "Start Download", votre vidéo va démarrer, vous n'entendrez pas de son et c'est normal, lorsque vous souhaiterez arrêter le téléchargement, cliquez sur "Stop download", et vous récupérerez le fichier vidéo généré !

 

Conclusion

 

Je ne suis pas fou, et je ne vous dirais pas que ce script fonctionne pour certaine plateforme de V.O.D (video on demand), car je risquerais de me faire taper sur les doigts  ;)

 

Partagez ce contenu

9 comments

  • Le vengeur masqué

    slt
    ça marche avec quoi comme navigateur?
    Moi sous firefox c est le desert !
    Ps:j’ai quand meme les boutons qui sont là

    • Salut Don Diego, mon fidèle lecteur de toujours ;)
      Alors je n’avais pas testé sous Firefox, et en effet, je constate que cela ne fonctionne pas.
      Je creuserais donc pour voir ce qui ne fonctionne pas.
      Pour l’heure la plupart de mes développements son réalisé avec Google Chrome, qui je l’avoue, est à mon sens le Browser le plus rapide, et avec une « console développeur » plus aboutie.

  • re/
    petit retour rapide >> edge_ie11_opera >> nada!!

  • Salut je suis nouveau sur le site que j’ai découvert grâce à cet article,  j’ai voulue essayer le script sur une vidéo youtube depuis chrome mais le rendu final et un écran rose, une idée du problème ?? (Ps : je lis les vidéo avec vlc)

    • Hello, je viens de (re)tester sur Youtube, j’ai pris le clip « Something just like this » et ça fonctionne niquel ( j’utilise également VLC ;) )
      Essaie de voir si tu peux faire « stop download » un peu avant la fin de la vidéo.
      Sinon, essaie sur une vidéo un peu plus courte.

      • J’ai réessayer sur la même vidéo que vous, je fais stop download  au bout de 15 sec mais le rendu final n’est pas complet, le son est bien présent mais toujours cette écran rose à la place de la vidéo ( J’ai essayer sur différent navigateur Opéra et Chrome )

        • Super, la sortie vidéo de VLC était sur directX au lieu de web GL j’ai trouver d’ou viens le problème et tout fonctionne, merci pour cette article.

  • Salut, pense-tu qu’il serait possible de télécharger directement la vidéo sans faire un arrêt manuel et ainsi éviter de regarder la vidéo complète  ( surtout si elle dure plus de 20 minute ) ?

  • Bonjour,

    J’aimerais que les petits malins qui dépensent leur intelligence à faire péter les solutions de sécurité et de protections de tyype DRM passent de l’autre coté de la ligne et deviennent pendant un an des vendeurs de contenus pour voir un peu ce que ça fait.

    J’ai personnellement sorti (en indépendant) un album de musique en 2004. Il était déja sur les réseaux illégaux 6 mois avant sa sortie.

    Aujourd’hui je m’apprête à sortir (dans un ou deux ans) un site de elearning avec des vidéos de cours… et je regarde les moyen de sécuriser les vidéos…. Mes cours étant destinés à un publique d’informaticiens professionnels, le risque de téléchargement illégaux est énorme…..

    Les solutions de multi DRM sont de $200 par mois pour un service de base à $800 par mois et plus que ça pour certains fournisseurs de service…. et ça c’est sans compter le stockage et l’encodage des vidéos…. Autant dire que pour une entreprise qui débute, c’est une fortune….

     

    Les gens qui cautionnent le piratage à tout va…etc… sont les mêmes qui vont se plaindre du taux de chômage élevé…etc… à un moment il faut être cohérent.

     

    Bon weekend.

Laisser une réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *