登录 立即注册
安币:

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

[复制链接]
来自: chaychan 分类: Android精品源码 上传时间: 2018-12-5 11:36:02
Tag:
立即下载
收藏

项目介绍:

主要参考

  如果小伙伴们想知道视频的解析规则的话,可以看下下面这篇博客,只不过该博客举的例子是用Python,而且关于取video的id的方法已经变了,所以没办法正确解析视频了。

  参考博客

视频解析

一、读取html内容,获取videoId

这里我们通过读取html的内容,如:

http://toutiao.com/group/6631022373556453896/

通过查看网站源码我们可以看到,Js中包含有videoId

1543977391(1).jpg

如何获取videoId的值呢,这里我们通过正则匹配,匹配出页面中的videoId,代码如下

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

切记videoId:后面带有一个空格,如果少了则匹配不到,笔者我也因为这个郁闷了很久,最后发现原来是少了一个空格。

二、构造r和s参数

参数r是一个随机数,多少位数都可以,这里我们生成一个16位的随机数:

    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=随机数

如上面例子,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参数,我们就可以发起获取视频真正地址的请求了,请求的方式为:

http://i.snssdk.com/video/urls/v/1/toutiao/mp4/videoid?r=随机数&s=CRC32密文

上面例子构建的链接为:

http://i.snssdk.com/video/urls/v/1/toutiao/mp4/v02004040000bg31ot72gddgigkg7kvg?r=7805700526977788&s=38456043

请求获取到的json如下图:

1543978607(1).jpg

  这里有一个video_list节点,里面会有video_1、video_2、video_3,这里演示的里面只有一个video_1,其中video节点中的main_url就是视频的真实地址,只不过是通过base64加密过,这里我们需要对其进行解密:

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

解密后,获取到视频的真实地址为:

http://v6-tt.ixigua.com/video/m/22043d51290e6704a048ae8f386f721975f11610ea5d000060fe86e532c7/?AWSAccessKeyId=qh0h9TdcEMoS2oPj7aKX&Expires=1543982822&Signature=GVgJXs4mzAIGAXqr6VgaoORAat8%3D&rc=am5qampnNXc0ajMzNzczM0ApQHRAbzw4OTg6MzUzMzgzNDM0NDVvQGgzdSlAZjN1KWRzcmd5a3VyZ3lybHh3ZjUzQHM0aGZhZDRsMF8tLS0tL3NzLW8jbyMyMjIuMzItLjIyLjIvNS06I28jOmEtcSM6YHZpXGJmK2BeYmYrXnFsOiMuL14%3D

至此,解析今日头条的方法已经分析完毕,如果大家想要查看源码的话,可以参考我的项目(文章末尾处),同时也希望如果帮到你的话,请帮我star下,多谢了。

具体的代码在里面解析视频那块,即VideoPathDecoder类的decodePath方法中:

1543979359(1).jpg

源码地址

精仿今日头条

相关源码推荐:

我来说两句
所有评论(12)
ff12345 7 天前
楼主是好人,回个帖会有安币吗?
回复
Yf8546 7 天前
支持,感谢,祝巴士越来越好~
回复
Mr_Zhao 7 天前
安卓巴士是个不错的网站,我来顶个贴~
回复
Frank_z 7 天前
感谢分享,安卓巴士有你更精彩:lol
回复
应用安卓 7 天前
安卓巴士是个不错的网站,我来顶个贴~
回复
Rf2698 7 天前
感觉楼主很用心,辛苦啦~
回复
孙林 7 天前
学习学习!
回复
12下一页
上传代码
查看数:403 收藏数:6 下载数:2 点赞数:1
状态:已购或VIP 售价:15(原价:15)金钱 下载权限:初级码农 
代码贡献英雄榜
用户名 下载数
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,769657487

如何获得代码达人称号

如何成为签约作者

联系我们
关闭
合作电话:
15618560077
Email:
805941275@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 下载客户端|申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表