本文针对西瓜视频下载,意在学习分析过程,如有侵权请随时联系
1、获取video_id
简单的办法可以通过selenium加载网页获取video_id,但不是我们想要的,但app又没有video_id的获得,偶然的一次机会找到个方法就是在手机端的预览器搜索西瓜视频
其中的接口可以直接找到我们想要的video_id
2、获取视频mp4文件地址
在web端点击视频进入相应视频界面,分析抓包发现一个可疑的get请求,其中携带了我们获取到的video_id
其中部分返回又有可疑的信息main_url,看起来像一个base64加密后的字符串,带着疑问我们找个base64解码的网站,去解码一下,嗯!果然!解码出来mp4地址了
"video_1": {
"definition": "360p",
"vtype": "mp4",
"vwidth": 640,
"vheight": 360,
"bitrate": 355694,
"size": 18189324,
"quality": "normal",
"codec_type": "h264",
"logo_type": "xigua",
"encrypt": false,
"file_hash": "37c7a19b8572d1d2f28e90690f4e020b",
"file_id": "a842f137ec9f41d39b6bb81f28ef0b1d",
"main_url": "aHR0cDovL3Y2LWRlZmF1bHQuaXhpZ3VhLmNvbS8xNTE4ZGRmOGYwYWJkODM2ODlmMGU1NDE0YWZiZTE4OC81ZjRiMjg1OS92aWRlby90b3MvaHhzeS90b3MtaHhzeS12ZS0yNi84N2MxYTljNWQ5ZDg0ZjdiOWIxYTQxODY1NDg2ZDQwNy8/YT0zNTg2JmJyPTEwNDEmYnQ9MzQ3JmNyPTAmY3M9MCZjdj0xJmRyPTAmZHM9MSZlcj0mbD0yMDIwMDgzMDExMTA0MDAxMDAxNjA0MTE2NjBCNTkzRjkzJmxyPSZtaW1lX3R5cGU9dmlkZW9fbXA0JnFzPTAmcmM9TXp0eGJtcHVjMmsxY1RNek9tUXpNMEFwTkROb05UUmxPVHhuTnp4b05tazNaR2N1YVhOdFlYQmxhMTVmTFMwMExpOXpjMkZmWXpWak5WOWZNQzVqWURRdUx6VTZZdyUzRCUzRCZ2bD0mdnI9",
"backup_url_1": "aHR0cDovL3Y5LWRlZmF1bHQuaXhpZ3VhLmNvbS8wZGJiZWIzODI2NjY0NjFjZTc5NjU2ZjgwYmRlNjQxMS81ZjRiMjg1OS92aWRlby90b3MvaHhzeS90b3MtaHhzeS12ZS0yNi84N2MxYTljNWQ5ZDg0ZjdiOWIxYTQxODY1NDg2ZDQwNy8/YT0zNTg2JmJyPTEwNDEmYnQ9MzQ3JmNyPTAmY3M9MCZjdj0xJmRyPTAmZHM9MSZlcj0mbD0yMDIwMDgzMDExMTA0MDAxMDAxNjA0MTE2NjBCNTkzRjkzJmxyPSZtaW1lX3R5cGU9dmlkZW9fbXA0JnFzPTAmcmM9TXp0eGJtcHVjMmsxY1RNek9tUXpNMEFwTkROb05UUmxPVHhuTnp4b05tazNaR2N1YVhOdFlYQmxhMTVmTFMwMExpOXpjMkZmWXpWak5WOWZNQzVqWURRdUx6VTZZdyUzRCUzRCZ2bD0mdnI9",
"check_info": "",
"p2p_verify_url": "aHR0cDovL3Y2LWRlZmF1bHQuaXhpZ3VhLmNvbS9jN2U2OTk5NTZmYzk2ZGM0MmI5MjQ4YTAwYzFkMjRkMC81ZjRiMjg1OS92aWRlby90b3MvaHhzeS90b3MtaHhzeS12ZS0yNi9kMTI2M2U0ODcxYzc0ZjhhODhlYTQ3Mzc4Yjk1NjI1OC8=",
"user_video_proxy": 1,
"socket_buffer": 8002980,
"preload_size": 327680,
"preload_interval": 60,
"preload_min_step": 5,
"preload_max_step": 10,
"spade_a": "",
"kid": "",
"barrage_mask_url": "",
"barrage_mask_offset": ""
}
步骤大体就是这样:从接口获取video_id,然后去请求获取main_url,然后进行base64解码,就是我们想要的信息了。
但是在获取main_url这个链接中,有几个参数为校验参数,这些参数和原来web接口的加密方式一样。
1、r--->为随机产生的16位数字串
2、s--->通过zlib对url进行一个压缩得到的数据,代码为
str(zlib.crc32(url.encode()))
3、_---->为一个时间戳
我们获取到mp4文件的url后就可以进行视频的下载了,代码就不贴出来了,有兴趣的可以自己动手尝试一下。