开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 4586|回复: 6
收起左侧

今日头条视频地址解析 分析r和S值的由来

[复制链接]
结帖率:0% (0/1)
发表于 2017-8-17 13:39:16 | 显示全部楼层 |阅读模式   安徽省芜湖市
今日头条是目前来说发展比较迅速的自媒体之一,它因丰富的产品知识给大家带来了很多信息,因为视频能充分调动人的 视听觉等各方面,因此可以让人们更好的了解信息所要表达的内容。那么对于今日头条上的视频是否可以解析呢?今日头条的视频地址解析方法有哪些呢?这里点量软件在网上为的大家转载了一份,希望对你有帮助,如果想了解更多,可以给我留言。
以今日头条视频播放页URL
  1. http://www.toutiao.com/a6296462662335201793/
复制代码

为例,来说说是如何得到视频的真实地址的。
在Chrome浏览器中打开上面的链接,然后审查播放器区域的元素,发现是这样的:
  1. <video id="vjs_video_3_html5_api" class="vjs-tech" preload="auto" autoplay="" src="http://v6.pstatp.com/video/c/c62f4d4320ea43469b490e54240653ab/?Signature=D2cYsGzKaEXraZQnOf72xgJ94%2Bs%3D&Expires=1469172376&KSSAccessKeyId=qh0h9TdcEMrm1VlR2ad/">
  2. <source type="video/mp4" src="http://v6.pstatp.com/video/c/c62f4d4320ea43469b490e54240653ab/?Signature=D2cYsGzKaEXraZQnOf72xgJ94%2Bs%3D&Expires=1469172376&KSSAccessKeyId=qh0h9TdcEMrm1VlR2ad/">
  3. </video>
复制代码
原来是使用了HTML5的video标签,该标签的src属性值就是视频的真实地址。是不是很简单?如果我们想写个脚本来自动解析视频的真实地址,会发现情况不一样,当我们把播放页下载下来,并且尝试提取video元素的时候,发现下载下来的播放页中根本就没有video元素。这说明video元素可能是js脚本动态生成的,该想想其它办法了。
通过观察加载播放页页面时的网络请求,我们发现如下相关的请求:
  1. http://v7.pstatp.com/b97adb57aaa351e485ed69c5e4852211/5791c279/video/c/c62f4d4320ea43469b490e54240653ab/
  2. http://i.snssdk.com/video/urls/v/1/toutiao/mp4/9583cca5fceb4c6b9ca749c214fd1f90?r=18723666135963302&s=3807690062&callback=tt_playerzfndr
复制代码
其中,第1个请求就是视频真实地址,第2个请求返回的是一个JSON字符串,内容如下:
  1. {
  2.   "code": 0,
  3.   "message": "success",
  4.   "total": 3,
  5.   "data": {
  6.     "status": 10,
  7.     "video_duration": 0,
  8.     "video_id": "9583cca5fceb4c6b9ca749c214fd1f90",
  9.     "user_id": "toutiao",
  10.     "video_list": {
  11.       "video_3": {
  12.         "definition": "720p",
  13.         "vtype": "mp4",
  14.         "main_url": "aHR0cDovL3Y3LnBzdGF0cC5jb20vZmJiZmE2Yjc4ZjM4MThhM2M0OTVhMmRkYjAyOWY5NTAvNTc5\nMWMzODAvdmlkZW8vYy8zNDMwNzcxZjMyNmY0ZDUxOTRiNTYyMzdhNmEyMzFmYy8=\n",
  15.         "vwidth": 720,
  16.         "backup_url_1": "aHR0cDovL3Y2LnBzdGF0cC5jb20vdmlkZW8vYy8zNDMwNzcxZjMyNmY0ZDUxOTRiNTYyMzdhNmEy\nMzFmYy8/U2lnbmF0dXJlPTMwd25YNHVBYzJ1JTJGdSUyRlNvNjhDM010U1VRVW8lM0QmRXhwaXJl\ncz0xNDY5MTc0MTYwJktTU0FjY2Vzc0tleUlkPXFoMGg5VGRjRU1ybTFWbFIyYWQv\n",
  17.         "bitrate": 0,
  18.         "vheight": 576,
  19.         "size": 0
  20.       },
  21.       "video_2": {
  22.         "definition": "480p",
  23.         "vtype": "mp4",
  24.         "main_url": "aHR0cDovL3Y0LnBzdGF0cC5jb20vM2ZiYTI0YzVhYzE1NGVlNmIxMGQ4ZTAyZThhNGQxZDMvNTc5\nMWMzODAvdmlkZW8vYy9jNjJmNGQ0MzIwZWE0MzQ2OWI0OTBlNTQyNDA2NTNhYi8=\n",
  25.         "vwidth": 600,
  26.         "backup_url_1": "aHR0cDovL3Y0LnBzdGF0cC5jb20vM2ZiYTI0YzVhYzE1NGVlNmIxMGQ4ZTAyZThhNGQxZDMvNTc5\nMWMzODAvdmlkZW8vYy9jNjJmNGQ0MzIwZWE0MzQ2OWI0OTBlNTQyNDA2NTNhYi8=\n",
  27.         "bitrate": 0,
  28.         "vheight": 480,
  29.         "size": 0
  30.       },
  31.       "video_1": {
  32.         "definition": "360p",
  33.         "vtype": "mp4",
  34.         "main_url": "aHR0cDovL3Y2LnBzdGF0cC5jb20vdmlkZW8vYy9iODgwZmI1YzM1NjE0NzJlOThlNGU0Y2U5N2My\nYzg5ZS8/U2lnbmF0dXJlPXBlTWhoNFdLcyUyRkNmRW9pYm4wTVNKUU5tR1lnJTNEJkV4cGlyZXM9\nMTQ2OTE3NDE2MCZLU1NBY2Nlc3NLZXlJZD1xaDBoOVRkY0VNcm0xVmxSMmFkLw==\n",
  35.         "vwidth": 450,
  36.         "backup_url_1": "aHR0cDovL3Y3LnBzdGF0cC5jb20vNjFhYTJlN2RlN2YxZTgzNGJiNjg3ZDZmMDZjZGFmNzMvNTc5\nMWMzODAvdmlkZW8vYy9iODgwZmI1YzM1NjE0NzJlOThlNGU0Y2U5N2MyYzg5ZS8=\n",
  37.         "bitrate": 0,
  38.         "vheight": 360,
  39.         "size": 0
  40.       }
  41.     }
  42.   }
  43. }
复制代码
看看JSON内容,可以看到共有3种清晰度视频,分别是超清、高清和标清。definition表示清晰度,main_url应该就是视频真实地址了。main_url的值看起来就是base64编码后的结果,用base64解码main_url,得到的就是视频真实地址。
那么接下来的问题就是探究上面的第2个请求
  1. http://i.snssdk.com/video/urls/v/1/toutiao/mp4/9583cca5fceb4c6b9ca749c214fd1f90?r=18723666135963302&s=3807690062&callback=tt_playerzfndr
复制代码

是如何构造的。
在用Chrome的开发者工具监视网络请求的时候可以看到该请求是js脚本发出的,该js脚本是
  1. http://s3.pstatp.com/tt_player/player/tt2-player.js?r=customer1
复制代码

把该js下载下来,prettify一下,使用你最爱的编辑器看看该js到底做了些什么。
通过研究该js脚本,发现请求
  1. http://i.snssdk.com/video/urls/v/1/toutiao/mp4/9583cca5fceb4c6b9ca749c214fd1f90?r=18723666135963302&s=3807690062&callback=tt_playerzfndr
复制代码
中的一些参数的含义如下:
  • 9583cca5fceb4c6b9ca749c214fd1f90:这是视频的唯一ID
  • 18723666135963302:这是一个随机数
  • 3807690062:这是CRC32校验值无符号右移0位
视频的唯一ID可以在播放页HTML源码中找到,即id为video的元素的tt-videoid属性值。
QQ图片20170817133834.png

评分

参与人数 1好评 +1 精币 +1 收起 理由
空丶城 + 1 + 1 CRC校验怎么算

查看全部评分


结帖率:63% (5/8)

签到天数: 10 天

发表于 2017-9-21 17:46:09 | 显示全部楼层   江苏省淮安市
CRC校验怎么算
回复 支持 反对

使用道具 举报

结帖率:85% (55/65)

签到天数: 3 天

发表于 2017-9-3 14:40:35 | 显示全部楼层   湖南省娄底市
上课学习
学习下怎么获取
回复 支持 反对

使用道具 举报

发表于 2017-9-2 12:00:12 | 显示全部楼层   湖北省孝感市
支持支持
回复 支持 反对

使用道具 举报

结帖率:75% (30/40)
发表于 2017-8-19 13:12:50 | 显示全部楼层   广东省广州市
终于找到这样的教程了
回复 支持 反对

使用道具 举报

发表于 2017-8-17 21:51:04 | 显示全部楼层   广西壮族自治区南宁市
棒棒哒!!支持
回复 支持 反对

使用道具 举报

结帖率:96% (85/89)
发表于 2017-8-17 15:15:53 | 显示全部楼层   安徽省合肥市
棒棒哒!!支持
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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