当前位置: 首页 > news >正文

【抖音直播间弹幕】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 答案解析:在面向切面编程&#xff…...

跨境独立站新手,如何用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")…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...