對B站各種數據進行抓包分析


寫在前面:現今絕大多數的網站都使用js來加載數據,傳統的請求方法很難再奏效,對動態數據的爬取現在大都分為兩類爬取方法:

1. 使用Selinium等自動化測試軟件去模擬瀏覽器,這種方法幾乎可以適用於所有網站,但是缺點是效率速度太慢了,如果有別的爬取方法,優先采用其他。

2. 對網頁直接進行抓包處理,這種方法效率相對較高,唯一的困難就是如何獲取api,特別是某些經過加密的例如網易雲(有時間再寫個個吧),有時候很難去解析。

 

前瞻:以 https://www.bilibili.com/video/av39807126 為例,

        

 

評論:打開后就是一個普通的B站視頻,在點擊評論下一頁時,Chrome網絡查看,

 

得到https://api.bilibili.com/x/v2/reply?callback=jQuery17204374912045669581_1563294492420&jsonp=jsonp&pn=2&type=1&oid=39807126&sort=2&_=1563294527125 這一長竄東西。當然直接肯定是打不開的。我們不要js請求,將 js 參數去掉,變成https://api.bilibili.com/x/v2/reply?jsonp=jsonp&pn=2&type=1&oid=39807126&sort=2&_=1563294527125

可以得到 json 格式的評論。其中參數 pn 是評論的頁數 ; oid 就是視頻網址后面的 av那一串數字;sort一看就清楚是排序方式,0是按時間排序,2是按熱度;最后面的參數似乎沒有什么影響。

 

評論回復:就是評論后別人給你的回復的api。在有評論折疊的地方點擊 點擊查看 ,然后查看網絡

同上可以得到api: https://api.bilibili.com/x/v2/reply/reply?jsonp=jsonp&pn=1&type=1&oid=39807126&ps=10&root=1384748331&_=1563295273867

最后的字符串可以不要,參數ps是啥我也不太清楚,想知道的小伙伴可以去看下 js 源碼,應該能解出來;root是原始評論人的 rpid。

 

個人信息:

https://api.bilibili.com/x/space/acc/info?mid=264980&jsonp=jsonp,這個就不說了,和上面一樣,點擊用戶直接查就可以找到了。

 

彈幕:我是通過 fiddler 獲取的,Chrome上我好像沒有看到?在fiddler選擇框中輸入 select xml 選中文件如下:

 

得到:http://api.bilibili.com/x/v1/dm/list.so?oid=103015334

研究了下這個是實時彈幕的api,一般視頻上限就是1000,個別比如說很火的視頻可能會上3000或者更高。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM