今日头条最新视频解析方法

主要参考

  若是小伙伴们想知道视频的解析规则的话,能够看下下面这篇博客,只不过该博客举的例子是用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

源码地址

精仿今日头条

相关文章
相关标签/搜索