Python脚本如何在bilibili中查找弹幕发送者

微信扫一扫,分享到朋友圈

Python脚本如何在bilibili中查找弹幕发送者

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

找接口

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

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

这里我找到了一个接口,可以通过aid找到cid

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,但是相对的查询速度会非常慢。

最后!附上该工具的链接: 点我

总结

到此这篇关于Python脚本如何在bilibili中查找弹幕发送者的文章就介绍到这了,更多相关bilibili弹幕发送者内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间:2020-06-04

b站的弹幕,线下播放还是挺麻烦的,专用的弹幕播放器对其他格式的视频支持不好.我也试着弄个弹幕转字幕的小程序出来. 抓取xml文件的工作就不多说了,很简单的事,只要在播放页面看看源文件就能确定xml文件的地址进行抓取了. 本文主要是讲述xml内的弹幕转字幕的过程. 除去xml文件开头结尾的一些七七八八的东西,弹幕主体是这样的: <d p=”51.593,5,25,16711680,1408852480,0,7fa769b4,576008622″>怒求 up 自己配音!<

两个重要点 1.获取弹幕的url是以 .xml 结尾 2.弹幕url的所需参数在视频url响应的 javascript 中 先看代码 import requests from lxml import etree import re # 使用手机UA headers = { “User-Agent”: “Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like

先来思考一个问题,B站一个视频的弹幕最多会有多少? 比较多的会有2000条吧,这么多数据,B站肯定是不会直接把弹幕和这个视频绑在一起的. 也就是说,有一个视频地址为https://www.bilibili.com/video/av67946325,你如果直接去requests.get这个地址,里面是不会有弹幕的,回想第一篇说到的携程异步加载数据的方式,B站的弹幕也一定是先加载当前视频的界面,然后再异步填充弹幕的. 接下来我们就可以打开火狐浏览器(平常可以火狐谷歌控制台都使用,因为谷歌里面因为插件

本文实例讲述了Python爬虫爬取.解析数据操作.分享给大家供大家参考,具体如下: 爬虫 当当网 http://search.dangdang.com/?key=python&act=input&page_index=1 获取书籍相关信息 面向对象思想 利用不同解析方式和存储方式 引用相关库 import requests import re import csv import pymysql from bs4 import BeautifulSoup from lxml import e

环境: python 2.7 + win10 工具:fiddler postman 安卓模拟器 首先,打开fiddler,fiddler作为http/https 抓包神器,这里就不多介绍. 配置允许https 配置允许远程连接 也就是打开http代理 电脑ip: 192.168.1.110 然后 确保手机和电脑是在一个局域网下,可以通信.由于我这边没有安卓手机,就用了安卓模拟器代替,效果一样的. 打开手机浏览器,输入192.168.1.110:8888   也就是设置的代理地址,安装证书之后才能

前几天,杨超越编程大赛火了,大家都在报名参加,而我也是其中的一员. 在我们的项目中,我负责的是数据爬取这块,我主要是把对于杨超越 的每一条评论的相关信息. 数据格式:{“name”:评论人姓名,”comment_time”:评论时间,”comment_info”:评论内容,”comment_url”:评论人的主页} 以上就是我们需要的信息. 爬虫前的分析: 以上是杨超越的微博主页,这是我们首先需要获取到的内容. 因为我们需要等

对于一个net开发这爬虫真真的以前没有写过.这段时间开始学习python爬虫,今天周末无聊写了一段代码爬取上海租房图片,其实很简短就是利用爬虫的第三方库Requests与BeautifulSoup.python 版本:python3.6 ,IDE :pycharm.其实就几行代码,但希望没有开发基础的人也能一下子看明白,所以大神请绕行. 第三方库首先安装 我是用的pycharm所以另为的脚本安装我这就不介绍了. 如上图打开默认设置选择Project Interprecter,双击pip或者点击加

这篇文章主要介绍了Python爬虫爬取煎蛋网图片代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天,试着爬取了煎蛋网的图片. 用到的包: urllib.request os 分别使用几个函数,来控制下载的图片的页数,获取图片的网页,获取网页页数以及保存图片到本地.过程简单清晰明了 直接上源代码: import urllib.request import os def url_open(url): req = urllib.reques

本文实例讲述了Python爬虫爬取电影票房数据及图表展示操作.分享给大家供大家参考,具体如下: 爬虫电影历史票房排行榜 http://www.cbooo.cn/BoxOffice/getInland?pIndex=1&t=0 Python爬取历史电影票房纪录 解析Json数据 横向条形图展示 面向对象思想 导入相关库 import requests import re from matplotlib import pyplot as plt from matplotlib import font

本文实例讲述了Python爬虫爬取杭州24时温度并展示操作.分享给大家供大家参考,具体如下: 散点图 爬虫杭州今日24时温度 https://www.baidutianqi.com/today/58457.htm 利用正则表达式爬取杭州温度 面向对象编程 图表展示(散点图 / 折线图) 导入相关库 import requests import re from matplotlib import pyplot as plt from matplotlib import font_manager i

本文实例主要是实现爬取一个网页上的图片地址,具体如下. 读取一个网页的源代码: import urllib.request def getHtml(url): html=urllib.request.urlopen(url).read() return html print(getHtml(http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=%E5%A3%81%E7%BA%B8&ct=201326592&am

本文实例为大家分享了python爬取淘宝商品的具体代码,供大家参考,具体内容如下 import requests as req import re def getHTMLText(url): try: r = req.get(url, timeout=30) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return “” def parasePage(ilt, html): tr

爱奇艺回应“庭审曝光原告观影记录”:仅向法庭提供

上一篇

聊聊puma的DefaultDataHandler

下一篇

你也可能喜欢

Python脚本如何在bilibili中查找弹幕发送者

长按储存图像,分享给朋友