【抖音直播间弹幕】protobuf协议分析



将Uint8Array变成 PushFrame格式,里面的payload就存放着弹幕消息

点进去就可以看到其定义的proto结构



headers是一个自定义类型


将测试数据保存一下,等下做对比

先将PushFrame的 payload 内容进行gzip解压

然后再解析为响应

可以看到里面有对应的消息类型和数据
对应好解析就可以了
# 原始数据
original_message = [8,20,16,239,205,165,211,157,198,241,206,102,24,184,69,32,8,42,21,10,13,99,111,109,112,114,101,115,115,95,116,121,112,101,18,4,103,122,105,112,42,111,10,15,105,109,45,105,110,116,101,114,110,97,108,95,101,120,116,18,92,105,110,116,101,114,110,97,108,95,115,114,99,58,112,117,115,104,115,101,114,118,101,114,124,102,105,114,115,116,95,114,101,113,95,109,115,58,49,55,51,49,51,50,48,52,49,54,55,50,51,124,119,115,115,95,109,115,103,95,116,121,112,101,58,114,124,119,114,100,115,95,118,58,55,52,51,53,57,54,52,53,56,55,48,57,49,57,53,52,55,55,54,42,58,10,9,105,109,45,99,117,114,115,111,114,18,45,116,45,49,55,51,49,51,50,48,52,50,53,56,51,49,95,114,45,55,52,51,53,57,54,52,54,48,52,50,55,49,56,51,56,55,50,48,95,100,45,49,95,117,45,49,42,23,10,6,105,109,45,110,111,119,18,13,49,55,51,49,51,50,48,52,50,53,56,51,49,42,25,10,14,105,109,45,108,105,118,101,95,99,117,114,115,111,114,18,7,100,45,49,95,117,45,49,50,2,112,98,58,3,109,115,103,66,240,10,31,139,8,0,0,0,0,0,0,255,236,90,77,108,19,71,27,102,188,86,178,204,23,17,127,75,69,23,168,42,43,81,47,145,156,236,159,189,107,159,130,77,2,36,4,210,56,1,194,161,163,93,123,236,44,177,215,203,238,218,198,252,169,84,42,144,210,74,17,135,22,168,64,52,165,66,74,69,69,83,85,74,77,213,34,164,74,128,84,113,41,82,127,232,161,146,137,83,46,149,80,91,169,151,170,74,226,88,13,49,4,163,164,45,100,199,199,153,121,222,153,119,159,121,230,125,52,134,63,174,135,207,237,196,74,68,54,173,46,156,84,176,209,133,77,83,142,99,42,191,30,222,92,89,185,207,117,225,254,231,195,199,190,254,253,84,156,190,248,246,177,47,38,134,126,59,21,103,64,240,205,149,240,121,85,203,200,9,53,138,6,113,14,233,9,57,130,7,82,137,40,54,168,250,3,76,32,109,98,227,144,123,226,236,7,133,252,209,117,171,224,202,70,69,138,77,55,247,48,209,112,139,36,255,71,213,193,218,70,41,212,38,182,183,187,135,137,81,112,133,132,227,36,121,172,80,179,174,102,226,157,243,77,77,77,29,55,0,220,62,96,89,186,25,104,105,209,121,79,118,102,113,205,209,84,58,167,106,186,26,105,142,164,146,45,106,50,222,82,234,105,49,147,114,34,129,54,226,216,134,140,108,201,70,179,174,197,15,91,122,34,227,73,41,123,154,213,164,28,199,176,187,12,200,178,139,130,72,173,127,196,216,166,218,198,13,188,24,18,67,163,224,48,220,93,93,104,13,103,209,84,18,81,220,144,163,24,37,112,6,39,80,134,69,82,133,69,208,46,183,155,1,193,117,52,217,176,102,242,173,247,39,71,135,138,151,134,138,249,139,82,49,127,241,238,137,19,197,15,207,143,129,255,147,71,104,215,29,192,17,28,199,4,156,60,35,242,121,112,29,48,228,25,160,44,253,210,70,192,43,112,71,85,223,82,206,226,36,70,186,156,43,5,225,246,33,47,242,87,10,80,231,174,99,192,53,0,33,217,80,3,157,228,10,106,197,101,130,184,71,252,203,9,31,118,130,17,103,137,201,55,157,155,186,194,66,118,235,158,109,92,103,71,16,169,59,185,110,83,205,164,123,197,109,57,37,230,239,219,191,37,149,238,231,213,173,162,174,248,80,71,79,103,71,38,228,243,197,248,29,219,19,86,135,222,199,191,108,118,120,148,93,41,126,119,95,36,114,223,121,194,1,95,119,144,53,212,171,142,165,220,31,236,175,234,99,85,3,77,189,244,88,179,22,206,48,5,106,70,90,107,216,233,182,25,116,131,93,195,215,29,199,1,113,21,156,166,168,249,74,178,232,7,127,209,181,105,33,37,105,11,134,218,66,109,182,146,216,74,98,43,201,210,41,9,253,137,167,27,156,4,255,76,121,243,244,139,210,70,223,212,207,22,37,91,148,108,81,90,58,81,58,3,156,110,174,213,49,6,86,195,85,88,179,176,129,44,85,71,86,78,199,20,96,232,178,65,131,63,113,144,42,121,184,173,234,32,158,117,119,87,57,56,185,182,82,143,235,203,143,46,92,126,99,158,183,27,91,251,112,241,91,93,22,191,3,108,192,180,12,85,139,31,154,39,128,223,209,243,5,240,43,26,94,163,103,4,176,120,246,189,103,198,223,181,5,219,216,169,170,108,241,8,43,46,29,97,43,65,47,76,88,113,14,97,107,231,18,86,44,19,118,20,252,2,96,95,117,57,136,201,154,25,73,164,149,217,96,62,196,50,149,182,223,91,213,246,31,19,149,114,47,52,129,169,13,190,64,213,54,182,79,55,26,54,212,23,199,134,10,227,103,239,190,59,50,123,237,212,147,71,128,203,73,3,14,8,1,130,229,252,121,112,131,96,106,207,128,2,88,14,116,24,1,63,128,165,186,248,224,206,234,242,247,216,192,84,195,194,83,102,111,221,159,9,56,65,184,32,13,26,190,37,224,55,128,116,80,183,158,53,142,195,63,1,233,164,254,0,80,121,178,248,83,52,145,163,25,89,139,224,40,82,228,104,28,35,150,65,251,146,122,165,61,70,158,48,117,213,4,161,154,171,155,206,220,25,185,114,247,178,99,186,170,178,85,252,30,177,236,84,252,30,113,218,177,124,217,207,63,58,57,51,133,254,76,197,86,46,244,187,247,239,146,132,120,34,219,35,109,234,52,44,37,182,163,183,71,222,179,165,23,247,115,253,93,234,230,78,181,163,39,20,22,196,120,60,147,106,23,194,62,169,111,111,56,179,17,115,221,251,50,251,153,116,118,96,144,31,188,239,188,228,92,236,66,255,105,61,113,240,156,131,172,163,108,10,62,148,130,148,163,166,174,108,133,26,214,144,96,55,85,24,207,23,198,175,76,156,188,84,124,237,179,201,79,207,21,242,71,187,193,113,0,174,130,73,210,229,164,71,111,129,166,103,209,107,204,190,37,217,103,198,246,26,182,215,176,189,198,83,199,113,219,107,216,94,195,246,26,203,151,253,182,215,176,189,198,127,155,130,115,188,70,208,225,2,138,211,253,98,171,131,46,63,148,80,30,203,195,138,60,203,115,140,192,121,37,150,71,134,71,20,120,175,223,39,248,24,129,19,89,137,151,68,142,65,81,15,139,210,30,214,125,251,251,95,111,127,204,53,93,112,168,154,133,13,77,78,32,211,136,4,244,180,57,96,98,35,131,141,131,49,213,48,45,100,224,189,40,105,6,74,200,44,227,99,24,254,96,214,52,81,210,140,79,63,244,4,140,131,89,35,106,162,193,140,25,40,61,228,108,209,122,82,169,100,80,214,180,242,159,245,60,155,140,84,214,26,8,165,146,201,148,54,211,19,78,43,225,156,22,233,196,57,79,25,93,242,250,121,158,97,188,28,139,74,88,83,72,61,178,54,56,139,83,26,202,176,94,206,47,72,60,235,21,248,191,15,13,91,178,101,62,48,86,224,88,206,231,227,37,86,18,216,185,99,13,44,39,55,68,101,221,146,45,53,165,61,56,141,149,88,129,227,69,63,235,245,183,214,111,6,127,1,0,0,255,255,1,0,0,255,255,253,82,25,129,165,40,0,0]original_byte_message = bytes(original_message)
# print(original_byte_message)# 解析为PushFrame对象
push_frame = PushFrame().parse(original_byte_message)
# print(push_frame)# 对PushFrame的 payload 内容进行gzip解压
push_frame_payload = gzip.decompress(push_frame.payload)# 解析为Response对象
response = Response().parse(push_frame_payload)# 遍历Response对象里面的消息
for message in response.messages:message_method = message.methodmessage_payload = message.payloadprint(f"需要解析的消息类型:{message_method}")# print(message_payload)

然后再解析对应的消息类型就可以

所有的都在这个文件里
相关文章:
【抖音直播间弹幕】protobuf协议分析
将Uint8Array变成 PushFrame格式,里面的payload就存放着弹幕消息 点进去就可以看到其定义的proto结构 headers是一个自定义类型 将测试数据保存一下,等下做对比 先将PushFrame的 payload 内容进行gzip解压 然后再解析为响应 可以看到里面有对应的消…...
Swift 开发教程系列 - 第11章:内存管理和 ARC(Automatic Reference Counting)
在 Swift 中,内存管理由 ARC(自动引用计数)机制自动处理。ARC 通过追踪和管理对象的引用计数来确保分配的内存得到有效释放。尽管 ARC 在大多数情况下能够高效地管理内存,但理解其工作原理仍然十分重要,因为不当的引用…...
C#中 layout的用法
在C#中,layout并不是一个直接用于C#语言本身的关键字或特性。然而,layout在与C#紧密相关的某些上下文中确实有其用途,特别是在涉及用户界面(UI)设计和数据展示时。以下是几个常见的与layout相关的用法场景:…...
【编程概念基础知识】
、编程基础 一、面向对象的三大特性 1、封装: 盒子、零件、按钮 隐藏对象 的内部状态,并且只通过对象的方法来访问数据 想象你有一个小盒子(这个盒子就是一个类),里面装着一些零件(这些零件就是数据&a…...
【React】深入理解 JSX语法
🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 💫个人格言: "如无必要,勿增实体" 文章目录 深入理解 JSX语法1. JSX 简介2. JSX 的基本语法2.1 基本结构2.2 与普通 JavaScr…...
【Linux】从零开始使用多路转接IO --- 理解EPOLL的 LT水平触发模式 与 ET边缘触发模式
当你偶尔发现语言变得无力时, 不妨安静下来, 让沉默替你发声。 --- 里则林 --- 从零开始认识多路转接 1 EPOLL优缺点2 EPOLL工作模式 1 EPOLL优缺点 poll 的优点(和 select 的缺点对应) 接口使用方便:虽然拆分成了三个函数,…...
QtLua
描述 QtLua 库旨在使用 Lua 脚本语言使 Qt4/Qt5 应用程序可编写脚本。它是 QtScript 模块的替代品。 QtLua 不会为 Qt 生成或使用生成的绑定代码。相反,它提供了有用的 C 包装器类,使 C 和 lua 对象都可以从 lua 和 C 访问。它利用 Qt 元对象系统将 QOb…...
c++-有关计数、双变量累加、半衰、阶乘、变量值互换的基础知识
C是一种非常强大和灵活的编程语言,它包含了许多重要的概念和技巧。在本文中,我们将重点讨论五个主题:计数、双变量累加、半衰、阶乘和变量值的互换。我们将介绍这些概念的定义、用法、题目、答案和解释,以帮助读者更好地理解和运用…...
MyBatis3-获取参数值的方式、查询功能及特殊SQL执行
目录 准备工作 获取参数值的方式(重点) 查询功能 查询一个实体类对象 查询一个list集合 查询单个数据 查询一条数据为map集合 查询多条数据为map集合 特殊SQL执行 模糊查询 批量删除 动态设置表名 添加功能获取自增的主键 准备工作 模块My…...
web——[SUCTF 2019]EasySQL1——堆叠注入
这个题主要是讲述了堆叠注入的用法,来复现一下 什么是堆叠注入 堆叠注入:将多条SQL语句放在一起,并用分号;隔开。 1.查看数据库的名称 查看数据库名称 1;show databases; 发现有名称为ctftraining的数据库 2.对表进行查询 1;show tabl…...
【Ubuntu学习】Ubuntu无法使用vim命令编辑
问题 在VMware首次安装Ubuntu,使用vi指令对文件进行编辑,按i键后无法更改文件内容。 原因 由于Ubuntu中预装的是vim-tiny,平时开发中需要使用vim-full。 解决方案 卸载预装vim sudo apt-get remove vim-common安装vim-full sudo apt-get …...
UniAPP u-popup 禁止背景滑动
增加class .NoScroll {overflow: hidden;position: fixed; }在外层div上增加该class判断条件...
F5全新报告揭示AI时代API安全面临严峻挑战
F5 《2024年应用策略现状报告:API安全》揭示了 API 保护中的漏洞以及对全面安全措施的迫切需求 西雅图,2024年11月11日 – F5(NASDAQ: FFIV)日前发布《2024年应用策略现状报告:API 安全》(以下简称为“报告”),揭示了跨行业API安全面临的严峻现状。该报告强调了企业API保护方面…...
使用C语言进行信号处理:从理论到实践的全面指南
1. 引言 在现代操作系统中,信号是一种进程间通信机制,它允许操作系统或其他进程向一个进程发送消息。信号可以用来通知进程发生了一些重要事件,如用户请求终止进程、硬件异常、定时器超时等。掌握信号处理技术对于开发健壮、高效的系统程序至…...
什么是工单管理系统?全面认识指南
在现代企业中,客户服务和支持是业务成功的关键因素之一。为了有效地管理客户请求和问题,许多公司采用了工单管理系统。本文将深入探讨工单管理系统的定义、功能、优势。 一、工单管理系统的定义 工单管理系统是一种软件工具,旨在帮助企业管…...
集群化消息服务解决方案
目录 集群化消息服务解决方案项目概述架构图使用说明服务端通过API接口推送消息给客户端调用方式 请求参数返回参数 客户端推送消息连接websocket或发送消息 接收消息项目地址作者信息 集群化消息服务解决方案 项目概述 集群化消息服务解决方案是一种用于处理大量消息的高可用…...
python数据结构操作与可视化的应用
Python具有丰富的数据结构操作和可视化库,可以进行各种数据结构的创建、编辑和分析,并将结果可视化。以下是几个常见的Python数据结构操作和可视化的应用示例: 1. 列表(List)操作和可视化: - 创建列表&a…...
【基于轻量型架构的WEB开发】课程 作业4 AOP
一. 单选题(共7题,38.5分) 1 (单选题)下列选项中,用于通知/增强处理的是( )。 A. Joinpoint B. Pointcut C. Aspect D. Advice 正确答案:D 答案解析:在面向切面编程ÿ…...
跨境独立站新手,如何用DuoPlus云手机破局海外社媒引流?
独立站作为电商领域的一个重要组成部分,其发展在最近几年里确实令人瞩目,对于想要进入跨境赛道的新手卖家来说,手上握着有优势的货源,建立小型的DTC独立站确实会比入驻第三方平台具有更大的灵活性。本文将给跨境卖家们总结独立站和…...
【Android、IOS、Flutter、鸿蒙、ReactNative 】标题栏
Android 标题栏 参考 Android Studio版本 配置gradle镜像 阿里云 Android使用 android:theme 显示标题栏 添加依赖 dependencies {implementation("androidx.appcompat:appcompat:1.6.1")implementation("com.google.android.material:material:1.9.0")…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...
数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...
结构化文件管理实战:实现目录自动创建与归类
手动操作容易因疲劳或疏忽导致命名错误、路径混乱等问题,进而引发后续程序异常。使用工具进行标准化操作,能有效降低出错概率。 需要快速整理大量文件的技术用户而言,这款工具提供了一种轻便高效的解决方案。程序体积仅有 156KB,…...
从零手写Java版本的LSM Tree (一):LSM Tree 概述
🔥 推荐一个高质量的Java LSM Tree开源项目! https://github.com/brianxiadong/java-lsm-tree java-lsm-tree 是一个从零实现的Log-Structured Merge Tree,专为高并发写入场景设计。 核心亮点: ⚡ 极致性能:写入速度超…...
