{MyCanal} – Télécharger les vidéos de la plateforme MyCanal.fr

 

Hello les amis,

 

Petit challenge que l'on m'a lancé récemment, est-il possible de télécharger les vidéos sur MyCanal.fr ...
On parle de plus en plus souvent de DRM, et les plateformes mènent la vie dur à toutes les petites extensions qui permettent de télécharger les vidéos en ligne !
Alors comme tout bon challenger je me suis penché sur ce projet !!!

Est-il oui ou non possible de télécharger une vidéo sur MyCanal  ?

Bien entendu, je n'aurais pas écrit cet article pour vous dire qu'il ne serait pas possible de le faire.
Cela étant dit, je tiens à dire à toute personne qui m'écrirait dans 3 ans que "ça ne marche pas / plus" ... c'est "normal" ...

Un "Hack" n'est pas fait pour durer dans le temps, il s'agit là d'une astuce temporaire, qui n'est pas vouée à être persistente.
Canal+ (myCanal aura certainement mis à jour sa plateforme d'ici quelques temps)

Alors la question c'est comment faire pour y parvenir ?

 

Reverse Engeenering - Step 1 :

La première étape consiste bien entendu à analyser un peu avec la console (touche F12 de votre clavier)
J'ai donc cherché dans le code source l’élément "video" avec le code suivant :

document.getElementsByTagName('video')

Et j'ai pu constater que ... la source de la vidéo (url) était ... un blob
Lorsque l'on sait ça ... il faut s'attendre à ce qu'il y ait quelques contre-mesures pour empêcher de copier la vidéo !

Je prends donc quelques instants pour regarder dans l'onglet "network" (réseau) pour analyser les données envoyées et reçues par la plateforme !
Je recherche bien évidemment un petit .mp4 ou .m3u8 ...
Bingo !

J'obtiens toutes les URL possibles pour la qualité de la vidéos ... dont celles qui ne sont pas "sécurisés"

La requête qui permet de récupérer ces informations est la suivante :

https://secure-service.canal-plus.com/video/rest/<type>/cplus/<id>?format=json

Pour l'instant mes recherches m'ont permis de découvrir qu'il existait 2 types (il en a peut être d'autres) :

  • getVideosLiees
  • getRelancesVideo

Concernant l'id ... il s'agit bien entendu de l'id de la vidéo que vous pourrez facilement retrouver dans l'url :
Ainsi, via cette requête, vous aurez accès à la liste des différents liens de téléchargement de la vidéos.
Cette liste contient notamment les fichiers mp4 ...

Bien entendu, j'ai pu vérifier que cela fonctionnait !

Il est possible que vous ayez parfois un "Access Denied".
Si c'est le cas, essayez juste une autre qualité.

Dans le cas où vous n'auriez  que le .m3u8 de disponible, faites attention ... il ne s'agit pas là d'un simple fichier vidéo ... vous ne pourrez pas l'emmener partout où vous voulez, ni le consulter hors ligne ...
Ce fichier, si vous l'ouvrez avec un bloc note, contient simplement des informations relatives aux différentes parties de la vidéo ...
Un lecteur tel que VLC est parfaitement capable de l'utiliser pour lire une vidéo.

D'ailleurs, si vous utilisez VLC, allez dans le menu "Ouvrir un flux réseau" ...
Récupérez ensuite l'url du .m3u8 et copiez là dans le champ prévu à cet effet :

 

 

Sur le bouton "lire" vous avez une petite flèche ... choisissez "Convertir"
Et voilà, plus qu'à indiquer l'endroit où vous souhaitez sauvegarder votre petit mp4 et c'est parti !

 

Le Code

Pour mes lecteurs préférés, j'ai pris le temps de faire un script, qui vous fournira directement la liste des liens  de téléchargement disponibles pour une vidéos de myCanal.
Il suffit simplement de le copier dans la console de votre navigateur lorsque vous serez sur la page de la vidéo que vous souhaitez télécharger ;)

var a = document.createElement('a'), types = ['getRelancesVideo', 'getVideosLiees'];
for (var i in types){
    var myCanal = new XMLHttpRequest();
    myCanal.open('POST', "https://secure-service.canal-plus.com/video/rest/"+types[i]+"/cplus/"+(/\/([0-9]{5,8})/.exec(document.location.toString())[1])+"?format=json");
    myCanal.addEventListener('load', function(e){
        urls = JSON.parse(e.target.response)
        if (urls['MEDIA']){
			 console.log("Plus d'info : ", e.target.responseURL);
			console.dir(urls['MEDIA']['VIDEOS']);
        }
    });
    myCanal.send();
}

 

 

Conclusion

Merci à tous pour vos encouragements, que ça soit par mail ou par commentaire !
J'espère pouvoir continuer à vous écrire sur de bons sujets ;)
Je ne peux malheureusement pas aider tout le monde sur tous les sujets, et je vous invite à exprimer vos demandes directement par commentaire, ce qui peut permettre à d'autres personnes de vous aider ^^
En attendant je tiens à vous dire que la plupart de mes articles sont tirés de mon quotidien, mais de plus en plus de sujets viennent de vos demandes ;)
Ce qui explique aussi pourquoi je ne peux pas aider tout le monde ^^
En tout cas je vous souhaite à tous un excellent Weekend !

Partagez ce contenu

20 comments

  • C’est toujours un plaisir de lire tes articles. Merci ! ;)

  • Hey, super pour ton boulot !

     

    Obtenais-tu une erreur de ce genre là :

    « Blocage d’une requête multiorigines (Cross-Origin Request) : la politique « Same Origin » ne permet pas de consulter la ressource distante située sur https://hss-od.snl-lv3.canalplus-cdn.net/replay/cplus/ssd/cpl100019259-ant-1195636-1/ANT-1195636-1.ism/QualityLevels(749952)/Fragments(Video=120000000). Raison : échec de la requête CORS. »

     

    Si non c’est qu’ils sont très réactif..

    • Hello Fraht

      Merci pour tes encouragements ;)

      Pour t’aider, il faudrait que tu me copies ici l’entête de la requête que tu fais via la console développeur:
      Touche F12 du clavier, onglet « network », tu vas sur la requête qui merde (en rouge), et tu me copie l’entête (header)
      Si tu ne vois pas la requête, laisses la console ouverte et fais un F5

  • Les liens ne sont plus affichés

    en cherchant on trouve un fichier ism qui est en réalité un xml, il nous indique les liens de : ismv (video) isma (audio) ismc (manifest) , ce sont des fichiers uniques pas découpés.

    dans le navigateur le lecteur intégré arrive a lire la video mais on voit pas l’image c’est tout noir, apres dans vlc ca ne lit pas et en l’ouvrant dans mediainfo ca nout dit conteneur MPEG4 (ISML) flux AVC

    apres en l’ouvrant en hexadecimal on voit au debut du fichier un header de drm c marqué wrm header

    sinon dans network dans le navigateur ya un fichier javascript qui nous dit drmType : PlayReady Download // drmType : DRM Common Encryption Download // drmType : DRM Widevine

    voila widevine apparemment c’est google netflix etc jpense que le flux doit etre chiffré enfin jen sait rien comment ca marche en meme temps si le navigateur arrive a le lire soit il a le contenu déchiffré soit il a la clé pour dechiffrer….

    en telechargeant l’application mycanal et en telechargeant la video dans le dossier il y a pleins de fichiers .video et .video.metadata mediainfo reconnait aucun format mais en hexa on voit plusieurs « mdat », donc c bien un fichier video.

    https://ibb.co/bSfXiL

    https://ibb.co/f80jV0

    • hello Mat’,

      Merci pour toutes ces infos ^^
      Et surtout pour avoir passé pas mal de temps à investiguer.
      De mon côté je constate que cela fonctionne toujours avec le script qui utilise l’id dans l’url, que je vous ai fournie ( peut-être pas sur tous les contenus ? ).
      Si ça t’intéresse j’ai également écrit un autre article (publié ce weekend) sur la partie « abonné ».

      Bon après-midi.

      Dyrk

  • Salut

    Moi aussi j’ai pas les liens vidéos avec le « object ».  Que je sois sûr, il suffit de copier ton script dans la console pour que ça marche ?

    Merci d’avance

  • alors mnt est ce que il y a une actus ou non mes amis est ce que ca marche avec vous ou non svp aide mois

  • Bonjour et bonne année à tous,

    Merci pour ce tuto mais pour ma part, ca ne fonctionne pas .

    Le lien généré via le script à copier dans la console me renvoie à chaque fois vers une page suivante (sous chrome) :
    {« ID »: »-1″, »ID_DM »: » », »ID_YT »: » », »TYPE »: »VOD PROG », »DURATION »: » », »INFOS »:{« DESCRIPTION »: » », »NB_VUES »: »0″, »AUTEUR »: » », »PARTIE »: » », »EMBED »: » », »NB_LIKES »: »0″, »NB_COMMENTS »: »0″, »NOTE »:{« AUTORISER »: » », »MOYENNE »: » », »NB_VOTES »: »0″}, »PUBLICATION »:{« DATE »: » », »HEURE »: » »}, »TITRAGE »:{« TITRE »: » », »SOUS_TITRE »: » »}, »OPENGRAPH »:{« TYPE »: »video.other »}}, »CHAINE »: »0″, »RUBRIQUAGE »:{« UNIVERS »: » »}, »MEDIA »:{« IMAGES »:{« GRAND »: » », »PETIT »: » »}, »VIDEOS »: » »}, »PUB »:{« PAVE »: » », »BILLBOARD »: » », »HABILLAGE »:{« VISUEL »: » », »DESTINATION »: » »}, »PAGEID »: » », »NO_PUB »:false}}

    Par exemple : https://secure-service.canal-plus.com/video/rest/getVideosLiees/cplus/10228415?format=json généré à partir de l’url suivante sur mycanal: https://www.mycanal.fr/series/un-si-grand-soleil/h/10228415_50026

    Je n’ai donc accès à aucun lien non sécurisé. Est ce lié à un changement de la part de C+ suite à la découverte de cette faille ? La méthode expliquée ne marche plus donc ?? Ou est ce moi qui m’y prend mal ??
    D’avance merci pour l’aide,
    FX

  • Pour ceux qui souhaitent absolument récupérer leur vidéo, ce n’est pas exactement un hack, ce n’est pas vraiment téléchargé, mais vous pouvez utiliser des logiciels comme OBS Studio, et lui demander de capturer la vidéo et le son sur votre écran/fenêtre de navigateur, en générant un fichier vidéo local. Selon votre paramétrage vidéo, la qualité n’est pas aussi propre, mais par contre ils n’ont aucun moyen de bloquer ça, vu que vous allez juste lancer la vidéo et demander à OBS de capturer l’image et le son sur votre pc : le site web ne verra rien d’autre qu’une lecture supplémentaire.

    Cette technique a par contre certaines limites :
    – vous êtes obligés de faire tourner la vidéo entière pour l’enregistrer
    – un problème de connexion au milieu, la vidéo bugue, et il faut recommencer car OBS enregistrera aussi la coupure de connexion et le temps de rechargement !

  • merci pour l’article. je sais que freemake telecharge des videos sur canal+ aussi

  • Hello tous,

    Qui pourrait m’aider pour cette vidéo: https://www.mycanal.fr/cinema/mon-zenith-a-moi-emission-du-19-fevr-2019/h/11176814_50001
    Je crois que j’ai tout essayé ce qui était à ma disposition et pas moyen de l’enregistrer…

    Merci par avance

  • Hello

    Effectivement j’ai l’impression que cette méthode ne fonctionne plus pour télécharger les vidéos… Voici ce que j’ai dans ma console :

    « Undefined

    Plus d’info : https://secure-service.canal-plus.com/video/rest/getVideosLiees/cplus/11176814?format=json »

    Et c’est tout

    Peut être que Canal a vu la douille ^^

  • Pareil, j’obtiens le texte qui suit quand je vais sur le lien fourni par le script :

    {« ID »: »-1″, »ID_DM »: » », »ID_YT »: » », »TYPE »: »VOD PROG », »DURATION »: » », »INFOS »:{« DESCRIPTION »: » », »NB_VUES »: »0″, »AUTEUR »: » », »PARTIE »: » », »EMBED »: » », »NB_LIKES »: »0″, »NB_COMMENTS »: »0″, »NOTE »:{« AUTORISER »: » », »MOYENNE »: » », »NB_VOTES »: »0″}, »PUBLICATION »:{« DATE »: » », »HEURE »: » »}, »TITRAGE »:{« TITRE »: » », »SOUS_TITRE »: » »}, »OPENGRAPH »:{« TYPE »: »video.other »}}, »CHAINE »: »0″, »RUBRIQUAGE »:{« UNIVERS »: » »}, »MEDIA »:{« IMAGES »:{« GRAND »: » », »PETIT »: » »}, »VIDEOS »: » »}, »PUB »:{« PAVE »: » », »BILLBOARD »: » », »HABILLAGE »:{« VISUEL »: » », »DESTINATION »: » »}, »PAGEID »: » », »NO_PUB »:false}}

     

    Mais j’ai accès à rien à partir de là…

    Une idée?

  • Bonjour,J’ai utiliser le script pour recuperer une video sur mycanal

    J’ai ca en reponse

    undefined

    Plus d’info : https://secure-service.canal-plus.com/video/rest/getVideosLiees/cplus/4456740?format=json

    VM1812.8

    Vm1812.9

    ca veut dire quoi merci par avance

  • Bonjour,

    Depuis un moment, j’étais à la recherche de « COMMENT » télécharger les vidéos sur la plateforme « mycanal » et je suis tomber sur votre page ou le résultat n’étais malheureusement plus concluent au vu des dires de chacun.

    Après d’autres recherches approfondies, je suis tomber sur une extension chrome du nom de « Flash Video Downloader » qui devait normalement être capable de récupérer 100% des fichiers vidéos sur les pages voulue.

    Une utilisation de plusieurs heures ont été faites et je peux vous dire que l’extension est 100% fonctionnel sur MyCanal. (J’ai déjà récupérer des primes sur C8, etc..)

    J’espère vous avoir aider.

    Florian M.

  • SCHILLING Alain

    Qui est parvenu à charger les épisodes 1 & 2 de la Série Chernobyl ?

    Fichier lisible via VLC

    Merci pour vos réponses les amis ?

  • Michael Jackson

    Bonjour,

    Je souhaiterais télécharger un documentaire diffusé sur CStar et qui est disponible sur MyCanal et qui s’appelle : » La Story de Michael Jackson – 10 ans après ». Depuis quelques temps j’essaye de le télécharger mais je n’y parviens pas malheureusement. J’ai essayé d’appliquer votre méthode dans l’espoir de réussir à télécharger ce documentaire mais c’est sans succès. Pourriez-vous télécharger le documentaire pour moi et me l’envoyer ensuite par mail si ça ne vous dérange pas s’il vous plaît ? Cette demande est très importante et surtout urgente pour moi car ce documentaire sera disponible en ligne jusqu’au 18 juin, et j’ai vraiment besoin de ce documentaire à tout prix. Je vous remercie d’avance pour votre réponse et je vous souhaite une très bonne journée.

     

    Cordialement.

Répondre à Admin Annuler la réponse

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