今日頭條最新視頻解析方法

主要參考

  若是小夥伴們想知道視頻的解析規則的話,能夠看下下面這篇博客,只不過該博客舉的例子是用Python,並且關於取video的id的方法已經變了,因此沒辦法正確解析視頻了。html

  參考博客git

視頻解析

1、讀取html內容,獲取videoId

這裏咱們經過讀取html的內容,如:github

toutiao.com/group/66310…json

經過查看網站源碼咱們能夠看到,Js中包含有videoIdbash

1543977391(1).jpg

如何獲取videoId的值呢,這裏咱們經過正則匹配,匹配出頁面中的videoId,代碼以下app

Pattern pattern = Pattern.compile("videoId: '(.+)'");
 Matcher matcher = pattern.matcher(response);
 if (matcher.find()) {
    String videoId = matcher.group(1);
    ...
 }
複製代碼

切記videoId:後面帶有一個空格,若是少了則匹配不到,筆者我也由於這個鬱悶了好久,最後發現原來是少了一個空格。dom

2、構造r和s參數

參數r是一個隨機數,多少位數均可以,這裏咱們生成一個16位的隨機數:ide

String r = getRandom(); //7805700526977788
   
    //生成16位的隨機數
    private String getRandom() {
        Random random = new Random();
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < 16; i++) {
            result.append(random.nextInt(10));
        }
        return result.toString();
    }
複製代碼

參數s是經過CRC32加密過的,加密的原文規則爲:網站

/video/urls/v/1/toutiao/mp4/videoid?r=隨機數ui

如上面例子,videoId 爲 v02004040000bg31ot72gddgigkg7kvg

r 爲 7805700526977788

那麼加密的原文爲:

/video/urls/v/1/toutiao/mp4/v02004040000bg31ot72gddgigkg7kvg?r=7805700526977788

參數s的生成代碼以下:

CRC32 crc32 = new CRC32();
 String s = String.format(ApiConstant.URL_VIDEO, videoId, r);
 //進行crc32加密。
 crc32.update(s.getBytes());
 String crcString = crc32.getValue() + ""; //38456043
複製代碼
public static final String URL_VIDEO="/video/urls/v/1/toutiao/mp4/%s?r=%s";
複製代碼

發起獲取視頻地址的請求

有了上面的videoId以及r和s參數,咱們就能夠發起獲取視頻真正地址的請求了,請求的方式爲:

i.snssdk.com/video/urls/…

上面例子構建的連接爲:

i.snssdk.com/video/urls/…

請求獲取到的json以下圖:

1543978607(1).jpg

  這裏有一個video_list節點,裏面會有video_一、video_二、video_3,這裏演示的裏面只有一個video_1,其中video節點中的main_url就是視頻的真實地址,只不過是經過base64加密過,這裏咱們須要對其進行解密:

private String getRealPath(String base64) {
    return new String(Base64.decode(base64.getBytes(), Base64.DEFAULT));
}
複製代碼

解密後,獲取到視頻的真實地址爲:

v6-tt.ixigua.com/video/m/220…

至此,解析今日頭條的方法已經分析完畢,若是你們想要查看源碼的話,能夠參考個人項目(文章末尾處),同時也但願若是幫到你的話,請幫我star下,多謝了。

具體的代碼在裏面解析視頻那塊,即VideoPathDecoder類的decodePath方法中:

1543979359(1).jpg

源碼地址

精仿今日頭條

相關文章
相關標籤/搜索