技术经验解读:优酷真实视频地址解析

简介: 技术经验解读:优酷真实视频地址解析

优酷真实视频地址解析——2016年9月20日


没时间跟优酷肛啊,投奔youtube-dl了。项目地址为


如果另有用途,比如只想拿到真实地址而不下载,可参考以下C#代码:


public string【】 getRealUrlUsingYoutubeDL(string YoukuUrl)


{


string fileName = @"youtube-dl.exe";


Process p = new Process();


p.StartInfo.UseShellExecute = false;


p.StartInfo.RedirectStandardOutput = true;


p.StartInfo.FileName = fileName;


p.StartInfo.CreateNoWindow = true;


p.StartInfo.Arguments = string.Format(" --get-url --skip-download {0}", YoukuUrl);


p.Start();


p.WaitForExit(5000);//亲测,youtube-dl会因为不知道什么原因阻塞。。


string output = p.StandardOutput.ReadToEnd();


return output.Split('\n');//最后一个是"",自己处理吧


}


顺便一提,腾讯视频、乐视、爱奇艺、搜狐、新浪什么的都可以这么处理。


=================================================我是分割线,以下是2015年的解析方法=============================================


序:优酷之前更新了次算法(很久之前了,呵呵。。。),故此很多博客的解析算法已经无法使用。很多大牛也已经更新了新的解析方法。我也在此写篇解析过程的文章。(本文使用语言为C#)


由于优酷视频地址时间限制,在你访问本篇文章时,下面所属链接有可能已经失效,望见谅。


例:


1:获取视频vid


在视频url中标红部分。一个正则表达式即可获取。


1 string getVid(string url)


2 {


3 string strRegex = "(?<=id_)(\w+)";


4 Regex reg = new Regex(strRegex);


5 Match match = reg.Match(url);


6 return match.ToString();


7 }


2:获取视频元信息


  http://v.youku.com/player/getPlayList/VideoIDS/XNzk2NTI0MzMy/Pf/4/ctype/12/ev/1


  将前述vid嵌入到上面url中访问即可得到视频信息文件。由于视频信息过长不在此贴出全部内容。下面是部分重要内容的展示。(获取文件为json文件,可直接解析)


1 { "data": 【 {


2 "ip": 996949050,


3 "ep": "NQXRTAodIbrd1vnC8+JxB4emuRs41w7DWho=",


4 "segs": {


5 "hd2": 【


6 {


7 "no": "0",


8 "size": "34602810",


9 "seconds": 205,


10 "k": "248fe14b4c1b37302411f67a",


11 "k2": "1c8e113cecad924c5"


12 },


13 {


14 "no": "1",


15 },】 }, } 】,}


上面显示的内容后面都会使用到。其中segs包含hd3,hd2,flv,mp4,3gp等各种格式,并且每种格式下均分为若干段。本次选用清晰度较高的hd2(视频格式为flv)


3:拼接m3u8地址


http://pl.youku.com/playlist/m3u8?ctype=12&ep={0}&ev=1&keyframe=1&oip={1}&sid={2}&token={3}&type={4}&vid={5}


以上共有6个参数,其中vid和oip已经得到,分别之前的vid和json文件中的ip字段,即(XNzk2NTI0MzMy和1991941296),但是ep,sid,token需要重新计算(json文件中的ep值不能直接使用)。type即为之前选择的segs。


3.1计算ep,sid,token


计算方法单纯的为数学计算,下面给出计算的函数。三个参数可一次性计算得到。其中涉及到Base64编码解码知识,点击查看。


1      private static string myEncoder(string a, byte【】 c, bool isToBase64)


2 {


3 string result = "";


4 List bytesR = new Listspan style="color: rgba(0, 0, 255, 1)">byte</span;


5 int f = 0, h = 0, q = 0;


6 int【】 b = new int【256】;


7 for (int i = 0; i < 256; i++)


8 b【i】 = i;


9 while (h < 256)


10 {


11 f = (f + b【h】 + a【h % a.Length】) % 256;


12 int temp = b【h】;


13 b【h】 = b【f】;


14 b【f】 = temp;


15 h++;


16 }


17 f = 0; h = 0; q = 0;


18 while (q [span style="color: rgba(0, 0, 0, 1)"> c.Length)


19 {


20 h = (h + 1) % 256;


21 f = (f + b【h】) % 256;


22 int temp = b【h】;


23 b【h】 = b【f】;


24 b【f】 = temp;


25 byte【】 bytes = new byte【】 { (byte)(c【q】 ^ b【(b【h】 + b【f】) % 256】) };


26 bytesR.Add(bytes【0】);


27 result += System.Text.ASCIIEncoding.ASCII.GetString(bytes);


28 q++;


29 }


30 if (isToBase64)


31 {


32 Byte【】 byteR = bytesR.ToArray();


33 result = Convert.ToBase64String(byteR);


34 }


35 return result;


36 }


37 public static void getEp(string vid, string ep, ref string pNew, ref string token, ref string sid)


38 {


39 string template1 = "becaf9be";


40 string template2 = "bf7e5f01";


41 byte【】 bytes = //代码效果参考:http://hnjlyzjd.com/hw/wz_24317.html

Convert.FromBase64String(ep);

42 ep = System.Text.ASCIIEncoding.ASCII.GetString(bytes);


43 string temp = myEncoder(template1, bytes, false);


44 string【】 part = temp.Split('');


45 sid = part【0】;


46 token = part【1】;


47 string whole = string.Format("{0}{1}_{2}", sid, vid, token);


48 byte【】 newbytes = System.Text.ASCIIEncoding.ASCII.GetBytes(whole);


49 epNew = myEncoder(template2, newbytes, true);


50 }


计算得到ep,token,sid分别为cCaVGE6OUc8H4ircjj8bMiuwdH8KXJZ0vESH/7YbAMZuNaHQmjbTwg==, 3825, 241273717793612e7b085。注意,此时ep并不能直接拼接到url中,需要对此做一下url编码ToUrlEncode(ep)。最终ep为cCaVGE6OUc8H4ircjj8bMiuwdH8KXJZ0vESH%2f7YbAMZuNaHQmjbTwg%3d%3d


3.2视频格式及清晰度


视频格式和选择的segs有密切关系。如本文选择的hd2,格式即为flv,下面是segs,视频格式和清晰度的对照。之前对此部分理解有些偏差,多谢削着苹果走路提醒。


“segs”,”视频格式”,”清晰度”


"hd3", "flv", "1080P"


"hd2", "flv", "超清"


"mp4", "mp4", "高清"


"flvhd", "flv", "高清"


"flv", "flv", "标清"


"3gphd", "3gp", "高清"


3.3拼接地址


  最后的m3u8地址为


4:获取视频地址


将上述m3u8文件下载后,其中内容即为真实地址,不过还需要稍微处理一下。部分内容如下:


1 #EXTM3U


2 #EXT-X-TARGETDURATION:12


3 #EXT-X-VERSION:3


4 #EXTINF:6.006,


5


6 #EXTINF:5.464,


7


8 #EXTINF:5.505,


9


10 #EXTINF:9.26,


11


12 #EXTINF:11.136,


13


14 #EXTINF:8.258,


15


16 #EXTINF:9.843,


17


18 #EXTINF:10.26,


19


相关文章
|
4月前
|
传感器 人工智能 物联网
穿戴科技新风尚:智能服装设计与技术全解析
穿戴科技新风尚:智能服装设计与技术全解析
396 85
|
4月前
|
人工智能 API 语音技术
HarmonyOS Next~鸿蒙AI功能开发:Core Speech Kit与Core Vision Kit的技术解析与实践
本文深入解析鸿蒙操作系统(HarmonyOS)中的Core Speech Kit与Core Vision Kit,探讨其在AI功能开发中的核心能力与实践方法。Core Speech Kit聚焦语音交互,提供语音识别、合成等功能,支持多场景应用;Core Vision Kit专注视觉处理,涵盖人脸检测、OCR等技术。文章还分析了两者的协同应用及生态发展趋势,展望未来AI技术与鸿蒙系统结合带来的智能交互新阶段。
231 31
|
3月前
|
域名解析 网络协议 安全
DNS服务器地址大全
DNS(域名系统)是互联网的“电话簿”,将域名解析为IP地址。选择优质DNS服务器可提升网络速度、降低延迟。以下是全球及中国各运营商的DNS服务器列表,包括公共DNS(如Google DNS、Cloudflare DNS)、中国电信、联通、移动等。根据地理位置、稳定性、安全性与隐私保护等因素选择适合的DNS服务器,优化上网体验。
3625 6
|
4月前
|
编解码 监控 网络协议
RTSP协议规范与SmartMediaKit播放器技术解析
RTSP协议是实时流媒体传输的重要规范,大牛直播SDK的rtsp播放器基于此构建,具备跨平台支持、超低延迟(100-300ms)、多实例播放、高效资源利用、音视频同步等优势。它广泛应用于安防监控、远程教学等领域,提供实时录像、快照等功能,优化网络传输与解码效率,并通过事件回调机制保障稳定性。作为高性能解决方案,它推动了实时流媒体技术的发展。
152 5
|
4月前
|
数据采集 机器学习/深度学习 存储
可穿戴设备如何重塑医疗健康:技术解析与应用实战
可穿戴设备如何重塑医疗健康:技术解析与应用实战
151 4
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术如何重塑客服系统?解析合力亿捷AI智能客服系统实践案例
本文探讨了人工智能技术在客服系统中的应用,涵盖技术架构、关键技术和优化策略。通过感知层、认知层、决策层和执行层的协同工作,结合自然语言处理、知识库构建和多模态交互技术,合力亿捷客服系统实现了智能化服务。文章还提出了用户体验优化、服务质量提升和系统性能改进的方法,并展望了未来发展方向,强调其在客户服务领域的核心价值与潜力。
224 6
|
4月前
|
监控 负载均衡 安全
静态IP代理与动态IP代理:提升速度与保障隐私的技术解析
本文探讨了静态IP代理和动态IP代理的特性和应用场景。静态IP代理通过高质量服务提供商、网络设置优化、定期更换IP与负载均衡及性能监控提升网络访问速度;动态IP代理则通过隐藏真实IP、增强安全性、绕过封锁和提供独立IP保障用户隐私。结合实际案例与代码示例,展示了两者在不同场景下的优势,帮助用户根据需求选择合适的代理服务以实现高效、安全的网络访问。
147 1
|
4月前
|
缓存 监控 搜索推荐
【实战解析】smallredbook.item_get_video API:小红书视频数据获取与电商应用指南
本文介绍小红书官方API——`smallredbook.item_get_video`的功能与使用方法。该接口可获取笔记视频详情,包括无水印直链、封面图、时长、文本描述、标签及互动数据等,并支持电商场景分析。调用需提供`key`、`secret`和`num_iid`参数,返回字段涵盖视频链接、标题、标签及用户信息等。同时,文章提供了电商实战技巧,如竞品监控与个性化推荐,并列出合规注意事项及替代方案对比。最后解答了常见问题,如笔记ID获取与视频链接时效性等。
|
4月前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
392 29
|
4月前
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
119 4

推荐镜像

更多
  • DNS
  • AI助理
    登录插画

    登录以查看您的控制台资源

    管理云资源
    状态一览
    快捷访问

    你好,我是AI助理

    可以解答问题、推荐解决方案等