工具:Chrome浏览器
反查用户分为视频里现存的弹幕反查和历史弹幕反查。其中反查历史弹幕需要用Chrome的调试工具,需要懂一点前端,比较简单,仍然是非技术向的一个小记。
从视频里现存的弹幕反查用户
能有工具用就用。以下两个工具都能实现从视频里现存的弹幕反查用户。
- Bilibili弹幕发送查询
- Chrome扩展Bilibili Helper
从历史弹幕里反查
了解原理需要知道前端的基础。原理在这篇文章里说得很清楚了,一定要看。(目前文章已失效,请继续往下看)
问题是在于历史弹幕文件的获取。2018年历史弹幕的API有变动,需要用户已经登录了才能获取(会验证cookie),因此之前网上的工具箱都没法用了。这里说一下使用Chrome的开发者工具获取历史弹幕并反查用户的方式。
首先,Chrome需要登录过bilibili,这样才能有cookie。
然后打开一个视频,这里用av29242495为例。
开启Chrome的开发者工具,并选择network选项卡,刷新一下,大概是这样。
在上图的bilibili界面中选"查看历史弹幕",选则一个日期(我选的8月14日)。然后在右侧的Filter中填入history,结果是这样
其中以history开头的文件就是我们所需要的历史弹幕文件,双击就可以在新标签页中打开。这个例子中的历史弹幕文件地址长这样:
https://api.bilibili.com/x/v2/dm/history?type=1&oid=50775916&date=2018-08-13
可以见这个历史弹幕的api就长这样,oid是视频的编号(不是av号),后面加个date。type=1目前我没弄清楚是什么。
弹幕文件里的弹幕都是这个样子的
<d p="弹幕出现时间,模式,字体大小,颜色,发送时间戳,弹幕池,用户Hash,数据库ID">123123</d>
<!--比如-->
<d p="10.15700,1,25,16777215,1534175832,0,39d120,3687662110113792">卧槽番外</d>
<d p="19.93100,1,25,16777215,1534175761,0,6acc8733,3687624958541824">台词太强了,节奏太好了</d>
<d p="24.98000,1,25,16777215,1534175677,0,f11c8b72,3687580849668100">来啦 给大大比心</d>
其中要用的是用户Hash。用户Hash只是简单的把数字ID用ITU I.363.5 (CRC32) 算法进行了Hash。不过这里不用手动写算法了,因为下面的接口还能用(目前已失效)。
https://biliquery.typcn.com/api/user/hash/[用户Hash]
(上述站点相关代码位于github,感兴趣的可以自己部署。我自己用golang实现了暴力查询版。尽管实现部分很简单,但也需要编程相关知识。鉴于本文定位上不准备涉及代码,不详述)
比如我从文件里任意选了两个用户Hash,替换掉上面的[用户Hash],分别返回了如下结果
{"error":0,"data":[{"id":17882889}]}
{"error":0,"data":[{"id":390105526},{"id":21670130}]}
用户ID(uid)为后者。然后要注意的是,上述的第二条出现了两个id,因为这两个id经过hash后是同一个编码。目前是怎么处理此类hash冲突的不清楚,上述例子中似乎直接将前者390105526(后注册的号)设置为0级僵尸号,有真正用户的uid为数字较小(先注册)的号,但是否所有冲突都是如此处理有待验证。好在B站的用户数量还没有多到出现很多冲突的地步。
然后用B站的个人主页网址格式就能找到了弹幕发送者的主页了。格式如下
https://space.bilibili.com/uid/#/
相关资料: