2015-08-30 1 views
0

Mon université a téléchargé des vidéos de conférences sur son site Web. Pour y accéder, il faut saisir certaines références que je possède évidemment. Ils utilisent un simple Apache Server. Les vidéos sont intégrées en tant que Flowplayer et ne permettent pas de les télécharger. La source html de la page vidéo est à peu près la suivante:Téléchargement de vidéos Flowplayer avec authentification

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>Show video</title> 
<script type="text/javascript" src="https://www.example.com/videos/javascript/jquery.js"></script> 
<link rel="stylesheet" type="text/css" href="https://www.example.com/videos/css/mta.css?timestamp=1440967823" /> 
</head> 
<body> 
<script src="javascript/flowplayer/flowplayer-3.2.12.min.js"></script> 
<div style="width: 256px; height: 256px; background-color: #ff00ff" id="player"></div> 
<script type="text/javascript"> 
$f("player", "javascript/flowplayer/flowplayer-3.2.16.swf", { 
    onLoad: function(){ 
     $.get("https://www.example.com/videos/prepareVideo", 
       {videoID :'fae98609a52e6d252606248d1339e919'}, 
       function(data){ 
             $f("player").play(data.url); 
             $('#player').width(data.width); 
             $('#player').height(data.height); 
             $('#title').html("Playing "+data.description); 
       } 
      ); 
    } 
} 
); 
</script> 
</body> 
</html> 

J'ai essayé observer l'onglet réseau dans les outils de développement Chrome et il a révélé l'emplacement de la vidéo en raison de la plus forte consommation de réseau. Il est appelé video.mp4.

Ouverture son URL dans le navigateur renvoie une page avec le contenu suivant:

<html><body>404 File not found, no session data found</body></html> 

Pourquoi il ne trouve pas le fichier? Quel est le problème avec les données de session? Je me suis authentifié. Existe-t-il un moyen d'obtenir la vidéo et de la télécharger par programmation via son lien de téléchargement direct, en supposant que l'on puisse fournir les informations d'identification?

Répondre

1

ne sais pas si cette information est toujours utile pour vous, mais le script suivant court le tour est joué:

#!/bin/sh 
vid="$1"; 

user="youknowit"; 
pass="youknowit"; 

file="cookies.txt" 
opts="--load-cookies=$file --save-cookies=$file --keep-session-cookies"; 
prep="https://www.example.com/the-real-fsID/prepareVideo?videoID=$vid"; 

raw="$(wget $opts --user=$user --password=$pass -qO - $prep)"; 
echo $raw; 
url="$(echo $raw | grep '"url":"' | sed 's/.*"url":"\([^"]*\)".*/\1/g;s/\\//g')"; 
tag="$(echo $raw | grep '"description":"' | sed 's/.*"description":"\([^"]*\)".*/\1/g;s/\\//g')"; 
echo $url; 
wget $opts --user=$user --password=$pass -O "$tag".mp4 "$url"; 
echo "done!"; 

En fait, le seul but de les informations d'identification de serveur HTTP utilisé ici est de vous authentifier . Mais les prochaines étapes sont vraiment les plus importantes. Le site utilise des cookies de session pour garder une trace de votre demande sur la vidéo . Le "perpareVideo" -script est en fait un php-script, que - autant que je pourrais comprendre - crée un fichier temporaire sur le serveur qui est seulement présent pendant que vous êtes en train de lire la vidéo. Le fichier semble devenir invalide si le temps écoulé entre la préparation et la demande de téléchargement est trop long . Donc, deux requêtes http consécutives sont nécessaires pour "voir" le fichier vidéo réel . Je l'ai réalisé avec deux passages de l'outil wget. Le "bonus" ici, c'est que le fichier obtient même son vrai nom (tag) sur des méta-informations recueillies avec la première requête http.

La chose la plus importante est que les deux demandes appartiendront à la même session, le reste est facile;)

je pense qu'ils ont investi une bonne quantité de temps dans la construction de cette infrastructure vidéo et même plus en évitant un téléchargement des vidéos , mais la chose drôle est, la conférence est sur la "sécurité" qui couvre également "disponibilité", de sorte que les vidéos devraient être (au moins à mon avis) disponible même quand on est pas en mesure de accéder à Internet, le contenu devrait être fourni sans obstacle. Donc, comme une partie du contenu n'est disponible que sous forme de vidéos, il faut télécharger ce contenu de la même manière que avec les fichiers pdf.

Meilleurs voeux ...