[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

3 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!!

Laisser une réponse

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