關於bilibili視頻下載的一些小思路

關於bilibili視頻下載的一些小思路

(基於b站官方接口實現)


因爲B站近期某些蛋(chou)疼(feng)表現,某十八線女團不知名野站(我無聊做死的地方)爲了穩健,須要備份一份全部視頻。然而市面上的各路下載軟件(說的就是你,唧唧),並不支持批量下載,you-get也不能爬空間得到播放列表......,翻了N多文章都是用B站前幾年開放的api實現的,然而本弱雞沒有id,接口根本拿不到,文檔所在的 bilibili.cn 也已經涼了。html

這時找到這篇文章html5

https://blog.csdn.net/chaoping315/article/details/80106141

1. 獲取帳號全部視頻avid

空間接口能夠正常get使用git

https://space.bilibili.com/ajax/member/getSubmitVideos?mid=97678687&pagesize=30&tid=0&page=1&keyword=&order=pubdate

這個接口很好抓,而且不須要任何驗證
clipboard.png
能夠從中輕易拿到視頻數和頁數github

以後文章是經過kanbilibili的接口解決下載問題的,可是其中的cid是從網頁中爬取,須要解析出json.....
直接訪問B站視頻頁也有cid字段,可是食用方法和kanbilibili幾乎一毛同樣,做爲一個正則都懶得用的鹹魚,怎麼能忍~
kanbilibili的視頻下載請求連接居然是長春源...
果斷拋棄接口web

(廢話結束)ajax

2. 獲取視頻cid

B站視頻有av號,可是每一個av號下不必定只有1p,因此B站用cid來管理視頻的真正id
扒官方新html5播放器接口發現交互滿滿的都是ajaxjson

https://api.bilibili.com/x/web-interface/view?aid=170001

獲取cid的接口
clipboard.png
這是一個巨長的接口,不過也給咱們特別詳細的提供了視頻信息,以及各個分p的信息
在pages裏,能夠拿到每p的cid,有了cid,就能夠從各路方法請求下載地址api

clipboard.png
從這裏記下cidide

3. 獲取視頻下載連接

這裏kanbilibili的接口也是好用的,可是由於測試時抽風過,又是長春的節點,因此選擇仍是扒那個播放器的接口測試

https://api.bilibili.com/x/player/playurl?avid=38735633&cid=68089009&qn=80&type=&fnver=0&fnval=16&otype=json

獲取視頻下載連接接口

這裏面主要的是cid和avid
cid就是剛纔獲取的,avid就是av號
這裏的qn表明質量(實際上沒啥用),由於除了大會員專向的全部質量的連接都有
fnver fnval我也不知道幹啥的,可是不帶就只能獲取480p的視頻地址

clipboard.png
這裏面的16 32 40 80 112表明視頻質量,數字越大,視頻質量越高

在這裏就能拿到下載地址和視頻質量信息了
而後就能夠愉快下載
.......????

clipboard.png
心涼半截的403

403了,就多半是header的問題
這時咱們回到抓包,隨便打開一個視頻

clipboard.png
clipboard.png

請求頭裏的origin referer看起來是最可能搞事的
那就直接複製大法,僞造一個試試

clipboard.png
正確拿到了文件(實際上只僞造erferer就能夠)

連接直接丟下載軟件,僞造下頭就能夠開始下載(我選擇了aria2)
由於寫的就是個一次性腳本,因此不分享代碼怎麼構思的了,寫的無法看,一堆bug沒處理

想看的能夠移步這裏源代碼地址
想下載打包好的能夠移步這裏打包文件地址

第一次發博客,廢話連篇,請求各位的指正~~~

相關文章
相關標籤/搜索