搜档网
当前位置:搜档网 › 土豆视频网视频真实下载地址解析手记

土豆视频网视频真实下载地址解析手记

土豆视频网视频真实下载地址解析手记

作者:周常欣2011-7-29

QQ:13212193 联系方式:137********

2011年六月完成PHP版“视频网视频真实下载地址解析程序”,如图1。七月,发现我乐视频网和土豆视频网不能用了。优酷视频网,酷6视频网,六间房视频网依旧支持。

https://www.sodocs.net/doc/bd12711668.html,/baike/flv/index.php大家有兴趣可在这试着玩玩,不过我乐视频网和土豆视频网我没有修改,因为我的shell(php网马)被查杀了,无法上传。

图1视频网视频真实下载地址解析程序

于是我开始看看到底是咋回事,原来,我乐视频网视频下载地址换了计算方法。我测试了一下,这问题不大,于是重新得到了FLV视频真实下地址的规则。再次成功实现我乐视频网视频解析。下面切题重点讲解土豆视频网的解析。

先打开视频播放页面,以https://www.sodocs.net/doc/bd12711668.html,/programs/view/rxvc8-Vx6eM/为例,如图2。

图2 示例的视频播放页面视频标题为“老挝歌曲”

观看完这段视频在IE缓存(不知道IE缓存在哪的网上搜下,在这不赘述) 里我找到一个可疑的XML文件,见图3。又找到一个FLV文件,见图4。

图3 v.xml 图4 FLV文件将FLV文件和XML文件拷贝到其它盘符,因为在IE缓存里无法打开文件。用暴风影音打开FLV文件,正如我所预料的,这就是刚刚观看的那段FLV视频文件。为什么它出现在这里呢?IE浏览器能看到的网页内容,几乎都会加载在缓存里,这就是我来这找一些敏感信息的原因。已经验证了些FLV文件就是我们观看的视频文件而非广告文件,那么我们再在缓存里找到它,右击,从弹出的快捷菜单里选择属性,属性对话框里含有此FLV文件的真实地址。如图5

图5 查看属性可得URL

这样我们就得到了FLV视频文件的真实下载地址,

http://123.129.241.7/www_flv/flv/047/709/637/47709637.f04be46fe94b557 9ddaa68484639527dbc877b2b_238_6.flv?11000&key=03f44d70cf46c327932237 4e32703784f29a21&playtype=1&tk=154292102788925645350854916&brt=1&bc= 10&id=tudou&itemid=26406597&fi=47709637&sz=8089182&posky=tioF7v6OMoj lqAeplEZZ165qgcosa&plybgn=1,可这是手动得到的,我们要通过视频播放页的地址,一步一步得到FLV视频文件的真实下载地址才是最终目的。

下面我们看XML文件,

s1="f04be46fe94b5579ddaa68484639527dbc877b2b" bc="10"

brt="1">http://123.129.241.7/www_flv/flv/047/709/637/47709637.f04be46fe94b5579ddaa6848463952 7dbc877b2b_238_6.flv?key=c19bbc5221c898a20ecab04e327c6084f29a21&playtype=1&tk=147806 941315744717760244972&brt=1&bc=10&id=tudou&itemid=26406597&fi=47709637&a mp;sz=8089182

brt="1">http://115.238.133.10/www_flv/flv/047/709/637/47709637.f04be46fe94b5579ddaa684846395 27dbc877b2b_238_6.flv?key=c19bbc5221c898a20ecab04e327c6084f29a21&playtype=1&tk=14780 6941315744717760244972&brt=1&bc=10&id=tudou&itemid=26406597&fi=47709637& amp;sz=8089182

通过和上面已得到的FLV视频真实下载地址对比,发现大体一致,试着

http://115.238.133.10/www_flv/flv/047/709/637/47709637.f04be46fe94b5579ddaa68484639527dbc877 b2b_238_6.flv?key=c19bbc5221c898a20ecab04e327c6084f29a21&playtype=1&tk=1478069413157 44717760244972&brt=1&bc=10&id=tudou&itemid=26406597&fi=47709637&sz=8 089182用这样的形式下载,不行。再仔细一看,&在HTML就是&的意思,一般多个变量的连接都是用&符,于是我用str_replace语句将&换为&.再尝试下载(尽管这和缓存得到的下载地址URL不完全一致).尝试成功!

这告诉我们土豆网FLV视频的真实下载地址是藏在XML文件里的.我们如何得到这个XML呢,它与视频播放页面的URL又是什么关系呢?URL是加密过的,只能查看视频播放页,看能不能找到解密函数或其它敏感信息。

这又得到IE缓存去寻找这个秘密(通常高手喜欢用抓包的方法,我一般都从这得到了敏感信息,还没有抓过包)。还是右击XML文件,再从快捷菜单选属性,得到XML文件的URL:

https://www.sodocs.net/doc/bd12711668.html,/v?st=1%2C2&it=47709637&pw=&si=11000&ui=0&refur l=http%3A%2F%2Fwww%2Etudou%2Ecom%2Fprograms%2Fview%2Fdg7cZgyLDjE%2F&n oCache=82275&vn=02&hd=1

通过观察,我初步猜测it=47709637是视频的ID;

refurl=http%3A%2F%2Fwww%2Etudou%2Ecom%2Fprograms%2Fview%2Fdg7cZgyLDjE 则可肯定是视频播放页的URL。

查看视频播放页面的HTML代码,BODY段开头就是:

var pageId = 1

,isPlayPage = true

,iid = 47709637

,iid_code = icode = 'dg7cZgyLDjE'

,oid = 49571750

,cid = 14

,theme = 'black'

,time = '03:51'

这些信息非常可疑,iid = 47709637这证实了我的猜测,就是视频的ID。

此时,我们已得到XML文件参数的一些信息了,虽不全,我还是想大但尝试下,(像前面XML里的URL,虽和缓存得到的不完全一致,但实践证明就是下载地址)。

于是我换了别的视频,按这个规则,拼成XML的URL,复制到IE地址栏,尝试着访问,这个请求成立了,得到一XML文件,我还是像之前那样,将XML文件里URL的&换为&,再将URL复制到IE地址栏,下载得到FLV视频文件。

此时,FLV视频真实下载地址获得的方法我已经找到,有了思路就好编程实现了。

采用SNOOPY库(php的一个类库)提供的接口来实现网页源代码的抓取。

成功得到了URL,可是下载不了。我检查了一遍,似乎代码都很正常。手工方法按我的思路都可行,就是用我的程序就不能下载。

问题在哪了,忽然我想起以前也遇到过这样的问题,还好以前的思维比较开阔,我自信我的思路是正确的,再想到为何XML里的视频下载地址在不停地变,又联想到验证码的机制,大胆设想到有可能是因为我第一回用我的程序读取视频播放页面,XML文件已经生成一次,第一回是为了得到视频ID,以拼凑出XML文件的URL,第二次访问URL,这时视频地址已经再次更新了,我得到的是前一次的,所以无法下载。类似于:我填验证码后,又点了“看不清,刷新了验证码”。所以导致验证通不过,失败告终。

想到这,我改进了第二次访问XML文件的方法,采用PHP的CURL函数库(Client URL Library Function),网上一搜的到处有curl_get_contents()的函数,原理也差不多,可以采用。

再次得到视频的下载地址,尝试下载,成功!

后记:

虽然程序已经做出,但还是有不少不明白的地方。如有错误,请帮忙斧正;如有朋友对此文感兴趣,可以和我交流,谢谢!

相关主题