搞定了河工大VOD点播
今天经过努力终于搞定了河工大的视频VOD点播。一句一句分析源代码啊T_T
首先分析点播页面(图片稍后配上),发现有“在线播放”和“节目下载”,另原来有个专用下载器,说明是可以下载的。
分析网址vod.hebut.edu.cn,得到IP地址和端口,但是直接登录失败,说明http、ftp方式不可能。
随便打开一个电影,在专用播放器中查看文件信息,得到“XMMS://ADDR=202.113.112.139:1680;FILE=/vod_lib/连续剧/中国/精武门01-02.rmvb;UID=anonymity;PWD=vod;PN=精武门 第1集;PID=197;”这么一大串,直接用迅雷下载,失败;想用NetTransport下载,没down下这个下载工具(现在这个软件成了收费的,鄙视一下)。
在www.hgbbs.com上得到启示——分析源代码。播放页面源代码如下:
<a href="#P1" onMouseOut="SwapImgObjSrc('playbtn1','images/Normal.gif');return true;" onMouseOver="SwapImgObjSrc('playbtn1','images/over.gif');return true;" onClick=" javascript:TruevodPlayExID('202.113.112.139:1680','/vod_lib1/电影频道/动作片/谍影重重3(DVD转RMVB_中文字幕).rmvb','谍影重重3',1566);return false;"><img border="0" name="playbtn1" src="images/Normal.gif" alt="第一个播放地址>
简单分析一下,看出是用了一个Javascript函数,在onClick动作下执行。现在问题在于:1.这个JS文件是哪个(肯定不是点播页面地址栏显示的那个)?2.这个TruevodPlayExID是播放的函数,哪个是下载的函数?
后来一个一个试,知道了NullPlay是下载的函数。剩下的工作就好说了,用javascript:打头,把TruevodPlayExID换成NullPlay就OK了。
这是一个文件的页面,那么多个文件的页面应该怎么办呢?当时走了一个弯路,我把注意力盯在分析option语句上,没注意NullPlay的参数。一共四个参数:NullPlay(IP:Port,Path,FileName,FileExtendName)其实我已经知道了IP地址和端口,需要的只是路径,这在option语句中已经给出;至于文件名和扩展名自己编就可以,没有硬性要求。
这样就能打开下载页面,在地址栏输入javascript来下载了。这是第一阶段。
---------------------------------------
第二阶段嘛,原理已经搞明白了,自然是向着省事的方向前进。目前,不用编程所能实现的最省事的方法就是本地提交地址(用鼠标点超链接,而不像原来那样必须打开播放页面然后再地址栏输入地址)。
问题的关键在于怎样本地调用那个Trueplay.js中的函数。我试过http://xxx/trueplay.js:NullPlay语句,失败了。看来这个JS真不是可以远端调用的,必须在网页中。我突发奇想,把整个播放页面保存,发现竟然将Trueplay.js也保存了下来(现在知道了,播放页面肯定有调用Trueplay.js的语句,保存整个页面肯定保存了js文件,关键语句是<script language ="javascript" src ="jslib/truevod.js"></script>)。本地打开保存的网页,用NullPlay函数下载即可。
现在问题就好解决了。保存的网页中有所需文件的真实地址,有服务器IP,剩下两个参数就好说了。再把把truevod.js的内容复制到保存的网页中,可以用<a herf="javascript:NullPlay('IP','Add','FN','EN')">'Add','FN','EN'</a> (注意NullPlay首字母必须大写,单、双引号有区别)这种看上去很BT,但是用Excel很好操作的方式制成一个网页。见下图
这样依次点链接就能下载。这样做的好处有二:一是通吃,它的所有信息完全来自服务器提供,什么条件都能下载;二是可以自行设定文件名,便于管理。缺点是显而易见的:操作繁琐,效率低下(必须一个一个点开链接,不能批量下载)。
当然,这两个缺点都可用VB编个小程序轻松解决。但是难者不会、会者不难,我是没那本事——更没有时间来慢慢研究VB了。再者在河工大满打满算待不了3个月了,也没了心气。
9日又找到那个“VOD下载器”了,它用影片ID就能下载,估计和我的上述思路很不一样。我是从网页分析,利用了TruePlayer,这位高手估计是直接对TruePlayer下手了。
好了,一篇博客写了八百年,现在总算有个交待了。前文中埋下的“伏笔”就不交待了。诸位看客见谅。