通过身份验证下载Flowplayer视频

时间:2015-08-30 21:00:12

标签: java video flowplayer

我的大学已在其网站上传了讲座视频。要访问它们,必须输入我显然拥有的某些凭证。他们使用简单的Apache Server。视频嵌入为Flowplayer,并且它们不提供下载它们的方法。视频页面的html来源大致如下:

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

在浏览器中打开其网址会返回包含以下内容的网页:

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

为什么找不到文件?会话数据的处理是什么?我认证了自己。有没有办法获取视频并通过其直接下载链接以编程方式下载,但假设可以提供凭据?

1 个答案:

答案 0 :(得分: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”-script 一个php脚本,据我所知 - 正在创建 服务器上的临时文件,仅在您出现时存在 播放视频。如果太多,该文件似乎变得无效 准备和下载请求之间的时间过去了。

因此,需要两个连续的http请求才能“看到”真实的 视频文件。我通过wget-tool的两次运行实现了这一点。该 这里的“奖励”是,文件甚至可以获取其真实姓名(标签) 使用第一个http请求收集的元信息。

最重要的是,这两个请求属于 在同一个会议上,其余的很容易;)

我认为他们投入了大量时间来建立这个 视频基础设施,甚至更多的避免下载 视频,但有趣的是,讲座是关于“安全” 其中还包括“可用性”,因此应该有视频 (至少在我看来),即使一个人无法做到 访问互联网,内容应无障碍提供。 因此,由于某些内容仅作为视频提供,因此 需要以尽可能相同的方式下载此内容 用pdf文件完成。

祝福......