因爲B站近期某些蛋(chou)疼(feng)表現,某十八線女團不知名野站(我無聊做死的地方)爲了穩健,須要備份一份全部視頻。然而市面上的各路下載軟件(說的就是你,唧唧),並不支持批量下載,you-get也不能爬空間得到播放列表......,翻了N多文章都是用B站前幾年開放的api實現的,然而本弱雞沒有id,接口根本拿不到,文檔所在的 bilibili.cn 也已經涼了。html
這時找到這篇文章html5
https://blog.csdn.net/chaoping315/article/details/80106141
空間接口能夠正常get使用git
https://space.bilibili.com/ajax/member/getSubmitVideos?mid=97678687&pagesize=30&tid=0&page=1&keyword=&order=pubdate
這個接口很好抓,而且不須要任何驗證
能夠從中輕易拿到視頻數和頁數github
以後文章是經過kanbilibili的接口解決下載問題的,可是其中的cid是從網頁中爬取,須要解析出json.....
直接訪問B站視頻頁也有cid字段,可是食用方法和kanbilibili幾乎一毛同樣,做爲一個正則都懶得用的鹹魚,怎麼能忍~
kanbilibili的視頻下載請求連接居然是長春源...
果斷拋棄接口web
(廢話結束)ajax
B站視頻有av號,可是每一個av號下不必定只有1p,因此B站用cid來管理視頻的真正id
扒官方新html5播放器接口發現交互滿滿的都是ajaxjson
https://api.bilibili.com/x/web-interface/view?aid=170001
獲取cid的接口
這是一個巨長的接口,不過也給咱們特別詳細的提供了視頻信息,以及各個分p的信息
在pages裏,能夠拿到每p的cid,有了cid,就能夠從各路方法請求下載地址api
從這裏記下cidide
這裏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的視頻地址
這裏面的16 32 40 80 112表明視頻質量,數字越大,視頻質量越高
在這裏就能拿到下載地址和視頻質量信息了
而後就能夠愉快下載
.......????
![]()
心涼半截的403
403了,就多半是header的問題
這時咱們回到抓包,隨便打開一個視頻
請求頭裏的origin referer看起來是最可能搞事的
那就直接複製大法,僞造一個試試
![]()
正確拿到了文件(實際上只僞造erferer就能夠)
連接直接丟下載軟件,僞造下頭就能夠開始下載(我選擇了aria2)
由於寫的就是個一次性腳本,因此不分享代碼怎麼構思的了,寫的無法看,一堆bug沒處理
想看的能夠移步這裏源代碼地址
想下載打包好的能夠移步這裏打包文件地址
第一次發博客,廢話連篇,請求各位的指正~~~