2015-08-30 2 views
0

Мой университет загрузил лекционные видеоролики на своем веб-сайте. Для доступа к ним необходимо ввести определенные учетные данные, которые я, очевидно, имею. Они используют простой Apache Server. Видео встраиваются как Flowplayer, и они не предоставляют средства для их загрузки. html источника видео страницы примерно следующее:Загрузка видеороликов Flowplayer с аутентификацией

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

Я попытался наблюдать вкладку сети в инструментах разработчика Chrome и он показал расположение видео в связи с высоким потреблением сети. Он называется video.mp4.

Открытие его URL в браузере возвращает страницу со следующим содержимым:

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

Почему не найти файл? Какова сделка с данными сеанса? Я аутентифицировал себя. Есть ли способ получить видео и загрузить его программно через прямую ссылку на скачивание, хотя предполагается, что можно предоставить учетные данные?

ответ

1

не уверен, что если эта информация еще полезна для Вас, но следующий короткий скрипт делает трюк:

#!/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!"; 

На самом деле, единственная цель учетных данных HTTP-сервера используется здесь является для аутентификации , Но следующие шаги - действительно важные . На сайте используются сеансы cookie для отслеживания вашего запроса на видео. «PerpareVideo» -скрипт - это фактически php-скрипт, который, насколько я мог понять, создает временный файл на сервере, который присутствует только в то время, когда вы играете . Файл кажется недействительным, если между подготовкой и запросом загрузки проходит слишком много времени .

Так что два последовательных http-запроса необходимы, чтобы «увидеть» реальный видеофайл . Я понял это с помощью двух прогонов wget-инструмента. «бонус» здесь состоит в том, что файл даже получает свое реальное имя (тег) вне метаинформации, собранной с помощью первого http-запроса.

Самое главное, что эти две просьбы должны принадлежать к той же сессии, остальное легко;)

Я думаю, что они вложили хорошее количество времени в создании этой видео инфраструктуры и даже более того, во избежание загрузки видеороликов , но самое интересное, лекция посвящена «безопасности» , которая также охватывает «доступность», поэтому видео должно быть (по крайней мере, на мой взгляд) доступно, даже если вы не в состоянии доступа в Интернет, контент должен быть предоставлен без барьеров. Итак, поскольку часть контента доступна только как видео, - это необходимость скачать это содержимое так же, как оно может быть сделано с pdf-файлами.

С наилучшими пожеланиями ...

Смежные вопросы