解析优酷视频笔记

1.打开浏览器, 打开fiddle在浏览器打开视频,这里以 https://v.youku.com/v_show/id_XMzIzODg2MzM3Mg==.html?spm=a2h0k.11417342.soresults.dtitle为例
等待一会我们在fiddler中可以看到
在这里插入图片描述
如上图中337那种就是一个又一个视频片段不过在fiddler中播放不了
可以保存到本地用播放器播放如下图所示
在这里插入图片描述
接下来我想知道这些链接从哪来
猜测有两种可能
1.从其他请求内容中获得
2.js生成

  1. 在浏览器中搜索视频连接部分
    697496285373F7197C3116BBD/03000A03005A0562EE55E04F43A49FF56BFEBF-347A-B269-65E4-BC053E2CA4A8.mp4.ts
    取337视频连接的部分在fiddler中搜索

在这里插入图片描述
找到了上面的那个m3u8文件
发现里面全是短视频连接
我开始转换目标, 想办法获取连接
https://pl-ali.youku.com/playlist/m3u8?vid=XMzIzODg2MzM3Mg&type=flv&ups_client_netip=ded120f5&utid=NG4DFb8TbTgCAd7RIPX8uQZd&ccode=0502&psid=ae841ae82971b9fecb83bbf25f1bccd5&app_ver=0.7.0&duration=960&expire=18000&drm_type=1&drm_device=7&ups_ts=1551663242&onOff=0&encr=0&ups_key=b0727b7cf65e954f10768fa9044ef08b

那么这个链接会不会也在其他文件中出现过哪
3. 我又开始在fiddler中搜索m3u8

在这里插入图片描述
发现有个json文件中存在m3u8文件链接和mp4个是的视频连接, 再次转换目标
4. 在这里插入图片描述
开始逆向这个json文件的请求
分析参数
在这里插入图片描述
在这里插入图片描述
先解析第一幅图中的参数, 发现只有sign是加密参数
在这里插入图片描述
发现该链接由youku-player生成
进入该js文件
在这里插入图片描述
发现sign是u
u又是s函数加密生成
发现 i.token 就是cookie _m_h5_tk 中的一部分
在这里插入图片描述
是图中的70cae7b068f1b88ae3aa00b129e05bc4
l是时间戳
a是appkey参数
n.data是第二幅图中的data
在控制台调用s()函数后发现s()函数是MD5加密
解析完data后就能生成sign签名参数, sign 参数很重要
5. 分析data参数
在这里插入图片描述
也就两个加密参数
emb是base64 直接解密就可以,emb是固定参数 加上url生成的
ckey 是 getUA()函数生成
在这里插入图片描述
getUA()是下图中的h(22,e)返回的结果
在这里插入图片描述
函数在115.js里
在这里插入图片描述
我将那里面的全复制到本地1.js里用phantomjs调用能够返回结果
在这里插入图片描述
js里有window对象nodejs会报错我用的phantomjs
在这里插入图片描述
phantomjs 可以运行js并返回结果

这样参数就齐全了
sign也有了
要先请求json文件的链接获得cookie后再生成sign再次请求即可获得json接口
之后就可以下载但下载后是分段的要用到moviepy来合并视频
from moviepy.editor import VideoFileClip
from moviepy.video.compositing.concatenate import concatenate_videoclips
video_list = [VideoFileClip(i) for i in video_name_list]
将 文件名传给VideoFileClip()生成文件对象
video = concatenate_videoclips(video_list)
将存放文件对象的列表传给concatenate_videoclips
video.write_videofile(video_path, fps=24, remove_temp=False)
video.write_videofile保存文件

这次笔记就做到这里

猜你喜欢

转载自blog.csdn.net/qq_42553568/article/details/88104452
今日推荐