B站弹幕“匿名”?

Tweet | 查看源代码 | 评论

事前唠个叨

发布完上一个BilibiliDownload之后,微博便有很多同行关注我,然后就在我的新粉丝里发现了麦曜,简介里写着苦逼程序猿,所以必定点进去看了。

不看不知道,一看吓一跳,原来这货已经把弹幕所谓的“匿名”给破解了!不用说,第一时间拉进我们的邪教~

那么不扯这些废话了,继续往下看。

酷诶,咋做的?

让我们来用人话说明白。

每一个b站的视频都有一个独特的aid,就是我们所谓的“av号”。

一个aid下面可以有很多分p视频,那么每一个aid下面的视频,就会被赋予一个独立的ID,也就是cid。

我们只要调用View的api,就可以用aid和分p号换取对应的cid。

操作详见b站api

然后弹幕的XML文件就可以拿到了,在http://comment.bilibili.com/{cid}.xml。但是我们不能拿到历史弹幕。

比如其中的一行弹幕长这个样子:

<d p="12.456999778748,1,25,16777215,1444811244,0,550e9706,1278188533">第二</d>

用中文说就是:

<d p="时间,模式,字体大小,颜色,时间戳,弹幕池,用户ID的CRC32b加密,弹幕ID">内容</d>

我们可以直接暴力破解这些CRC32b加密过的原内容;或者,我们的方法是生成一个从0-50000000的加密彩虹表并存到数据库内,这样将可以奇迹般地提高访问速度和服务器压力。

用户ID叫做mid。

那么用户的空间就是 http://space.bilibili.com/{mid}

瞬 间 爆 炸

Go 示例源码如下:

等待更新……

用法

大家可以在这里下载到 Python 版源码,按照如下方式使用:

~ $ python3 danmakuDecrypt.py http://www.bilibili.com/video/av12450 23333

或者直接去 gitTLO 上找到 js 和 Python 的源码。


什么?上面的看不懂?那就直接拿来用吧!

点击导航栏的匿名弹幕解密器即可~