抖音的逆向工程獲取彈幕(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值,所以猜測應該在函數里面。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/78257.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78257.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/78257.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

反射,枚舉,lambda表達式

目錄 反射枚舉的使用Lambda表達式函數式接口語法Lambda表達式語法精簡 變量捕獲Lambda在集合List中的使用 反射 作用:在Java代碼中,讓一個對象認識到自己 比如一個類的名字,里面的方法,屬性等 讓程序運行的過程,某個對…

鴻蒙移動應用開發--渲染控制實驗

任務:使用“對象數組”、“ForEach渲染”、“Badge角標組件”、“Grid布局”等相關知識,實現生效抽獎卡案例。如圖1所示: 圖1 生肖抽獎卡實例圖 圖1(a)中有6張生肖卡可以抽獎,每抽中一張,會通過彈層顯示出來&#xf…

webpack基礎使用了解(入口、出口、插件、加載器、優化、別名、打包模式、環境變量、代碼分割等)

目錄 1、webpack簡介2、簡單示例3、入口(entry)和輸出(output)4、自動生成html文件5、打包css代碼6、優化(單獨提取css代碼)7、優化(壓縮過程)8、打包less代碼9、打包圖片10、搭建開發環境(webpack-dev-server&#xf…

Java快速上手之實驗4(接口回調)

1.編寫接口程序RunTest.java,通過接口回調實現多態性。解釋【代碼4】和【代碼6】的執行結果為何不同? interface Runable{ void run(); } class Cat implements Runable{ public void run(){ System.out.println("貓急上樹.."…

Volcano 實戰快速入門 (一)

一、技術背景 隨著大型語言模型(LLM)的蓬勃發展,其在 Kubernetes (K8s) 環境下的訓練和推理對資源調度與管理提出了前所未有的挑戰。這些挑戰主要源于 LLM 對計算資源(尤其是 GPU)的巨大需求、分布式任務固有的復雜依…

Qwen2.5簡要全流程以及QA

1 輸入prompt 得到input id input id: [B,L] # batch size , lenth 2 embeding之后得到 input_embeds: [B,L,D] # demensions 3 進入Transformer層 先通過linear層得到shape不變的 QKV 多頭注意力 分割Dimension , kv變成 [B,H,L,head_dim] h是…

爬蟲學習——Item封裝數據與Item Pipeline處理數據

一、Item封裝數據 對于有字段的數據,最好的數據結構維護方法為字典類型(dict),但是由于字典不便于攜帶元數據和傳遞給其他組件使用,故可以使用Item類封裝爬取到的數據。 這里涉及兩個類:Item基類和Field類 兩者的使用關系如下&…

【React】狀態管理 Context API \ MobX \ Redux

Context APIMobXRedux React有自己狀態管理,周邊生態也有很多狀態管理 Context API 直接從react中引入并調用即可,context包含兩個東西: Provider:提供商(翻譯),提供數據;屬性&…

RK3588上編譯opencv 及基于c++實現圖像的讀入

參考博文: https://blog.csdn.net/qq_47432746/article/details/147203889 一、安裝依賴包 sudo apt install build-essential cmake git pkg-config libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libjpe…

MATLAB 訓練CNN模型 yolo v4

學生對小車控制提出了更好的要求,能否加入深度學習模型。 考慮到小車用matlab來做,yolo v5及以上版本都需要在pytorch下訓練,還是用早期版本來演示。 1 yolov4 調用 參考 trainYOLOv4ObjectDetector (mathworks.com) name "tiny-yo…

Windows下使用 VS Code + g++ 開發 Qt GUI 項目的完整指南

🚀 使用 VS Code g 開發 Qt GUI 項目的完整指南(Windows MSYS2) 本指南幫助你在 Windows 下使用 VS Code g CMake Qt6 快速搭建 Qt GUI 項目,適合熟悉 Visual Studio 的開發者向跨平臺 VS Code 工具鏈遷移。 🛠?…

開源漏洞掃描器:OpenVAS

一、OpenVAS介紹 OpenVAS (Open Vulnerability Assessment System) 是一款功能強大的開源漏洞掃描器。它由 Greenbone Networks 開發和維護,是 Greenbone 安全管理器 (GSM) 產品的基礎,同時也有免費的社區版本(Greenbone Community Edition&…

Redis Pipeline 詳解

Redis Pipeline 詳解 Redis 無 Pipeline 耗時情況 : #mermaid-svg-8RIiJyeBO0uIrWjr {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-8RIiJyeBO0uIrWjr .error-icon{fill:#552222;}#mermaid-svg-8RIiJyeBO0uIrWjr .…

2025.04.24【3D】3D繪圖入門指南

Nifty graph A contribution by Matt Asher. 3D animation A 3D animated scatterplot made with R and rgl. 文章目錄 Nifty graph3D animation 2025.04.24【3D】| 3D繪圖入門指南什么是3D繪圖?為什么使用3D繪圖?如何在R中進行3D繪圖?安裝…

[特殊字符] 分布式事務中,@GlobalTransactional 與 @Transactional 到底怎么配合用?

在微服務架構中,隨著系統模塊的拆分,單體應用中的本地事務已經無法滿足跨服務的數據一致性需求。此時,我們就需要引入分布式事務解決方案,比如 Seata。在使用 Seata 的過程中,很多人會遇到一個常見的疑問: …

TDengine 集群高可用方案設計(二)

四、TDengine 集群高可用方案設計 4.1 硬件與網絡架構設計 服務器選型:選擇配置高、穩定性強的服務器,如戴爾 PowerEdge R740xd、華為 RH2288H V5 等。以戴爾 PowerEdge R740xd 為例,它配備英特爾至強可擴展處理器,具備高性能計…

從對數變換到深度框架:邏輯回歸與交叉熵的數學原理及PyTorch實戰

目錄 前言 一、連乘變連加二、最小化損失函數2.1交叉熵2.2 二分類交叉熵2.3 多分類交叉熵三、邏輯回歸與二分類3.1 邏輯回歸與二分類算法理論講解3.1.1 散點輸入3.1.2 前向計算3.1.3 Sigmoid函數引入3.1.4 參數初始化3.1.5 損失函數3.1.6 開始迭代3.1.7 梯度下降顯示四、基于框…

高企復審獎補!2025年合肥市高新技術企業重新認定獎勵補貼政策及申報條件

一、合肥市高新技術企業重新認定獎勵補貼政策 (一)高新區高新技術企業重新認定復審補貼獎勵 重新認定為國家高新技術企業的給予5萬元一次性獎勵。 (二)經開區高新技術企業重新認定復審補貼獎勵 對重新認定的企業,給…

Spring Boot 中配置線程池時優化 `ThreadPoolTaskExecutor` 的配置總結

在 Spring Boot 中配置線程池時,可以通過以下方式進一步優化 ThreadPoolTaskExecutor 的配置,提升性能、靈活性和可靠性: 優化點 1:合理設置線程池參數 關鍵參數調整 Bean(name "taskExecutor") public Executor tas…

opencv 圖像的旋轉

圖像的旋轉 1 單點旋轉2. 圖片旋轉(cv2.getRotationMatrix2D)3. 插值方法3.1 最近鄰插值(cv2.INTER_NEAREST)3.2 雙線性插值(cv2.INTER_LINEAR)3.3 像素區域插值(cv2.INTER_AREA)3.4 雙三次插值(cv2.INTER_CUBIC&#…