如题,在 B 站 DD 的时候主播都用弹幕机,把弹幕转成文字放在 obs 里,弹幕机是怎么获取到直播弹幕的呢?
按最基础的爬虫来讲,每一次爬取都是一次独立的请求和返回,似乎并不适合用快速重复请求来实现这种需求,能不能请求到另说,之后还要再做排序,除杂什么的怎么看也不太合适。
按照弹幕机的表现来看最适合的是 ws,也就是如果通过某种方式爬虫能接管浏览器的 ws 的话,每次有弹幕刷新,都会作为一种事件被推送给后端,这样就很舒服。
1
ysc3839 2020-10-27 10:57:36 +08:00 via Android
你这问的好像不是直播弹幕程序是怎么实现的,而是弹幕系统的接口。
没记错的话,大多数直播网站的弹幕都是用 WebSocket 的。 |
2
woodie1994 2020-10-27 10:58:58 +08:00
像斗鱼这些好像有提供 api 获取弹幕的
|
3
starzh 2020-10-27 11:04:14 +08:00
|
4
locoz 2020-10-27 11:12:02 +08:00 via Android 1
爬虫并不仅限于“每一次爬取都是一次独立的请求和返回”,实际上爬虫是使用与别人客户端同样的通信协议去进行通信,所以不管是 HTTP 、WS 还是纯粹基于 TCP 、UDP 搞的自定义协议,爬虫都可以进行“爬取”这个操作…本质上来讲爬虫只是个特殊的客户端而已。
然后是弹幕,弹幕一般分两种做法,一种是基于 TCP ( B 站以前是)、一种是基于 WS ( B 站现在是),都是依靠服务端推送的,爬虫(弹幕机)只需要同样模拟发送请求、建立连接,然后正常获取到弹幕并按照特定方式解析就行了(一般会做压缩)。 当然 HTTP 也不是不能获取到弹幕,像 B 站的直播间在打开时是会加载一下最近十几条弹幕的,那个就是走的 HTTP 。 |
5
glaucus 2020-10-27 11:13:56 +08:00
斗鱼是有开放弹幕接口的,估计 B 站也有吧
|
6
locoz 2020-10-27 11:14:07 +08:00 via Android
说白了,怎么实现得要看平台方的后端怎么实现,别人用啥爬虫就用啥。
|
7
MagnifierSun 2020-10-27 11:57:14 +08:00
不是爬虫,而是你也用 ws 客户端去连接 B 站的 ws 服务端,然后校验 token 啥的,最后建立连接就能持续不断收到弹幕了
|
8
lc1450 2020-10-27 23:07:43 +08:00 via Android
整个 websocket 客户端 gayhub 一搜就有现成的
|