,,C#实现的优酷真实视频地址解析功能(2014新算法)

,,C#实现的优酷真实视频地址解析功能(2014新算法)

本文主要介绍优酷用C#实现的真实视频地址解析功能(2014年新算法)。这篇文章在当前环境下是有效的,因为优酷之前更新过算法,有需要的朋友可以参考一下。

前言:优酷之前更新了算法(很久以前了,呵呵。),所以很多博客的解析算法已经不能用了。很多大牛也更新了新的分析方法。我也在这里写一篇关于分析过程的文章。(本文使用的语言是C#)

由于优酷视频地址的时间限制,当您访问本文时,以下链接可能已经失效。请原谅我。

例如:http://v.youku.com/v_show/id_XNzk2NTI0MzMy.html

1:获取视频vid

视频url中的红色部分。可以获得正则表达式。

复制代码如下:

字符串getVid(字符串url)

{

string strRegex='(?=id _)(\ \ w)';

Regex reg=new Regex(strRegex);

Match match=reg。匹配(网址);

返回匹配。ToString();

}

2:获取视频元信息

http://v . youku . com/player/get playlist/video ids/xnzk 2 nti 0 mzmy/Pf/4/ctype/12/ev/1

视频信息文件可以通过在上面的url中嵌入vid来获得。因为视频信息太长,所以不要把所有内容都贴在这里。以下是一些重要内容的介绍。(获取的文件是json文件,可以直接解析)

复制代码如下:

{ 'data': [ {

' ip': 1991941296,

EP ':' mwxrtasbjlnb 0 pbj 8 ujxadsivuu 11 wnk xxc=',

segs ':

hd2': [

{

否':' 0 ',

尺寸':' 34602810 ',

'秒':205,

k': '248fe14b4c1b37302411f67a ',

k2 ':' 1c8e 113 ecad 924 C5 '

},

{

否':' 1 ',

},] }, } ],}

上面显示的内容以后会用到。Segs包括hd3、hd2、flv、mp4、3gp等格式,每种格式又分为若干段。这次选的是高清的Hd2(视频格式是flv)

3:拼接m3u8地址

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

上面有六个参数,其中vid和oip已经得到,之前vid和json文件中的ip字段,即(XNzk2NTI0MzMy和1991941296),但是ep、SID和token需要重新计算(不能直接使用json文件中的EP值)。类型比较简单,后面会讲到。

3.1计算ep,sid,token

计算方法是纯数学计算,下面给出计算函数。一次可以计算三个参数。涉及Base64编解码知识,点击查看。

复制代码如下:

私有静态字符串myEncoder(字符串a,字节[] c,布尔值isToBase64)

{

字符串结果=“”;

list byte bytes r=new list byte();

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

int[]b=new int[256];

for(int I=0;i 256我)

b[I]=I;

而(h . 256)

{

f=(f b[h]a[h % a . Length])% 256;

int temp=b[h];

b[h]=b[f];

b[f]=温度;

h;

}

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

while(长度)

{

h=(h1)% 256;

f=(f b[h])% 256;

int temp=b[h];

b[h]=b[f];

b[f]=温度;

byte[]bytes=new byte[]{(byte)(c[q]^ b[(b[h]b[f])% 256])};

字节数。add(bytes[0]);

结果=系统。text . ascii encoding . ascii . getstring(字节);

q;

}

if(istobabase 64)

{

Byte[] byteR=bytesR。to array();

结果=转换。tobase 64 string(byteR);

}

返回结果;

}

公共静态void getEp(字符串vid,字符串Ep,引用字符串pNew,引用字符串token,引用字符串sid)

{

string template1=' becaf9be

string template 2=' BF 7 e5f 01 ';

byte[] bytes=转换。from base 64 string(EP);

ep=系统。text . ascii encoding . ascii . getstring(字节);

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

string[] part=temp拆分(' _ ');

sid=part[0];

token=part[1];

字符串整体=字符串。格式(' {0}_{1}_{2} ',sid,vid,token);

byte[] newbytes=System。text . ascii encoding . ascii . getbytes(整体);

epNew=myEncoder(template2,newbytes,true);

}

Ep,token,sid分别计算为diavge IVM WB 5 cxxjz 8 bnhi 0 ccehxjz 0 vesh/7 ybamzunahqnt/wzw==,4178,441265221168712cdf4f8。注意,ep此时不能直接拼接成url,需要对url ToUrlEncode(ep)进行编码。最终的ep是diavge+IVM WB 5 cxxjz 8 bnhi 0 ccehxjz 0 vesh/7 ybamzunahqnt/wzw==

3.2计算type

类型值与选定的segs密切相关。如果hd2,本文选择的类型是flv,下面是segs,类型和定义的比较。

复制代码如下:

“segs”,“类型”,“清晰度”

hd3 ',' flv ',' 1080P '

Hd2 ',' flv ','超清'

Mp4 ',' mp4 ','高清'

Flvhd ',' flv ','高清'

Flv ',' flv ','标清'

3gphd ',' 3gp ',' hd '

3.3拼接地址

最后一个m3u8地址是

http://pl.youku.com/playlist/m3u8?ctype=12ep=diaVGE+IVM WB 5 cxx JZ 8 bnhi 0 ccehxjz 0 vesh/7 ybamzunahqnt/Wzw==ev=1 key frame=1 OIP=1991941296 sid=441265221168712 CDF 4 f 8 token=4178 type=flv vid=xnzk 2 nti 0 mzmy

4:获取视频地址

下载上面的m3u8文件后,里面的内容是真实地址,但还是需要一点处理。部分内容如下:

复制代码如下:

#EXTM3U

#扩展X目标持续时间:12

# EXT-X-版本:3

#EXTINF:6,

http://59 . 108 . 137 . 14/696 CD 107 Fe 4d 821 ffbf 173 EB 3/03000208005430 b 01849631468 defec 61 c 5678-3a 78-37BA-1971-21 A0 D4 EEA 0 e 7 . flv?ts _ start=0ts _ end=5.9 ts _ seg _ no=0ts _ key frame=1

#EXTINF:5.533,

http://59 . 108 . 137 . 14/696 CD 107 Fe 4d 821 ffbf 173 EB 3/03000208005430 b 01849631468 defec 61 c 5678-3a 78-37BA-1971-21 A0 D4 EEA 0 e 7 . flv?ts _ start=5.9 ts _ end=11.433 ts _ seg _ no=1ts _ key frame=1

#EXTINF:5.467,

http://59 . 108 . 137 . 14/696 CD 107 Fe 4d 821 ffbf 173 EB 3/03000208005430 b 01849631468 defec 61 c 5678-3a 78-37BA-1971-21 A0 D4 EEA 0 e 7 . flv?ts _ start=11.433 ts _ end=16.9 ts _ seg _ no=2ts _ key frame=1

#EXTINF:9.267,

每个url只包含6s左右的视频,但实际长度可以通过去掉url中的参数得到。但是,在删除每个项目后,需要合并相同的url。例如,url片段可以从上面的列表中获得。

http://59 . 108 . 137 . 14/696 CD 107 Fe 4d 821 ffbf 173 EB 3/03000208005430 b 01849631468 defec 61 c 5678-3a 78-37BA-1971-21 A0 D4 EEA 0 e 7 . flv

下载m3u8中的所有网址片段就大功告成了。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 优酷怎么登陆别人的会员帐号,优酷怎么登陆别人的会员账号
  • 如何看优酷vip还剩几天,优酷vip会员剩几天在哪里看
  • 优酷怎么扫描二维码登录手机上,优酷怎么扫描二维码登录会员
  • 优酷客户端下载的视频是什么格式的,优酷客户端上下载的视频是什么格式的
  • 优酷会员家庭共享,优酷会员家庭版
  • 优酷怎样和别人用一个vip,怎么分享优酷vip给别人
  • 如何关闭优酷消息推送,优酷的消息提醒怎么关
  • 手机优酷怎么上传自己的视频,优酷怎么上传自己的视频加密
  • 优酷修改个人资料在哪里找,优酷修改个人资料在哪里改
  • 优酷怎么免费领取会员3天,优酷怎么免费领取会员2021
  • 优酷怎么一起看电影两个人2022,优酷怎么一起看电影两个人2021
  • 优酷账号可以同时登陆几个电脑,优酷账号可以同时登陆几个电视
  • 留言与评论(共有 条评论)
       
    验证码: