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

抖音的逆向工程获取弹幕(websocket和protobuf解析)

目录

  • 声明
  • 前言
  • 第一节 获取room_id和ttwid值
  • 第二节 signture值逆向
      • python 实现signature
  • 第三节 Websocket实现长链接请求
    • protubuf反序列化
      • pushFrame反序列化
      • Response解压和反序列化
      • 消息体Message解析
    • 应答ack
    • 参考博客

声明

本文章中所有内容仅供学习交流使用,不用于其他任何目的,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请在评论区联系作者立即删除!

前言

本文章主要讲解网页版直播间的数据逆向,从获取room_id和ttwid、signature 值逆向、websocket长链接、ack 应答四个方面进行讲解。

第一节 获取room_id和ttwid值

使用chrome浏览器打开直播间,在网页端右击鼠标点检查:
在这里插入图片描述
出现如下窗口,我且将该界面分为五个部分。
在这里插入图片描述

做逆向主要看人家怎么做的,我们就跟着做就好了。看到这你已经入局了。。。。。
抓包数据,定位到数据请求,是一个 websocket 连接,点击WS,刷新界面。
在这里插入图片描述
在payload中会有两个数据很重要:room_id和signature,每一个直播间的这两个值都会变化。
在这里插入图片描述
搜索room_id,查找在哪里有用到。
在这里插入图片描述
这是一个80017709309的一个文档请求。
在这里插入图片描述
在这里插入图片描述
鼠标点击右键,选择“在网络面板中打开”,需要将curl的代码转成python所用的代码。
在这里插入图片描述
在这里插入图片描述
复制好之后去该网址(https://curlconverter.com/)转换。生成python语言。只需要如下字段。 ttwid 作为后面发起 websocket 的 cookie作为响应。

import requests
import reurl = "https://live.douyin.com/80017709309"
cookies = {'__ac_nonce': '067f76f260003620e7eb',
}
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36',
}
response = requests.get(url, cookies=cookies, headers=headers)
ttwid = response.cookies.get_dict()["ttwid"]
print(ttwid)
#将room_id找出来
re = re.findall(r'\\"roomId\\":\\"(\d+)\\',response.text)[0]
print(re)

Edge浏览器:
在这里插入图片描述
chrome浏览器:
在这里插入图片描述
很奇怪的是我在chrome浏览器中的响应cookie和edge浏览器中响应的cookie不一致。 但是不影响程序的运行。

参考:
B站视频:
https://www.bilibili.com/video/BV1G2cJeTEc3?
安装与设置环境变量的过程在此网站。

第二节 signture值逆向

首先定位websocket的入口位置,按照数字步骤点击,即可进入websocket入口位置。
在这里插入图片描述
点击4后跳转到下图,打断点,进入getSocketParams()函数,主要是获取参数。
在这里插入图片描述
进入getSocketParams()函数后,找signature值。s和i 里面都没有signature值,所以猜测应该在函数里面。

相关文章:

抖音的逆向工程获取弹幕(websocket和protobuf解析)

目录 声明前言第一节 获取room_id和ttwid值第二节 signture值逆向python 实现signature第三节 Websocket实现长链接请求protubuf反序列化pushFrame反序列化Response解压和反序列化消息体Message解析应答ack参考博客声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的…...

点云配准算法之NDT算法原理详解

一、算法概述 NDT(Normal Distributions Transform)最初用于2D激光雷达地图构建(Biber & Straer, 2003),后扩展为3D点云配准。它将点云数据空间划分为网格单元(Voxel),在每个体…...

WPF 图片文本按钮 自定义按钮

效果 上面图片,下面文本 样式 <!-- 图片文本按钮样式 --> <Style x:Key="ImageTextButtonStyle" TargetType="Button"><Setter Property="Background" Value="Transparent"/><Setter Property="BorderTh…...

Diffusion inversion后的latent code与标准的高斯随机噪音不一样

可视化latents_list如下; 可视化最后一步与标准的噪声&#xff1a; 能隐约看出到最后一步还是会有“马”的形状 整个代码&#xff08;及可视化代码如下&#xff09;&#xff1a; ## 参考freeprompt(FPE)的代码 import os import torch import torch.nn as nn import torch.n…...

江湖密码术:Rust中的 bcrypt 加密秘籍

前言 江湖险恶,黑客如雨,昔日密码“123456”早被各路大侠怒斥为“纸糊轻功”。若还执迷不悟,用明文密码闯荡江湖,无异于身披藏宝图在集市上狂奔,目标大到闪瞎黑客双眼。 为护你安然度过每一场数据风波,特献上一门绝学《Rust加密神功》。核心招式正是传说中的 bcrypt 密…...

Milvus(3):数据库、Collections说明

1 数据库 Milvus 在集合之上引入了数据库层&#xff0c;为管理和组织数据提供了更有效的方式&#xff0c;同时支持多租户。 1.1 什么是数据库 在 Milvus 中&#xff0c;数据库是组织和管理数据的逻辑单元。为了提高数据安全性并实现多租户&#xff0c;你可以创建多个数据库&am…...

【Hive入门】Hive数据模型与存储格式深度解析:从理论到实践的最佳选择

目录 1 Hive数据模型全景图 2 Hive存储架构解析 3 存储格式对比矩阵 4 存储格式选择决策树 5 ORC文件结构剖析 6 Parquet与ORC技术对比 7 最佳实践指南 7.1 建表示例模板 7.2 性能优化 8 总结 1 Hive数据模型全景图 模型核心组件解析&#xff1a; Database&#xff1…...

2025能源网络安全大赛CTF --- Crypto wp

文章目录 前言simpleSigninNumberTheory 前言 大半年以来写的第一篇文章&#xff01;&#xff01;&#xff01; simpleSignin 题目&#xff1a; from Crypto.Util.number import * from gmpy2 import * import osflag bxxx p next_prime(bytes_to_long(os.urandom(128))…...

【网络安全】网络钓鱼的类型

1. 网络钓鱼简介 网络钓鱼是最常见的社会工程学类型之一&#xff0c;它是一种利用人为错误来获取私人信息、访问权限或贵重物品的操纵技术。之前&#xff0c;您学习了网络钓鱼是如何利用数字通信诱骗人们泄露敏感数据或部署恶意软件的。 有时&#xff0c;网络钓鱼攻击会伪装成…...

Android学习总结之扩展基础篇(一)

一、IdleHandler工作原理 1. IdleHandler 接口定义 IdleHandler 是 MessageQueue 类中的一个接口&#xff0c;定义如下&#xff1a; public static interface IdleHandler {/*** 当消息队列空闲时会调用此方法。* return 如果返回 true&#xff0c;则该 IdleHandler 会保留在…...

Godot开发2D冒险游戏——第二节:主角光环整起来!

变量的作用域 全局变量&#xff0c;局部变量&#xff0c;导出变量&#xff08;可以在检查器当中快速查看&#xff09; 为玩家添加移动动画 现在游戏的玩家还只是在滑行&#xff0c;我们需要再添加玩家每个方向上的移动效果 删除原先的Item节点&#xff0c;创建一个动画精灵…...

.NETCore部署流程

资料下载&#xff1a;https://download.csdn.net/download/ly1h1/90684992 1.下载托管包托管捆绑包 | Microsoft Learn&#xff0c;下载后点击安装即可。 2.安装IIS 3.打开VS2022&#xff0c;新建项目&#xff0c;选择ASP.NET Core Web API 5.Program修改启动项&#xff0c;取…...

数据结构——二叉树,堆

目录 1.树 1.1树的概念 1.2树的结构 2.二叉树 2.1二叉树的概念 2.2特殊的二叉树 2.3二叉树的性质 2.4二叉树的存储结构 2.4.1顺序结构 2.4.2链式结构 3.堆 3.1堆的概念 3.2堆的分类 3.3堆的实现 3.3.1初始化 3.3.2堆的构建 3.3.3堆的销毁 3.3.4堆的插入 3.3.5…...

Java面试实战:音视频场景下的微服务架构与缓存技术剖析

文章标题 Java面试实战&#xff1a;音视频场景下的微服务架构与缓存技术剖析 文章内容 第一轮提问 面试官: 谢先生&#xff0c;请问您对Spring Boot框架熟悉吗&#xff1f;它有哪些核心特性&#xff1f; 谢飞机: 熟悉&#xff0c;Spring Boot的核心特性包括自动配置、嵌入…...

龙虎榜——20250424

指数依然是震荡走势&#xff0c;接下来两天调整的概率较大 2025年4月24日龙虎榜行业方向分析 一、核心主线方向 化工&#xff08;新能源材料产能集中&#xff09; • 代表标的&#xff1a;红宝丽&#xff08;环氧丙烷/锂电材料&#xff09;、中欣氟材&#xff08;氟化工&…...

大学生如何学好人工智能

大学生学好人工智能需要从多个方面入手&#xff0c;以下是一些建议&#xff1a; 扎实掌握基础知识 - 数学基础&#xff1a;人工智能涉及大量数学知识&#xff0c;要学好线性代数、概率论、数理统计、微积分等课程&#xff0c;为理解复杂的算法和模型奠定基础。 - 编程语言&…...

实时步数统计系统 kafka + spark +redis

基于微服务架构设计并实现了一个实时步数统计系统&#xff0c;采用生产者-消费者模式&#xff0c;利用Kafka实现消息队列&#xff0c;Spark Streaming处理实时数据流&#xff0c;Redis提供高性能数据存储&#xff0c;实现了一个高并发、低延迟的数据处理系统&#xff0c;支持多…...

CentOS 7 安装教程

准备&#xff1a; 软件&#xff1a;VMware Workstation 镜像文件&#xff1a;CentOS-7-x86_64-bin-DVD1.iso &#xff08;附&#xff1a;教程较为详细&#xff0c;注释较多&#xff0c;故将操作的选项进行了加粗字体显示。&#xff09; 1、文件–新建虚拟机–自定义 2、硬盘…...

Python+AI提示词出租车出行轨迹预测:梯度提升GBR、KNN、LR回归、随机森林融合及贝叶斯概率异常检测研究

原文链接&#xff1a;tecdat.cn/?p41693 在当今数字化浪潮席卷全球的时代&#xff0c;城市交通领域的海量数据如同蕴藏着无限价值的宝藏等待挖掘。作为数据科学家&#xff0c;我们肩负着从复杂数据中提取关键信息、构建有效模型以助力决策的使命&#xff08;点击文末“阅读原文…...

直接偏好优化(Direct Preference Optimization,DPO):论文与源码解析

简介 虽然大规模无监督语言模型&#xff08;LMs&#xff09;学习了广泛的世界知识和一些推理技能&#xff0c;但由于它们是基于完全无监督训练&#xff0c;仍很难控制其行为。 微调无监督LM使其对齐偏好&#xff0c;尽管大规模无监督的语言模型&#xff08;LMs&#xff09;能…...

2025/4/23 心得

第一题。 习题2.1.9 最少翻转次数 题目描述 给定一个01序列&#xff0c;小x每次可以翻转一个元素&#xff0c;即将该元素从0变1或者从1变0。 现在小x希望最终序列是不下降序列&#xff0c;即不会存在相邻两个元素&#xff0c;左边元素的值比右边元素的值大。 请你帮小x求最…...

dmncdm达梦新云缓存数据库主从集群安装部署详细步骤说明

dmncdm达梦新云缓存数据库主从集群安装部署详细步骤说明 1 环境介绍2 安装部署dmncdm2.1 196部署cdm环境2.2 197部署cdm环境2.3 190部署cdm环境 3 主备集群/主从集群配置4 部署主备集群/主从集群5 部署日志6 更多达梦数据库全方位指南:安装 优化 与实战教程 1 环境介绍 cpu x8…...

UE5.2+VarjoXR3,Lumen、GI、Nanite无效的两种解决方案

一、问题描述 最近在做一个基于VarjoXR3的VR项目开发&#xff0c;UE版本使用的是5.2&#xff0c;效果采用Lumen。首先在PC版本中调整了一个效果&#xff0c;但是当切换到VR运行后&#xff0c;就发现Lumen效果就丢失了。但是测试的其他的头显就没有问题&#xff0c;比如Quest。…...

PH热榜 | 2025-04-24

1. Peek 标语&#xff1a;AI个人财务教练&#xff0c;帮你做出明智的财务决策。 介绍&#xff1a;Peek的人工智能助手能够主动进行财务检查&#xff0c;分析你的消费模式&#xff0c;并以一种细腻而积极的方式帮助你改善习惯。完全没有评判&#xff0c;也没有负罪感。就像为你…...

利用 SSE 实现文字吐字效果:技术与实践

利用 SSE 实现文字吐字效果:技术与实践 引言 在现代 Web 应用开发中,实时交互功能愈发重要。例如,在线聊天、实时数据监控、游戏中的实时更新等场景,都需要服务器能够及时将数据推送给客户端。传统的请求 - 响应模式在处理实时性要求较高的场景时显得力不从心,而 Server…...

POSIX多线程

在计算机编程的广阔领域中&#xff0c;POSIX 标准就像是一把通用的钥匙&#xff0c;开启了跨平台编程的大门。POSIX&#xff0c;即 Portable Operating System Interface&#xff08;可移植操作系统接口&#xff09; &#xff0c;是 IEEE 为了规范各种 UNIX 操作系统提供的 API…...

济南国网数字化培训班学习笔记-第二组-1节-输电线路工程

输电线路工程 输电 电网定义 将发电场采集的电能通过输电线路传输到用户终端。由输电线路、变电站和配电网络等组成。 六精四化 安全、质量、进度、造价、技术、队伍 标准化&#xff0c;模块化&#xff0c;机械化&#xff0c;智能化 发展历程 1908-22kv-石龙坝水电-昆明…...

相机雷达外参标定算法调研

0. 简介 相机与激光雷达的外参标定是自动驾驶、机器人等领域的基础工作。精准的标定不仅有助于提高数据融合的效果&#xff0c;还能提升算法的整体性能。随着技术的发展&#xff0c;许多研究者和公司致力于开发高效的标定工具和算法&#xff0c;本文将对无目标标定和有目标标定…...

网络原理 - 7(TCP - 4)

目录 6. 拥塞控制 7. 延时应答 8. 捎带应答 9. 面向字节流 10. 异常情况 总结&#xff1a; 6. 拥塞控制 虽然 TCP 有了滑动窗口这个大杀器&#xff0c;就能够高效可靠的发送大量的数据&#xff0c;但是如果在刚开始阶段就发送大量的数据&#xff0c;仍然可能引起大量的…...

JAVA---面向对象(上)

今天写重生之我开始补知识 第二集 面向对象编程&#xff1a;拿东西过来做对应的事。 设计对象并使用 1.类和对象 类&#xff08;设计图&#xff09;&#xff1a;是对象共同特征的描述&#xff1b; 对象&#xff1a;是具体存在的具体东西&#xff1b; 如何定义类&#xf…...