关于某***音弹幕解析,看这一篇就够了

写在前面:
当你看到这篇文章时,你应该是在寻找相关的方案,我会在本文章详细阐述几种方法,当然包含有开源的方法。

本文仅用于学习、研究及技术探讨,请大家不要用来从事违法犯罪的事情!!!

常见的弹幕解析方法

网页解析(只能是自己玩玩,不能实际用于项目中)
协议解析(大部分项目都使用的此类解析)
接口解析(需要主播授权)

先给一个开源的方法

这个是基于Python实现的,项目中可以部署在Python管理器中
github:https://github.com/freeloop4032/douyin-live?tab=readme-ov-file

实现思路:协议之地址获取

协议解析主要就是获取wss的地址,先来看一下协议地址的组成
在这里插入图片描述
这是完整的websocket地址,它需要2个重要的参数,参数1是房间的ID,这个ID并不是我们看到的浏览器中的那个ID,还一个参数是signature,这个是通过算法计算得到的。还一个是ua,这个要固定一个,不光要计算签名还要拼接地址。请先通过开发者平台获取相应的权限以后再进行开发。
1、获取room_id

  • 如果是分享获取到的直播间地址,直接通过分享链接的重定向链接就可以获取到
  • 如果是通过web获取到的直播间地址,需要进行解析。
    • 1.先获取一个ttid,通过接口获取,返回值在set-cookie中。这个接口是post请求,需要传一部分data数据,大家可以打开个直播间,调试一下看看。
    • 2.获取房间信息,通过接口获取,返回的json格式,room_id在[‘data’][‘data’][0][‘id_str’]这个对象里面。这个json返回了很多有用的信息,大家可以根据需求去保存相关的信息。

2、获取签名参数signature

  • 这个签名是一个具体的算法,可以通过补环境的方式获得,相关的获取方法大家可以通过相关文档自己研究一下。
  • 算法要用到上面的room_id
  • 算法要用到一个ua,这个ua跟生成的wss连接的ua要保持一致

实现思路:协议之弹幕解析

这里主要就是proto文件的制作及解析,从而将加密数据进行解密,proto的文件大家一搜一大把,具体的可以自行搜索一下。目前作者已经完成了使用uniapp在APP中直接进行解码,不需要依赖服务器进行解析,大大节省了服务器的资源。核心代码如下(看我的注释,这是专门为你们增加的):

uni.onSocketMessage((res) => {
	const msg = new Uint8Array(res.data);
	const frame = new PushFrame(msg);
	var res = gzip.unzip(frame.payload);
	const response = new Response(new Uint8Array(res))
	if (response.needAck) {
		this.ack(frame, response.internalExt)//这一步相当于心跳
	}
	//response.messagesList是解析到的消息列表
	response.messagesList.forEach(item=>{
		//继续解析item即可
	})
})

实现思路:接口之评论获取

偶然的机会,作者发现了一个很神奇的接口,然后通过这个接口发现了一系列神奇的作用
事情是这样的,我们开发的项目主要用于团购的直播间辅助直播,所以针对团购的监控平台进行了分析,又参考了开放平台的开发文档,从而获取到一部分相关的数据,分析期间发现了直播间的评论有现成的接口,而且能获取到直播间的信息及数据,所以就仔细研究了这部分接口,比较神奇的是这些接口适用于所有直播间。
第一步:扫码授权某***音本地直播专业版
第二步:分析数据就会获取到大部分接口了
第三步:是不是很神奇
第四步:假如这块不会的话,可以关注我,看我后续的文章

下面是一个小小的提示

定制开发无人直播项目
欢迎大家关注我私信交流

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值