前言
总所周知bilibili是没有办法直接查看弹幕的发送者的,这使得当我们看到一些nt弹幕的时候虽然生气,却无可奈何,但是B站是可以屏蔽某个用户发送的弹幕的,这说明数据接口里肯定有用户信息,由于最近在学爬虫,所以我想先找找弹幕接口,分析下里面的数据。

找接口
找接口当然是随便打开一个视频然后F12啦,可是当我找了两圈后我傻眼了,没找到啊。。得,不能把时间浪费在这种事情上,果断打开百度,不出所料,找到了如下的两个接口,都是XML格式网页

   这里面的cid是一种每个视频独有的数字,也就是每一P都有一个cid,查找cid可以打开网页然后F12,再ctrl+f搜索cid,一般八九位数的就是cid了。这里我找到了一个接口,可以通过aid找到cid

1 https://www.bilibili.com/widget/getPageList?aid=+aid

分析数据
弹幕数据是获取到了,那么我们就要从这一堆数据中分析他们的用途了

这里大概能得到两个信息,其中第6个数据为时间戳,第8个数据为用户uid的某种加密方式。经查询得到这是用户uid经过crc32校验得到的结果转为16进制数,所以只能通过uid得到对于的校验码,无法反推。。似乎只能通过彩虹表的方式查找数据了?那么这串8位16进制的数字在数据库中要用什么方式保存呢?
选择似乎有varchar和bigint,由于B站有差不多6亿个用户,在6亿个数据中查找想要的字符串那速度必然很慢(但有人经测试得到varchar型数据和bigint型数据查找速度其实差的不多?)
就在我决定用bigint储存数据时,我突然想到,8位16进制那就是2的32次方,int型的储存上限时2的31次方,如果用无符号的方式保存正好是2的32次方,也就是能储存到0xffffffff这么大的数据,正好满足要求。于是果断换成无符号int,与之对应的id也为无符号int,并将crc32b编码过后的数据作为主键,制成彩虹表存入我的服务器内。
(粗略的算了一下,6亿数据就是需要27G左右的空间…而我的服务器一共才40G的大小…)

做成网页供大家使用
接下来的操作似乎就水到渠成了,写了个python脚本,该python脚本接受2个参数,视频cid和想要搜索的弹幕关键字,返回用户发送的弹幕,用户的crc32b编码,时间戳。然后用php的exec函数执行python代码,并通过搜索数据库找出用户的uid,通过php返回json格式数据给前端。

python代码(写的很烂)
import requests
from bs4 import BeautifulSoup
import re
import io

import sys

sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding=‘utf-8’)
req = requests.get(‘https://comment.bilibili.com/’+sys.argv[1]+’.xml’)
req.encoding = req.apparent_encoding
soup = BeautifulSoup(req.text, ‘html.parser’).find_all(name=‘d’)
result = “”
for i in soup:
s = re.sub(’<(.*?)>’, ‘’, str(i))
index = 0
if(len(sys.argv[2])>0):
index = s.find(str(sys.argv[2]))
if(index!=-1):
result+=str(i).split(",")[6]+","+s+","+str(i).split(",")[4]+","
print(result)

效果展示
前端代码就是随便写的~至少功能实现了嘛


这里说一下为什么是NULL,因为我的服务器还在可怜巴巴的往数据库内写入彩虹表数据。。预计需要4天~
今天加了个暴力破解的功能,避免了查询结果为NULL,但是相对的查询速度会非常慢。 最后!附上该工具的链接:点我
欢迎来我的个人主页玩~ YB的小屋

————————————————
版权声明:本文为CSDN博主「dlpu_fan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:http://gmail.mysxl.cn/

分享-如何在b站中找到弹幕发送者是谁相关推荐

  1. 如何在bilibili中查找弹幕发送者

    文章最下面有工具链接! 前言 总所周知bilibili是没有办法直接查看弹幕的发送者的,这使得当我们看到一些nt弹幕的时候虽然生气,却无可奈何,但是B站是可以屏蔽某个用户发送的弹幕的,这说明数据接口里 ...

  2. 如何在R代码中找到一个值的行号

    如何在R代码中找到一个值的行号? 例如: 在以下一组值中,如何在第4列中找到特定值的行号? 如何使用R代码命令找到列4中的值"1578"的行号. > mydata_2sex ...

  3. B站一键查询视频/分P视频/番剧的弹幕发送者

    近几年因为B站的门槛越来越低,时常会看到一些让人眼前一亮的弹幕.直接举报拉黑这种做法显然已经太便宜了.. 网上大部分查询工具时效性已经过了或者有局限性,所以我打算自己写一款能通过视频.分P视频.番剧来 ...

  4. 怎么用python发弹幕_[python]bilibili弹幕发送者查询器软件

    简介: 一款用于查询bilibili弹幕发送者的软件,输入视频号(需要保证视频有效且有弹幕)后对弹幕池中的弹幕按照发送时间(从新到旧的顺序)进行查询.操作简单,需要联网使用. 查询结果以uid格式展示 ...

  5. 前端大牛吐血分享:如何在 Web 开发中找到第一份工作?

    对于初入门槛的开发者们来说,如何获得第一份工作至关重要.本文的作者总结了自己找工作的实战经验,希望对各位开发者们提供些帮助. 作者 | Nicole Peery 译者 | 谭开朗,责编 | 郭芮 出品 ...

  6. 如何在 Web 开发中找到第一份工作?

    对于初入门槛的开发者们来说,如何获得第一份工作至关重要.本文的作者总结了自己找工作的实战经验,希望对各位开发者们提供些帮助. 作者 | Nicole Peery 译者 | 谭开朗,责编 | 郭芮 出品 ...

  7. android 弹幕动画,实例解析如何在Android应用中实现弹幕动画效果

    在B站或者其他视频网站看视频时,常常会打开弹幕效果,边看节目边看大家的吐槽.弹幕看起来很有意思,今天我们就来实现一个简单的弹幕效果. 从直观上,弹幕效果就是在一个ViewGroup上增加一些View, ...

  8. 为什么B站中的弹幕可以不遮挡人物

    上班逛B站时摸鱼时,看到了满屏的弹幕,而且还不挡脸,突然心血来潮来看看它是怎么实现的? 不难发现弹幕其实它就是有一个蒙版层div,遮挡在视频组件的上方,z-index层级设置的比较高(这里是11),v ...

  9. C语言 输出重复序列的序号,如何在FASTA序列中找到反向重复模式?

    我是Python和生物信息学的新手,但我正在通过rosalind.info网站学习两种方法.您可以使用后缀树执行此操作.后缀树(见 http://en.wikipedia.org/wiki/Suffi ...

最新文章

  1. DS博客作业04--树大作业
  2. 朴素、Select、Poll和Epoll网络编程模型实现和分析——Epoll模型
  3. opencv(4)图像滤波
  4. PySide教程:一个简单的点击“.NET研究”按钮示例
  5. Leetcode初级算法(链表篇)
  6. YunYang1994/tensorflow-yolov3 训练自己的数据集
  7. 信息系统项目管理师-常用技术标准考点笔记
  8. Event/window.Event属性和方法
  9. 智能家居简单实现---使用ESP8266简单实现和APP通讯
  10. Python菜鸟入门:day12编程学习
  11. Linux启动过程综述(转)
  12. 江苏职称计算机考试错做题,江苏省职称计算机考试word注意点.doc
  13. matlab根据数值大小聚类,[matlab聚类分析]请教高手:用matlab做聚类分析,节点数多于30个怎么画聚类图啊?...
  14. vue+element+springboot前后端分离项目整合pageoffice实现在线编辑Word和Excel跟签章等
  15. 44个“区块链+AI”应用场景分析, 你觉得还能更全吗?
  16. 用脑子说话,用心服务
  17. 如何实现点击收藏,图标变色;再次点击,取消收藏,图标变回原来的颜色,且能把已收藏的项发送请求给后端
  18. 基于粒子群优化的MPPT控制
  19. 从X240电脑看传统企业的创新陷阱
  20. DynaTrace Ajax Edition:IE浏览器性能分析工具

热门文章

  1. ps4可以看html5吗,PS4版《GTA5》与PS5版的差距有多大?R星:这是款新游戏!
  2. OCR应用案例--商场室内导航
  3. 群集共享卷建文件服务器,定义群集共享卷
  4. 数字水印印刷防伪研究与应用现状
  5. 【代码学习】批量提取论文(pdf)的第一页
  6. Java冒泡排序详解及完整代码
  7. HashMap嵌套HashMap集合
  8. .htaccess基本设置
  9. Java BufferedReader读文件中文乱码
  10. 2021蓝桥杯第一场加油伙伴们