西瓜视频解析原理及源码,获得视频源地址

本文的视频解析,目的是根据用户在某平台对某一个视频的分享信息,(如一个视频链接),拿到该视频的源地址 。不好的地方望多多提议,谢谢!
1、解析链接来源
西瓜视频解析的链接来源,可以来自今日头条App,也可以来自于西瓜视频网页或者西瓜视频App 。
来源
举例
链接域名
X日头条App
https://m.toutiaoimg.com/a6773817552297525771/?app=news_article&is_hit_share_recommend=0
m.toutiaoimg.com
西瓜视频App
https://m.ixigua.com/group/6713036790858531331/?app=video_article×tamp=1577176945&utm_source=copy_link&utm_medium=Android&utm_campaign=client_share
m.ixigua.com
西瓜视频网页
https://www.ixigua.com/i6697675511759372808/
www.ixigua.com
当拿到一个待解析链接时,可以根据上面的表格明确链接的来源 。但是,无论是哪个来源,他们均有一个共同参数,那就是西瓜视频的 itemId 。同时,不同来源的链接均可以换算为西瓜视频网页链接 。如下:
2、今日头条APP分享链接
https://m.toutiaoimg.com/a6773817552297525771/?app=news_article&is_hit_share_recommend=0
其中
itemId = '6773817552297525771'itemId = '6773817552297525771'
3、西瓜视频APP分享链接
https://m.ixigua.com/group/6713036790858531331/?app=video_article×tamp=1577176945&utm_source=copy_link&utm_medium=android&utm_campaign=client_share
其中
itemId = '6713036790858531331'
最终,可以将分享自不同平台的视频统一为一个西瓜视频网页链接,如下:
webUrl = 'https://www.ixigua.com/i' + itemId
4、解析接口及签名算法
接口地址:
GET http://i.snssdk.com/video/urls/v/1/toutiao/mp4/{vid}
接口参数列表
参数
举例
说明
vid
v02004020000bmg1iqcthbib5vi1gcjg
和itemId以一对应
r
100000000
100000000到999999999的随机数
nobase64
true
固定位true
s
3103163236
签名:随机数r与vid作为签名算法的输入
请求 Header 必要参数
参数
示例
说明
user-agent
Mozilla/5.0 (X11; linux x86_64) AppleWebKit/**********
无固定要求,一般使用PC端UA访问即可
cookie
xiguavideopcwebid=**********
真实cookie
签名算法(伪代码):
# 输入1:vid(视频vid)
# 输入2:r(随机数)
# 输出:请求签名s
def sign(vid, r):
parseUrl = "/video/urls/v/1/toutiao/mp4/" + vid + "?r=" + r
s = crc32(parseUrl )
return s
看明白了吗?签名算法已知,获取到视频vid并给一个随机数,就可以获得该次请求的签名了 。西瓜视频的服务端根据请求参数和签名验证请求是否合法 。
请求响应示例
{
【西瓜视频解析原理及源码,获得视频源地址】"data": {
"status": 10,
"user_id": "toutiao",
"video_id": "v02004020000bmg1iqcthbib5vi1gcjg",
"validate": "",
"enable_ssl": true,
"poster_url": "http://sf1-ttcdn-tos.pstatp.com/obj/tos-cn-p-0000/1881ffd026234850ad4bf69aa5c38835",
"video_duration": 414.13,
"media_type": "video",
"auto_definition": "360p",
"video_list": {
"video_1": {
"definition": "480p",
"vtype": "mp4",
"vwidth": 854,
"vheight": 480,
"bitrate": 434409,
"size": 22487645,
"quality": "normal",
"codec_type": "h264",
"logo_type": "xigua_share",
"encrypt": false,
"file_hash": "bd5f78b91285cfe60b98b3be51c487f1",
"file_id": "9f09a116dce34966800788c09370edb7",
"main_url": "http://v3-default.ixigua.com/e104c4ca4fb27fa3040c317de43b1380/5e01eced/video/m/22063ff749ecede4ac9bd0b67442bce2b441163cbb4d00001cdf11df7004/?a=2012u0026br=848u0026bt=424u0026cr=0u0026cs=0u0026dr=0u0026ds=2u0026er=u0026l=201912241741190100140481451111CA14u0026lr=u0026qs=0u0026rc=amY0eWVld3Q0cDMzNTczM0ApZWg6PGY7Mzs5N2hnNGQzPGdnZGYyZmVgZmRfLS0tLS9zczRhLTAtNTQtMzYwYDMuNmM6Yw%3D%3D",
"backup_url_1": "http://v6-default.ixigua.com/39f7e9ff0fa218105b70d40a02a581ea/5e01eced/video/m/22063ff749ecede4ac9bd0b67442bce2b441163cbb4d00001cdf11df7004/",
"check_info": "",


推荐阅读