B站从弹幕反查用户小记

工具:Chrome浏览器

反查用户分为视频里现存的弹幕反查和历史弹幕反查。其中反查历史弹幕需要用Chrome的调试工具,需要懂一点前端,比较简单,仍然是非技术向的一个小记。

从视频里现存的弹幕反查用户

能有工具用就用。以下两个工具都能实现从视频里现存的弹幕反查用户。

  • Bilibili弹幕发送查询
  • Chrome扩展Bilibili Helper

从历史弹幕里反查

了解原理需要知道前端的基础。原理在这篇文章里说得很清楚了,一定要看。(目前文章已失效,请继续往下看)

问题是在于历史弹幕文件的获取。2018年历史弹幕的API有变动,需要用户已经登录了才能获取(会验证cookie),因此之前网上的工具箱都没法用了。这里说一下使用Chrome的开发者工具获取历史弹幕并反查用户的方式。

首先,Chrome需要登录过bilibili,这样才能有cookie。

然后打开一个视频,这里用av29242495为例。

开启Chrome的开发者工具,并选择network选项卡,刷新一下,大概是这样。

Chrome.png

在上图的bilibili界面中选"查看历史弹幕",选则一个日期(我选的8月14日)。然后在右侧的Filter中填入history,结果是这样

HistoryDanma.png

其中以history开头的文件就是我们所需要的历史弹幕文件,双击就可以在新标签页中打开。这个例子中的历史弹幕文件地址长这样:

https://api.bilibili.com/x/v2/dm/history?type=1&oid=50775916&date=2018-08-13

可以见这个历史弹幕的api就长这样,oid是视频的编号(不是av号),后面加个date。type=1目前我没弄清楚是什么。

弹幕文件里的弹幕都是这个样子的

123123

卧槽番外
台词太强了,节奏太好了
来啦 给大大比心

其中要用的是用户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/#/

相关资料:

  • 用crc彩虹表反向B站弹幕“匿名”?我不想浪费内存,但是要和彩虹表一样快!
  • js版crc32查询

你可能感兴趣的:(B站从弹幕反查用户小记)