登录   注册

B站视频解析套路

思路研究 xlch 1年前 (2017-03-19) 2981次浏览 2个评论 扫描二维码

可能由于为了加大版权保护力度,B站最近频繁更新视频解析协议。

好的,现在说一下近三天的研究成果:

 

B站的flash播放器解析地址为

https://interface.<a href="http://xlch.me/tag/bilibili" title="查看更多关于bilibili的文章">bilibili</a>.com/playurl?cid=15198665&player=1&quality=3&sign=4813bc613d8cf780be68fba66ace8ac6&ts=1489910308

cid就是视频文件的一个id值,player=1表示这个是flash播放器,ts是时间戳,otype可以为json或xml,quality为清晰度,sign是签名

先着重说一下sign

这个就是前面的那些值合并后加密形成的,必填,错误则

{"code":-5003,"result":"checksum error"}

嗯就是这样。

sign的算法:

<?php
function get_sign($params, $key){
    $_data = array();
    ksort($params);
    reset($params);
    foreach ($params as $k => $v) {
        $_data[] = $k . '=' . rawurlencode($v);
    }
    $_sign = implode('&', $_data);
    return array('sign' => strtolower(md5($_sign . $key)), 'params' => $_sign);
}

大概就是将所有的参数排序后合并,然后与“密钥”md5加密,就出来了sign。

密钥由反编译播放器提出。

目前的情况是:

不管解析出来的地址是mp4、hdmp4还是flv,均会限速,大概在视频文件大小的四分之一处限速到10KB/s

但是不知为什么,使用b站的flash播放器就不会这样。

怀疑的套路:后台访问了一个特殊的url,然后就把带宽放开了。

 

那么再说说HTML5播放器。

H5播放器的解析地址:

https://interface.<a href="http://xlch.me/tag/bilibili" title="查看更多关于bilibili的文章">bilibili</a>.com/playurl?cid=15198665&appkey=84956560bc028eb7&otype=json&type=&quality=3&sign=187800468e0a59ffd9e1ec843ec1eb28

一眼望去和flash的没什么区别,但是注意这里多了个appkey

flash播放器的player=1相当于填写了一个默认的appkey。

当然,这里的密钥也不一样了,使用flash播放器的密钥肯定是不行的了。

目前h5播放器的测试结果是:

解析出来的地址没有任何的限速。

所以唯一可行的方法只有使用H5播放器的解析地址。

 

但是目前来讲,h5播放器的js源码充满了套路,使用多种混淆,几乎无法阅读,更不用说拿“密钥”了。

有兴趣的可以去看看:http://static.hdslb.com/player/js/bilibiliPlayer.min.js?v=baff6b13

 

所以说,目前B站的视频无法正常的“盗链”


绚丽彩虹 , 版权所有丨如未注明 , 均为原创丨未经允许,禁止转载
喜欢 (1)
[pay3@xlch8.cn]
分享 (0)

您必须 登录 才能发表评论!

(2)个小伙伴在吐槽
  1. 我盗过,引用到自己的博客,但是过一天左右视频就会显示不存在,不过的确没有限速的问题,而且手机版播放时,审查元素可以直接看到mp4地址
    2017-03-24 23:54 Linux | Chrome 53.0.2785.49
    • xlch
      我是直接<video src="解析出来的视频地址">这样的,估计和我的方法不一样吧
      xlch2017-03-26 11:17 Windows 10 | Chrome 56.0.2924.87