日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

B站视频下载

發布時間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 B站视频下载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

看B站的時候,有時候看到很喜歡的總想下載下來,雖然APP里提供了下載,但奈何下載的格式不知道是什么格式,無法在其他播放器里看,于是就想下載到電腦本地播放。當然,就目前而言,WiFi和流量其實足以替代大部分硬件存儲。所以這個需求不是很高,只是個人愛好。

那么什么視頻是可以下載,什么視頻不能下載呢?可以這么說:只要你能在網頁觀看的視頻,都是可以下載的,因為你的瀏覽器接受到了視頻文件才能播放,而我們只需要獲取到這些文件就行。當然這依個人技術和網站,有些網站就是不讓你下載,層層加密,一般人破解不了,但這只是個別,大部分還是正常的,因為要層層加密網站開發可是要多出錢的。加密的話一般是將視頻的接口加密,也有在視頻文件上做手腳的。

現在我們就B站舉個例子。首先,打開某個視頻鏈接,按F12,然后將所有的數據清除,點擊播放視頻,這樣network里面就有很多數據

接著,我們一條一條數據看,直到你看到下面這樣的

那么,右邊的這些是什么意思呢,這是二進制數據,所有以文本格式打開會顯示亂碼,這些大概率是視頻文件,圖片的話瀏覽器是會正常顯示的。我們接著看headers里的信息。

我們來解讀一下headers里面的信息

  • Request URL: 發起請求的URL,視頻的下載地址
  • Request Method: 請求的類型,視頻下載正常為GET
  • Status Code: 狀態碼,206的話說明鏈接下的文件是支持range參數的,也就是說我請求頭里加一個range參數,說明你想要文件的哪一段,這為文件的斷點續傳和多進程下載提供了便利
  • Remote Address: 服務器地址,沒什么軟用

接著看響應頭(response headers)

  • Content-Length: 返回文件長度
  • Content-Range: bytes4389834-4589025/24268406 (文件位置和總長度,單位字節)
  • content-type: video/mp4 ,文件類型

這三個是我們看中的,其他沒什么用

請求頭(requests headers)
Provisional headers are shown ,這句話是谷歌瀏覽器的毛病,只會顯示一部分請求頭,如果爬蟲不會返回數據,則需要使用抓包軟件查看完整請求頭了

Origin: 值不重要,加入爬蟲頭信息就行
Range:bytes=4389834-4589025 ,你要請求的數據
Referer:訪問的上一個頁面,一般會動態構建,比如av地址
User-Agent: 這個不多說

我們先分析URL是怎么來的,看一下沒什么規律,應該不是動態構建的(如果是則需要查看想要js代碼),那么要么是通過接口返回的,要么是在從原網頁中和網頁結構一起返回的,比如https://www.bilibili.com/video/av49336067/。我們先刷新一下頁面,將請求URL為https://www.bilibili.com/video/av49336067/鏈接的response的內容負責到記事本,Ctrl+f搜索剛才視頻的鏈接,如果沒有則搜索鏈接里面的一些關鍵詞,應該有可能數據在js里面,然后動態構建的。

接著今天教材結束,因為視頻鏈接確實在網頁返回的數據中,不過當一個網頁含有多個視頻的時候,就有一點小小的區別,這時候網頁數據里沒有視頻鏈接,需要帶上aid和cid請求另一個接口得到視頻的下載地址,這里就不多說了,具體看代碼或者自己去嘗試。B站沒有任何加密很簡單。

代碼:https://github.com/kanadeblisst/BDVideo

最后,我正在學習一些機器學習的算法,對于一些我需要記錄的內容我都會分享到博客和微信公眾號,歡迎關注。平時的話一般分享一些爬蟲或者Python的內容。

總結

以上是生活随笔為你收集整理的B站视频下载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。