工作小总结

分析 PPTV 视频真实播放地址全过程(Java版)

分析视频地址有什么用?有些朋友经常会问到这个问题,其实这也是思维肌肉训练的问题。我举一个宋老师讲过的例子(天气预报和投资机会之间的关系)。说加勒比海出现热带飓风,普通小白看到这个新闻就会想和自己有什么关系呢?但是经过训练的大脑就会上网查飓风的等级,在哪里着落,移动方位是怎么样的。因为他知道俄克拉荷马库欣是美国原油期货的交割地,飓风会造成原油淤积那里运不出去,结果是库存增加,原油价格下跌。你还在看新

分析视频地址有什么用?
有些朋友经常会问到这个问题,其实这也是思维肌肉训练的问题。我举一个宋老师讲过的例子(天气预报和投资机会之间的关系)。说加勒比海出现热带飓风,普通小白看到这个新闻就会想和自己有什么关系呢?但是经过训练的大脑就会上网查飓风的等级,在哪里着落,移动方位是怎么样的。因为他知道俄克拉荷马库欣是美国原油期货的交割地,飓风会造成原油淤积那里运不出去,结果是库存增加,原油价格下跌。你还在看新闻,别人的期货单子已经飞出去了。回到问题上来,分析的这些地址怎么用?经过训练的人会想自己公司的 App 有哪些视频是挂上腾讯或者其它地方的,广告多不多,视频质量如何。假如把视频上传到 PPTV 上,自己再把视频地址分析出来,再做个播放器,那么广告问题、视频质量问题、带宽问题是不是都解决了啊。有一些影音 App,基本上都是用磁链搜索 + 迅雷 Mini 库来实现边下边播,技术痛点在哪里啊?迅雷有版权限制,大多数视频播放不了,Seed 少播放起来也很卡。还有一影音 App 找第三方解析网站,问题是同样的啊,线路经常被封,域名经常变化。有的朋友说:我没上班或者我们 App 没有播放视频的需求。那你也可以学学里面用到的 url 签名技术啊,将来和别的公司做数据共享的时候你们的 url 也是要加密的啊。 还有的朋友说:我根本不喜欢技术,也不打算从事程序员,这些地址对我一点用都没有。将来你家有小孩,你可以把视频下载到 U 盘上给孩子看啊,等等......

第三方视频分析网站所存在问题

  • 被解析的视频网站(PPTV、腾讯)url 签名算法改变,普遍来看,所有第三方平台反映都很迟钝;

  • 现在各大视频网站也在封杀这种三方平台,服务经常被中断,域名经常改变,需要加群得知新域名;

  • 解析出来的地址依赖平台提供的 H5 播放器,广告一大堆,视频清晰度还不够。


项目运行效果

30b68a41282731e488492a0ca3522ca7.png游客模式下,PPTV 只提供标清、高清、超清三种格式,我感觉超清的效果就能满足观看需求了,给出播放地址(http://v.pptv.com/show/qk3vbLiahSojradE.html),输出标清、高清、超清,三种格式的分段视频地址,PPTV 视频真实的播放地址主要的获取渠道有:智能电视、电视盒子、Web 以及 App,这次我准备分析一下如何从 Web 里找出视频的真实播放地址。

常见的视频播放技术的套路
现在每行都有自己的套路,比如拍电影,只要出现武装直升机就必然会坠毁,只要出现火车那一定会出现铁路断裂的情形。视频播放也不例外,常见的有 H5 播放(一般有20分钟的限制)、P2P 播放(这个也是辅助)、ts 播放、分段播放(Flash 或 H5)等等。PPTV 就采用了分段播放+P2P辅助的方法,我们找出分段信息再反编译出 swf 签名算法,这样问题就迎刃而解了。

找出播放地址
使用带开发者模式的浏览器(火狐、谷歌都行)打开一个 PP 视频,拖动进度条,然后按响应 Body 排序,你会发现播放地址:

88545ad6a5e1e478467ec1fe3e86b9f3.png

http://42.56.93.26/16/5412864/0/59fcfcdf1e6bd26c3fa64c3c7a8a73f4.mp4?fpp.ver=1.3.0.24&key=14fb862504f61910d29de89e4981a93e&k=31a8c1459a1d7a7d5520e86da96f154b-bf57-1545129327%26bppcataid%3D38&type=web.fpp&vvid=52056dc1-d005-5d53-a186-c006bf1b3aa3

e67ccfd91f9785cae80440398c739db7.png

说明:

42.56.93.26:服务器地址
16:分段视频序号
5412864:偏移位,这个最后我们不传
0:固定值
9fcfcdf1e6bd26c3fa64c3c7a8a73f4.mp4:视频文件名
fpp.ver:播放器版本号
key:服务器返回的时间生成 16 位固定字符 + 16 位随机字符,可以不传的,这是 PPTV 迷惑我们,增加我们的破解难度
k:非常关键,需要解密
type:web.fpp(说明是 Web 访问的,App 这个值是不同的)
vv

原创不易,完成人机校验,阅读全文

相关推荐