视频网站真实下载地址解析

不贴具体代码了,解析了youku,bilibili,sohu,iqiyi每家的策略都不一样,还都挺奇妙的。

有点解密的感觉,不写代码,只指明方向

首先需要chrome和firefox。chrome看请求比较方便,也方便搜索,而firebug比较适合javascript调试,我用chrome调js不习惯。
我需要下载的是mp4地址,需要把user-agent修改成android

1,解析youku,:
网站通常会通过一个jsonp来返回下载真实地址,问题是如何获得正确的参数
分析后发现youku返回的jsonp中除了真实mp4啥都有,就是下载地址
分析发现,js中一个函数jsonbuildfun,参数设置为返回的jsonp后就能生成真是地址对象了。

我是把页面中这两个js合并改写了下,可以用nodejs直接调用,

还有个坑,生成好的下载地址很有可能用不了!!
解决方法就是需要细致的完全模拟浏览器:
发现请求jsonp的时候需要设置cookie
Cookie:’ykss=; __ysuid=;’
一开始还研究半天这俩参数怎么生成, 原来不需要, 随便写,只要有就行。
妥妥的。

难度4分吧,主要是需要运行页面js

2,解析bilibili
这个最容易,分析请求资源发现
http://www.bilibili.com/m/html5?aid=xxx&page=xx
ua都不用改

难度1分,基本就是白送的

3,sohu
不得不说sohu隐藏的最深,也最鸡贼。
通过jsonp拿到下载地址后,发现除非通过原来网站访问,否则获得的下载地址失效。
分析js画了很长时间,一个一个的过滤,开始是以为生成参数不对,或者消息头有问题。
结果发现有个pv.png,我擦,这真心不是个统计程序,
jsonp中返回消息头有个setcookie
然后在pv.png请求头中,设置这个cookie,原来的下载地址就被激活了。

难度4分吧,不需要改什么js,就是这个机制心急很重。

4,iqiyi

iqiyi是最牛的,
获取jsonp的地址有个src和sc参数
生成算法是扰码加密并且写在页面中的,搜索的话根本搜不到。
而且这个算法大量使用了浏览器参数当变量生成的条件。扰码后反正我是没看明白

如果使用nodejs运行改写以后虽然格式合法,能拿到mp4地址但是不能播。
最后只能使用htmlutil,java实现。

htmlutil也很适合解youku
加载html后就能直接通过命令获得js对象。所有数据基本就是白给了。

难度给5.5分,除非能分析扰码过的好几千行代码,否则改js算法基本没戏。
只能变通下换个工具

发表评论