首页 > 编程知识 正文

西瓜视频解析api,西瓜视频在线解析工具

时间:2023-05-05 11:43:00 阅读:188949 作者:2836

var Q_qun = '695623459';console.log("Welcome you!");

这里的视频解析,目的是根据用户在某平台对某一个视频的分享信息,(如一个视频链接),拿到该视频的源地址。



1.解析链接来源

西瓜视频解析的链接来源,可以来自今日头条App,也可以来自于西瓜视频网页或者西瓜视频App。

来源举例链接域名今日头条Apphttps://m.toutiaoimg.com/a6773817552297525771/?app=news_article&is_hit_share_recommend=0m.toutiaoimg.com西瓜视频Apphttps://m.ixigua.com/group/6713036790858531331/?app=video_article&timestamp=1577176945&utm_source=copy_link&utm_medium=android&utm_campaign=client_sharem.ixigua.com西瓜视频网页https://www.ixigua.com/i6697675511759372808/www.ixigua.com

当拿到一个待解析链接时,可以根据上面的表格明确链接的来源。但是,无论是哪个来源,他们均有一个共同参数,那就是西瓜视频的 itemId。同时,不同来源的链接均可以换算为西瓜视频网页链接。如下:

今日头条App分享链接 https://m.toutiaoimg.com/a6773817552297525771/?app=news_article&is_hit_share_recommend=0 其中: itemId = '6773817552297525771' 西瓜视频App分享链接 https://m.ixigua.com/group/6713036790858531331/?app=video_article&timestamp=1577176945&utm_source=copy_link&utm_medium=android&utm_campaign=client_share 其中: itemId = '6713036790858531331' 西瓜视频网页链接 https://www.ixigua.com/i6697675511759372808/ 其中: itemId = '6697675511759372808'

最终,可以将分享自不同平台的视频统一为一个西瓜视频网页链接,如下:

webUrl = 'https://www.ixigua.com/i' + itemId

2.解析接口及签名算法

接口地址:

GET http://i.snssdk.com/video/urls/v/1/toutiao/mp4/{vid}

接口参数列表

参数举例说明vidv02004020000bmg1iqcthbib5vi1gcjg和itemId以一对应r100000000100000000到999999999的随机数nobase64true固定位trues3103163236签名:随机数r与vid作为签名算法的输入

请求 Header 必要参数

参数示例说明user-agentMozilla/5.0 (X11; Linux x86_64) AppleWebKit/**********无固定要求,一般使用PC端UA访问即可cookiexiguavideopcwebid=**********真实cookie

签名算法(伪代码):

# 输入1:vid(视频vid)# 输入2:r(随机数)# 输出:请求签名sdef 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=ssdxtd0eWVld3Q0cDMzNTczM0ApZWg6PGY7Mzs5N2hnNGQzPGdnZGYyZmVgZmRfLS0tLS9zczRhLTAtNTQtMzYwYDMuNmM6Yw%3D%3D","backup_url_1": "http://v6-default.ixigua.com/39f7e9ff0fa218105b70d40a02a581ea/5e01eced/video/m/22063ff749ecede4ac9bd0b67442bce2b441163cbb4d00001cdf11df7004/","check_info": "","p2p_verify_url": "http://v3-default.ixigua.com/ee57deca950514556401a392c7d9e83c/5e01eced/video/m/220f0aa452d8a944c088ba8b41076b6d6f91163cd8fe00000cffbed16662/","user_video_proxy": 1,"socket_buffer": 9774180,"preload_size": 327680,"preload_interval": 60,"preload_min_step": 5,"preload_max_step": 10,"spade_a": ""}},"dynamic_video": null},"message": "success","code": 0,"total": 1}

关键参数:

参数说明data.poster_url封面data.video_list.video_1.main_url视频地址

3.视频vid获取

在第一小节,解析链接来源中提到,各个不同来源的链接都可以换算为西瓜视频网页的链接,也就意味着,我们可以直接将所有不同来源的链接同等对待
所以,我们着手分析西瓜视频网页端的 vid 获取。如下图:

在网页源码中,我们发现,在一段js代码中,定义了vid的值。综上,请求接口所需参数均已备齐了。



4.源码 import requestsimport jsonimport randomimport zlibdef praseXigua(url): pc_headers = {'user-agent': "Mozilla/****", 'cookie': 'xiguavideopcwebid=****'} # 今日头条App分享来源处理 if "toutiaoimg.cn" in url: itemId= url.split('/')[4] url = 'https://www.ixigua.com/i' + itemId+ '/' # 西瓜视频App分享来源处理 if "m.ixigua.com" in url: itemId= url.split('/')[4] url = 'https://www.ixigua.com/i' + itemId+ '/' responseHtml = requests.get(url, headers=pc_headers, allow_redirects=True).content.decode('UTF-8') # 获取vid vid = responseHtml.split('"vid":"')[1].split('","')[0] # 生成签名 parseUrl = "/video/urls/v/1/toutiao/mp4/" + vid + "?r=" + rand_num crc_code = str(zlib.crc32(parseUrl.encode('utf8'))) # 请求接口 mResponse = requests.get("http://i.snssdk.com" + parseUrl + "&nobase64=true&s=" + crc_code, headers=pc_headers).content.decode('UTF-8') mJson = json.loads(mResponse) return mJson['data']['video_list']['video_1']['main_url']

下载不成功,请查看最新破解方法 总结:

综上,西瓜视频的解析分为3步

将不同来源链接转化为西瓜视频网页链接模拟PC端请求该视频网页,获取视频vid生成签名并发起请求,获得视频源地址

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。