好不容易,软磨硬泡地在学校14号楼住下来,要不就去睡大街了,学校的理由:只让重修的同学住14号,然后我就好不容易“重修”了。接下来就是白天博理晚上14号楼的生活。。然后就每天就只能教育网了,教育网什么最好,VOD!之前一直惦记着下载VOD上的资源,看到以前师大物电的同学有过寻找VOD真实资源的经过,天津师范大学校园网(教育网)VOD下载方法,
于是想用python搞一个。简单实现了下,输入想要下载的剧集id和集数(这个需要去网页的源码理看,上边的链接里有介绍),然后自动解释出下载链接的真实地址,
思路:
1 首先访问http://59.67.75.254/actIndex.do页面,这是资源的列表页,但是需要匿名登陆才可以看见,而为什么在这里先访问的actIndex.do页面,而不是先匿名登陆,因为我发现首先访问http://59.67.75.254/login.jsp登陆页面没有匿名访问选项,偶然发现先访问actIndex.do页面的话,在http回话中会有一个附有JesseionID的URL做为Response headers的Location返回,然后只要访问这个带JesseionID的URL,就可以实现登录的目的
2 访问上述所说的带JesseionID的URL,这个页面实际上http://59.67.75.254/login.jsp?JESSEIONID=XXX,这里简单的用一个GET请求即可
3 再次访问actIndex.do页面,这时候就真正登录进来了,可以查看资源列表文件了
4 在actIndex.do页面,选择某个想要看的视频,查看页面源文件,查看此视频对应的progid是多少,每个视频文件的progid唯一的,还有查看每个有多少集,举个例子:柯南剧场的独有的progid是3349,而 柯南剧场的有400多集,所以柯南剧场对应的volume就从1-400多这个范围移动,这个具体的含义不懂得话还可以参考上边物电的同学的链接
5 接着访问下载页面http://59.67.75.254/actDownload.do,用GET方法请求,带着上边的progid和volume信息,在http会话中发现在response headers中还有Location标志,指向下载的download.jsp页面,这时urilib2会自动访问download.jsp,然后做一个跳转,在接收回来的response body会有真实资源的地址,如
<html><head><title>下载</title><script language =”javascript” src =”./js/vod.js”></script><script language=javascript> DownLoadPath(’59.67.75.254:2880′,’/moive2/娱乐天地/动漫/116009427841.rmvb’,’3499′,’RMVB’,'名侦探柯南’);</script></head></html>
6 那么下载的话,链接就是
http://59.67.75.254:2880/moive2/娱乐天地/动漫/116009427841.rmvb ,文件名可以自己更改下
要注意的:
1 师大VOD需要登录后才能观看,这一步在代码里已经实现
2 师大VOD还检测VOD客户端安装没有,所以使用代码前一定要安装vod客户端。。当然他是用js检测的vod安装情况,要是屏蔽或者欺骗js代码就好了,可惜不会
3 貌似只支持IE内核的浏览器,我觉得可能有2个原因:(1) js利用ie的某些东西检测vod安装情况和版本 (2) 应用本身不支持。而我我在代码中用的是MSIE9的user-agent,代码也是在win7+ie9下运行的
代码丑陋,见笑:
# -*- coding=gb2312 -*-
import urllib
import urllib2
import cookielib
import re
user_agent = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)'
#注册一个cookie的opener,用来带着cookie访问url
cookie = cookielib.CookieJar()
cookie_support= urllib2.HTTPCookieProcessor(cookie)
opener = urllib2.build_opener(cookie_support)
urllib2.install_opener(opener)
headers = {'User-Agent':user_agent,"Keep-Alive":"115"}
#首先访问actIndex页面
url2 = 'http://59.67.75.254/actIndex.do'
req2 = urllib2.Request(url2,headers)
response2 = opener.open(url2)
the_page2 = response2.read()
#print the_page2
#获取SessionID,然后从第一次访问时返回的response2中截取url,也就是带sessionid的登录url
url1 = response2.geturl()
response1 = opener.open(url1) the_page1 = response1.read()
#再次访问actIndex页面,这时候就以匿名用户的身份登录喽
url3 = 'http://59.67.75.254/actIndex.do'
req3 = urllib2.Request(url3,headers)
response3 = opener.open(url3)
the_page3 = response3.read()
#print the_page3
#登录好之后进行下载的操作
url4 = 'http://59.67.75.254/actDownload.do'
values = {'volume':'1',
'progid':'3499'
} //这个即表示3499这个id的剧集中的第一集
data = urllib.urlencode(values)
req4 = urllib2.Request(url4,data,headers)
response4 = urllib2.urlopen(req4)
the_page4 = response4.read().decode('gb2312')
result = re.findall("'59.67.75.*'",the_page4)
print "http://"+str(result[0].encode('gb2312').split(',')[0]).strip("'") + str(result[0].encode('gb2312').split(',')[1]).strip("'")
//打印出vod视频链接
发表在《
发表在《
发表在《
教育网资源就是丰富的说,而且速度刚刚滴~~~
[回复]
freetstar
回复:
七月 16th, 2011 at 6:22 下午
@奶牛, 必须的,非常快,非常快
[回复]
这个vod还在啊,02年的时候我就在上面的老电影了…
[回复]
freetstar
回复:
七月 16th, 2011 at 12:35 下午
一直在了..
[回复]
决定开始学习Python,主要是看中了跨平台,连长多指教啊。
[回复]
freetstar
回复:
七月 10th, 2011 at 8:42 下午
@凡尘飞扬, i我也是菜鸟。。。
[回复]
凡尘飞扬
回复:
七月 10th, 2011 at 8:58 下午
@freetstar, 刚看了点文档,现在是找不着北了。和我学过的其他语言差异有些大…
[回复]
freetstar
回复:
七月 10th, 2011 at 9:13 下午
@凡尘飞扬, python还是很好学的,找本基础教程先系统看下吧
[回复]
知不知道哪些大学的图书馆资源外网可以下载啊?我想下点图书配套光盘。
[回复]
哇哇,难道下载
动作片也可以的说!
[回复]
freetstar
回复:
七月 5th, 2011 at 5:38 下午
@Mucid, VOD么有动作片。。
[回复]
在Windows下直接用GBK也是一种解决中文编码的方法。。。
就是有点ugly,不过编码问题真是。。。很麻烦,不知道python3有什么改进
[回复]
freetstar
回复:
七月 5th, 2011 at 4:51 下午
@9hills, 无奈。。哪一天要集中时间试验下python2里的处理编码的过程
[回复]
连长V5^^p.s. 你给的ifttt已收到^^thx
[回复]
freetstar
回复:
七月 5th, 2011 at 3:52 下午
你们都学坏了…
[回复]
有所求,然后有所行动,蛮好的,你听说过chrome os吗,可以下源码看看,里面python用的很多,谷歌钟爱阿
[回复]
freetstar
回复:
七月 5th, 2011 at 3:34 下午
@walfred, 是滴!有可能搞一个完整的script供自己玩,哈哈
chrome os.我感觉自己还达不到那个层次阿
[回复]
walfred
回复:
七月 5th, 2011 at 5:13 下午
@freetstar, 自已编译的叫chromium os。其实看穿来是gentoo的变种+谷歌的chrome浏览器,里面采用的完全是gentoo的portage管理方式。其编译脚本都基本是shell脚本加python脚本
[回复]
freetstar
回复:
七月 5th, 2011 at 5:39 下午
@walfred, 看你颇有研究啊,跑完的意思相当于浏览器做os?
[回复]
walfred
回复:
七月 5th, 2011 at 7:39 下午
@freetstar, 嗯 这就是云嘛
ps 我实习期的工作就是这个嘛 呵呵
[回复]
freetstar
回复:
七月 5th, 2011 at 8:53 下午
@walfred,额,哪家公司干这个阿
[回复]
python有魅力,我想学还没学。还有哈,你的博客没开启静态吗?地址中还带有.php字样呢?
[回复]
freetstar
回复:
七月 5th, 2011 at 1:24 下午
@林海草原, 没有….python很不错
[回复]
又是只支持IE的。大家赶快先把IE的份额夺下来
[回复]
freetstar
回复:
七月 5th, 2011 at 11:44 上午
@Tao Zhu, 恩…貌似把js搞定就可以.可惜不会
[回复]
这教育网不错,能看VOD,清晰度怎么样
[回复]
freetstar
回复:
七月 5th, 2011 at 11:13 上午
@dorole, 清晰度扛扛地!
[回复]