您的位置:首页 > 其它

腾讯、优酷视频地址解析(转)

2014-04-15 22:22 323 查看
感谢原作者:yangfanaicc

本文转载自:http://blog.csdn.net/yangfanacc/article/details/21242405

各大视频网站的视频地址在手机或者个人网站上面播放有时是不固定的。比方说,你用http://www.flvxz.com这样的第三方解析出来的网址,可能过一天就不能用了。对于m3u8格式的没有太多的问题,尤其是mp4格式,很快就会变动,没有实用效果。所以如何才能够自己解析出各大视频网站的真实地址便是一个很重要的问题。下面给出方案:

本人做的是IOS的视频地址解析,但是在不同的语言之间是没有界限的。我先把IOS的代码贴在这里,然后介绍其他的语言的办法:

        

[objc] view
plaincopyprint?





//得到腾讯的视频真实url  

- (NSString *)getQQUrl:(NSString *)qqVideoUrl {  

    NSString *vid = nil;  

    NSString *targetUrl = nil;  

      

    NSRange vidRange = [qqVideoUrl rangeOfString:@"vid="];  

    if (vidRange.location > 0 && vidRange.location < 10000) {  

        vid = [qqVideoUrl substringWithRange:NSMakeRange(vidRange.location + 4, 11)];  

    } else {  

        int loc=5;  

        for(int i=0;i<qqVideoUrl.length;i++){  

            NSString *s = [qqVideoUrl substringWithRange:NSMakeRange(i, 1)];  

            if([s isEqualToString:@"/"])  

                loc=i;  

        }  

        vid=[qqVideoUrl substringWithRange:NSMakeRange(loc+1,qqVideoUrl.length-6-loc)];  

  

        NSLog(@"**********************对不起,您输入的网址没有vid标志,目前正在url地址中匹配vid");  

    }  

      

    NSString *requestUrl = [NSString stringWithFormat:  

                            @"http://vv.video.qq.com/geturl?vid=%@&otype=xml&platform=1&ran=0%%2E9652906153351068", vid];  

    NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:requestUrl]];  

    GDataXMLDocument *xmlDoc = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil];  

    GDataXMLElement *rootElement = [xmlDoc rootElement];  

    NSArray *first = [rootElement elementsForName:@"vd"];  

    if (first.count > 0) {  

        NSArray *second = [[first objectAtIndex:0] elementsForName:@"vi"];  

        if (second.count > 0) {  

            NSArray *third = [[second objectAtIndex:0] elementsForName:@"url"];  

            if (third.count > 0) {  

                targetUrl = [[third objectAtIndex:0] stringValue];  

            }  

        }  

    }  

      

    return targetUrl;  

}  

[objc] view
plaincopyprint?





//得到优酷的视频真实url  

- (NSString *)getYouKuUrl:(NSString *)qqVideoUrl {  

    NSString *targetUrl = nil;  

      

    NSRange vidRange = [qqVideoUrl rangeOfString:@"id_"];  

    if (vidRange.location > 0 && vidRange.location < 10000) {  

        targetUrl = [qqVideoUrl substringWithRange:NSMakeRange(vidRange.location + 3, 13)];  

    } else {  

        NSLog(@"**********************对不起,您输入的网址没有'id_'的优酷标志,请确认");  

    }  

    targetUrl = [NSString stringWithFormat:@"http://v.youku.com/player/getRealM3U8/vid/%@/type//video.m3u8", targetUrl];  

    return targetUrl;  

}  

我这里选了三个大型视频平台,分别是腾讯,优酷还有乐视。但是最后只是解析出来了腾讯和优酷,乐视搞死搞不出来,要是有人有办法,还请赐教啊,万谢先。

对于优酷,还是很简单的,就是字符串的拼接,没有特别的麻烦事。优酷的地址一般都是这样的:http://v.youku.com/v_show/id_XNjg0ODM3NTcy.html

对于id_后面的那个就是重点,就是你当前播放视频的视频id了,也是全球唯一的一个了。然后进行一下拼接就好了。拼接方法如下:

[objc] view
plaincopyprint?




http://v.youku.com/player/getRealM3U8/vid/+“xxxxxxxxxxx”+/type//video.m3u8  
就是把视频的id放在上面的xxx的位置,然后就可以用浏览器或者手机上面的播放器播放了。

对于腾讯的,一开始我使用了复杂的办法,用了很长的时间最后做出来的还是有问题,因为有很多因素需要考虑。在最后我找到了一个非常简单的办法,让我十分的开心。那就是这样:

(说明在前:腾讯的视频包括所有平台的视频都是有一个全球唯一的id的,但是腾讯的视频id有的很明显,有的不明显,如下所示:1、http://v.qq.com/cover/5/5skfz788e7nc3m9.html?vid=j0126ma9sex

2、http://v.qq.com/cover/o/o4bmve7g33cqqr9.html,其中第一个直接给出了id,第二个需要自己查看网页的源代码才能够得到,自己想办法了,我推荐一个网址在这里:http://www.cnblogs.com/bobzhou/archive/2013/02/20/qq.html)

拿到视频的id之后便是拼接成一个url然后访问,服务器会返回一个xml文档回来,一般返回来的会有四个链接,当然了,每一个都是可以使用的,我使用的是第一个,解析的方便了。(只是url的请求访问以及返回来的xml数据的xml解析自己知道最好嘛,不知道,自己想办法喽),这样便是又拿到了腾讯的真是地址。

重复上面的一句话,乐视的如何都是拿不到,但是上面给出的飞驴网站确是可以拿到,我很奇怪,网上的方法都是找遍了还是没有办法突破乐视,我觉得是乐视临时加强了自己网站的防止偷链等等其他因素的能力。要是有人拿到了,不放留言在下,好让我知道,谢谢先,

1楼 暖阳浅夏 2014-03-17 14:20发表 [回复] [引用] [举报]


拼接URL的地方你说的不够详细,这是个后门URL,帮你补充一下,腾讯后门格式为:http://vv.video.qq.com/geturl?vid="+ id + "&otype=xml&platform=1&ran=0%2E9652906153351068.

优酷后门格式为:http://v.youku.com/player/getPlayList/VideoIDS/"+id

感谢原作者:yangfanaicc

本文转载自:http://blog.csdn.net/yangfanacc/article/details/21242405
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: