網址:api
https://api.spapi.cn
在Network標籤頁中查看請求,能夠看到有連續的兩次POST請求第一次POST請求的參數:參數爲B站視頻連接、時間戳、一個加密參數sign
響應爲一個url,應該是指加密後的B站視頻連接:第二次POST請求的參數:參數爲第一次請求的響應url、時間戳、和第一次不一樣的加密參數sign
,username
和otype
不用管,都是固定的。響應爲加密的image
和video
地址ide
在sources中沒有查找到sign
的信息,在源碼中也沒有查找到,因而選擇加一個XHR斷點
(從Initiator中找更快)。而後就找到這個jiexi
函數了:第一個sign
是這樣生成的:var sign = captcha(timestamp + url + strings);
第二個sign
是這樣生成的:var sign = captcha(timestamp + key + url);
captcha
函數在另外一個JS文件中定義,可是這個JS文件也加了混淆,打不動,可是注意到sign
恆爲32位,就容易猜到它是一個md5加密
。隨便找了一個在線加密的網站驗證了一下,果真沒錯。這就叫化勁,四兩撥千斤。函數
解密獲得視頻地址:hex2bin
是將十六進制字符串轉換爲二進制字符的函數,把對應的函數找出來便可。網站
這個網站有一個坑,就是jiexi函數中的key是寫死在JS文件中的,可是過一段時間後,這個值又會發生變化,因此用起來是不太方便的。並且這個網站生成的視頻質量比較低,我也就沒有興趣繼續搞他了。並且這個網站有點不友好,源碼中能看到這麼一個函數:加密