B站黑科技是怎麼做到的?

B站中轉載其他視頻網站的時候經常load不出來,這個時候評論里就會出現黑科技,複製url就可以看到。這個是怎麼做到的?


首先是bilibili的播放器。
bilibili的播放器主要有兩個,一個內站播放器
https://static-s.bilibili.tv/play.swf?cid={cid}aid={aid}
另一個是外站播放器
http://static.hdslb.com/miniloader.swf?aid={aid}pid={pid}

其中aid就是article id的意思,或者說就是視頻的av號;
而pid是page id的意思,也就是說視頻的第幾個分頁;
而cid是chat id的意思,每個chat id對應一組彈幕池和。

然後我們先說第一個內站的播放器。播放器要播放視頻顯然要先找到視頻的內容的地址,這是我們最為關心的。
無論你是靠反編譯還是截取網路數據包,都可以看到這個播放器訪問了
http://interface.bilibili.cn/playurl?cid={cid}
以獲取視頻內容的地址,然後載入這些視頻並播放。

我們再看後面那個外站播放器。參數裡面沒有cid,那他是怎麼載入視頻內容的地址的呢?
如果你再用同樣的方法進行分析,你會發現他實際上還是訪問了上面說到的那個地址。
那他是怎麼獲取cid的呢?他獲取cid是通過
http://api.bilibili.cn/view?type=jsonid={aid}......
的一個鏈接獲取到的。

所以到現在我們基本可以明白bilibili視頻的播放,主要依賴於cid和上面提到的那個playurl的鏈接。

----

然後我們要討論的問題是關於手機客戶端的了。

眾所周知地,那些其他視頻網站的播放器折騰半天也只是在網頁上,而手機客戶端上看來這些視頻和其他的別無兩樣。
而分析數據包可以輕鬆地知道手機客戶端訪問的還是上面提到的那個playurl的鏈接。

最後我們回到問題本身。

----

所以問題就簡化為了,只要找到最上面提到的內站播放器需要的cid,那麼就可以用那個播放器播放視頻了。
於是問題變成了如何查找cid。

之前我們說過了,cid被用來表示某個視頻對應那組彈幕池。所以只要有彈幕的視頻就肯定有一個cid。
事實上,那些其他視頻網站的播放器的視頻也需要一個cid才能載入彈幕。所以我們可以輕鬆地從給flash的參數裡面找到cid。

當然,除了這個方法外,還有其他很多方法,比如:

通過api獲取:請參考http://docs.bilibili.cn/wiki/API.view
通過下載彈幕頁面的鏈接獲取:http://www.bilibili.tv/ass/{aid}.html(下載彈幕頁面已死)
通過iOS用網頁端介面獲取:http://www.bilibili.tv/html5?aid={aid}page={pid} (掛掉過一段時間,現在又恢復了)

當然,還有一些腳本是訪問了腳本作者搭建的伺服器以獲取cid。只有你可以放心該腳本的行為時使用這樣的腳本。

然後只要把flash換成上面說的那個內站播放器的就好了。

---

但是有些視頻是不能替換的,這些視頻一般都是因為在playurl那一步無法獲取視頻的內容所導致的。
所以這導致的結果就是,一般來說,某站點的視頻都是轉天轉投新浪後才可以看的,不過最近似乎轉投視頻源從sina變成local了,別問我為什麼。

---

最後是一些替換之後的善後工作。在載入
http://static.hdslb.com/js/page.arc.js
腳本時,會根據當前是不是原生播放器而做一些事情,所以替換後需要再手工執行相應的函數。


亮點自尋,有這樣精益求精的精神,黑科技算的了什麼。


1. B站自己的flash彈幕播放器是後台直接調用別的網站的視頻的,也就是用了別人帶寬,沒放別人廣告。這個播放器比較穩定了。

2. 百度樂視現在和B站達成協議,用了聯合開發的flash播放器,可以放廣告也可以發彈幕。這個播放器是放在百度樂視那邊的,目前還不穩定,經常崩潰和load不出。

3. B站還有自己的手機用播放器,沒有了flash的保護,是必須直接拿到視頻地址才能播放的,用1這種播放器的視頻很容易解決,用了2這種的視頻,只有用B站自己的伺服器存視頻,或者直接調用視頻地址。

4. 手機可以直接拿到視頻地址,那麼破解一下看看是怎麼拿到的,然後做個js腳本模擬手機拿到這個地址,然後和B站自己的flash彈幕播放器組合一下,這就是黑科技了。
實際上一般情況下,搞到cid,傳給B站自己的flash彈幕播放器,就可以了。現在看到的黑科技基本都是這樣的。

參考:
bilibili(嗶哩嗶哩)引用新浪視頻源,對於新浪有什麼益處,為何會被新浪默許?


JS腳本,不算什麼黑科技吧?


推薦閱讀:

"辦公室小野"的視頻在油管上真的火了嗎?
網上流傳的「 iPhone 5 官方宣傳廣告視頻」是真的嗎?
如何製作一期街頭採訪視頻?

TAG:視頻 | 優酷 | 視頻網站 | 嗶哩嗶哩 | 優酷土豆YoukuTudouInc |