B站彈幕姬

2021-08-19 13:40:39 字數 2588 閱讀 6980

接上篇

下面開始分析彈幕資訊:

當我們在完成和伺服器的握手之後,b站的彈幕伺服器就會開始不停的開始給我們推送相關房間的彈幕訊息了。老規矩前面16個位元組是這個包的相關資訊,我們先來看下這條訊息的前面16位元組在說什麼。

00 00 01 38 頭部四位元組表達資料大小這可以看到是312位元組。

00 10 這兩個位元組還是magic_number。這裡是16。

00 00 版本號0.

00 00 00 05 上篇我們介紹了07是進入房間資訊,這裡05代表彈幕訊息。

00 00 00 00 包型別正常訊息包。

然後後面的就是我們需要解析的資料了,這裡使用utf-8 encode之後傳輸的,所以我們拿到之後需要utf-8 decode一下,然後在json decode一下。拿到的資料如下

這是一條彈幕訊息,所以cmd這裡是彈幕訊息。另外還有gift和welcome兩個cmd訊息,分別代表的是觀眾老爺送的禮物和歡迎開通了vip的觀眾老爺而廣播的特殊彈幕訊息。由於info裡面包含了太多奇奇怪怪的資訊,所以挑我們需要的重點來說,我們最關注的說了什麼在info[1]。在wireshark資料介面的右側,通常我們可以看到ascii的直接顯示,但是如果我們發的是中文資料,這裡就不會顯示了。我們需要拿到回傳回來的資料decode成utf-8才可以正確顯示他們,這裡要注意。

其實在看16進製制資料的時候。。根據規則用肉眼就能大致分辨一下資料是不是utf-8處理過的。例如我們來看這個資料:

根據我剛才說的這裡沒有辦法正確顯示出utf-8編碼的資料。那麼我們如何判斷他是否是utf-8的資料或者解析出他到底說的些什麼呢。

到此我們就知道怎麼愉快的拿到彈幕資料了。

這是一條系統推送的禮物訊息:

如此其他資料其實差不多的,再讓我們來看乙個禮物的資料,這裡直接用了unicode所以在wireshark裡面我們能直接看到\u開頭的字串:

,,],

"timestamp

": 1508919509,

"giftid

": 1,

"gifttype

": 0,

"action

": "餵食"

,

"super

": 0,

"price

": 100,

"rnd

": "

1508919309",

"newmedal

": 0,

"newtitle

": 0,

"medal

": ,

"title

": ""

,

"beatid

": 0,

"biz_source

": "

live",

"metadata

": ""

,

"remain

": 0,

"gold

": 0,

"silver

": 0,

"eventscore

": 0,

"eventnum

": 0,

"smalltv_msg

": ,

"specialgift

": null,

"notice_msg

": ,

"capsule":

},"colorful": }},

"addfollow

": 0

}}

這是乙個welcome大佬的資料報:

,  "

roomid

": 989474}

有了這些格式就可以定製自己彈幕機的功能。

00 00 00 10:16位元組資料

00 10:magic_number

00 01: 版本號01

00 00 00 02:心跳包型別

00 00 00 01:資料交換包

這個包的大小是70位元組,如果你批量抓去房間資訊的話可以很容易發現他,每隔一段時間就會由本地ip位址發往彈幕伺服器。驗證這個是否是貨真價實的心跳包,其實只需要找乙個沒什麼人說話的房間掛在那裡,因為沒有人說話所以不會有別的包,觀察一下就能證實了。根據我的觀察每30秒就會有一次心跳包發起。在實現的時候我們可以起乙個協程或者乙個執行緒來專門負責傳送心跳包。

分析有問題的地方歡迎勘誤

以上reference:

爬取B站彈幕

最近幾天學習爬蟲,便爬取了b站的彈幕,本篇博文記錄的是爬取彈幕的方法一,近期會更新方法二。下面是流程 點開這個包是這個形式的 這裡面就有明文的彈幕,但通過requests獲得的response是經過utf 8編碼加密過的,想要獲得彈幕內容還要解密。下面附 from bs4 import beauti...

python 爬蟲 b站彈幕爬蟲

coding utf 8 獲取bilibili直播間彈幕 房間號從網頁源 中獲取 開啟直播畫面後,按ctrl u 開啟網頁源 按ctrl f 搜尋 room id 搜到的 room id 1016中,1016就是房間號 獲取不 間的彈幕 修改 第26行的roomid的值為對應的房間號 import ...

爬蟲專欄6 爬取B站彈幕

比如說這裡我隨便開乙個網頁 在xhr標籤裡面可以看到乙個小眼睛圖示的玩意兒,開啟那個url進去之後 就可以直接提取了 ps 1.針對匹配,乙個尖括號結束之後最好用.過渡到另乙個尖括號,不要什麼都不加,可能抓不出來 2.這是針對response.text和response.content.decode...