主要参考

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

  参考博客

视频解析

一、读取html内容,获取videoId

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

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

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

如何获取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如下图:

  这里有一个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方法中:

源码地址

精仿今日头条

今日头条最新视频解析方法相关推荐

  1. 今日头条短视频搬运方法,批量处理去重消重去水印去logo软件

    软件就像一把菜刀,一个工具,看主人怎么用,厨师拿去就能做出美味佳肴,你要拿去砍石头,还想把石头当土豆一样切成丝,我只能说你该转换你的思想了. 祥瑞自媒体 16:19:20 恩,或者我再帮你处理一遍? ...

  2. 头条号发视频一直重复,求消重方法 今日头条发视频重复,怎么消重去重伪原创...

    视频消重原理批量处理去重消重去水印去logo软件 如何给西瓜视频消重批量处理去重消重去水印去logo软件 头条号视频重复修改md5批量处理去重消重去水印去logo软件 今日头条短视频搬运方法,批量处理 ...

  3. Python3爬取今日头条文章视频数据,完美解决as、cp、_signature的加密方法(2020-6-29版)

    前言 在这里我就不再一一介绍每个步骤的具体操作了,因为在爬取老版今日头条数据的时候都已经讲的非常清楚了,所以在这里我只会在重点上讲述这个是这么实现的,如果想要看具体步骤请先去看我今日头条的文章内容,里 ...

  4. 盘点抖音及今日头条的优化推广方法有哪些?

    相信现在大家除了做百度的优化推广外,肯定格外注重抖音跟今日头条的优化推广方法吧,或者说抖音跟头条的优化推广重要性还排在百度之前!以目前官方公布的数据来说,抖音跟头条的日用户活跃,日有用户搜索量已经同等 ...

  5. 获取“今日头条”西瓜视频

    PC端获取今日头条西瓜视频 测试浏览器:Google || 火狐 Google获取视频方法 打开需要保存的视频当前播放页面[点击播放] F12 大法获取视频链接地址[复制下来:Ctrl+C] 打开一个 ...

  6. 这3个今日头条常见的赚钱方法,掌握后,月入过万都不难

    最近我准备学点营销知识.在研究今日头条的时候,发现很多企业.政府的官方号都已经入驻了头条,看来今日头条已经成了一个营销宣传必备的渠道了. 这3个今日头条常见的赚钱方法,掌握后,月入过万都不难 另外,我 ...

  7. python分析并爬取今日头条的视频链接

    如题,分析并爬取今日头条的视频链接 代码仅供交流使用 一.分析 1.进入现在的官网http://www.365yg.com/,然后通过抓包发现首页数据的走向,一般来说首页数据放在网页中,要不然就是用j ...

  8. 趣头条今日头条的视频何谓伪原创

             趣头条今日头条的视频何谓伪原创       关注祥瑞自媒体,了解更多视频搬运干货!          如果你想在今天的头条新闻中赚更多钱,你必须努力打开原版.,在正常情况下,您可以在 ...

  9. 《今日头条中视频搬运项目》3-5天就可以产生利润【教程目录】

    沉睡者IT:<今日头条中视频搬运项目>只需要一部手机3-5天就可以产生利润 培训课程视频内容介绍: 今日头条多久产生利润:一般情况3-5天就可以,大概就是这个范围,也有很多一天就开始出货的 ...

  10. 今日头条竖屏视频没有收益吗,今日头条竖版视频没收益怎么回事

    今天给大家分享五点我们新手做自媒体最容易犯的错误,希望可以让你们少走些弯路. 第一:开通自己的头条号 我们一定要去开通自己的一个头条号,成为一个创作者.有的人,他只是下载了一个今日头条app,并没有去 ...

最新文章

  1. ICMP重定向(ICMP Redirect)
  2. ubuntu9.10 qq自动退出修复
  3. JMS学习(六)--提高非持久订阅者的可靠性 以及 订阅恢复策略
  4. Elastic job,任务状态:分片待调整
  5. java做一个客房管理系统定制_管理皮孩子很难?来,教你一个java设计简单的学生管理系统...
  6. Express入门 模板引擎hbs 服务端渲染
  7. 一、 zedboardubuntu 14.04 的前期准备(定期更新)
  8. JavaSE复习_8 泛型程序设计
  9. 温度控制直流电动机的c语言,温度控制直流电动机转速系统设计报告
  10. PostgreSQL内核扩展之 - ElasticSearch同步插件
  11. python notebook 在加载ipynb文件 报错NotJSONError(‘Notebook does not appear to be JSON: \‘\\ufeff{“nbformat“
  12. 从苏宁电器到卡巴斯基第34篇:番外篇——晒一晒病毒分析师的桌面(上)
  13. 取消计算机用户密码页面,取消开机密码 Windows电脑开机登录界面取消方法-电脑教程...
  14. Maven知识补充(项目模型变量,Maven属性,依赖项的范围,查找公共存储库的依赖项等)
  15. EXCEL学会两个函数你能打败90%的人,countifs和vlookup
  16. 【B类】BI商业智能、大数据、Mysql、等系列课程集
  17. 再谈OT算法的协同文档制作的底层基础架构记录
  18. 浏览器怎么显示php文件夹,如何使用浏览器打开php文件?
  19. ImageMagick将多张图片拼接成一张图片_介绍一款全功能的图片查看编辑软件
  20. linux内核源码分析之per-CPU

热门文章

  1. android 大牛播放组件,大牛播放器安卓版_大牛播放器好不好用
  2. 新手学易语言的请看这里!!
  3. canon mp 258清零方法
  4. 《模式分类》第二版 第二章课后编程题
  5. 自制操作系统软盘镜像的创建过程
  6. 尚硅谷 谷粒学院 毕业设计 在线教育 部署文档
  7. c语言敏感词屏蔽编程题,C#敏感词过滤实现方法
  8. 使用JSP做一个小小的项目(一)
  9. SPSS倾向评分匹配(PSM)插件安装与资源分享
  10. ibm服务器aix系统查看cpu,IBM AIX系统硬件信息查看命令(shell脚本)