优酷地址解析php源码

2022-09-26 11:02:51 浏览数 (2)

优酷地址解析php源码

作者:matrix 被围观: 12,586 次 发布时间:2014-03-04 分类:兼容并蓄 零零星星 | 134 条评论 »

这是一个创建于 3103 天前的主题,其中的信息可能已经有所发展或是发生改变。

优酷的广告很烦人,还好有些脚本可以搞定。

譬如:http://userscripts.org/scripts/show/119622  效果很不错!

chrome的使用说明:https://cloud.tencent.com/developer/article/2122199

此页面的源码已失效,最新>>php源码优酷视频解析更新

解析优酷视频过程:

例:http://v.youku.com/v_show/id_XNjc1MDI4Nzg0.html

1.获取视频信息

http://v.youku.com/player/getPlayList/VideoIDS/XNjc1MDI4Nzg0

打开后可以看到视频相关信息。

需要其中的seed值、streamfileids里面hd2,mp4或者flv的值以及segs里对应k的值。

hd2、mp4、flv分别代表超清,高清以及标清。

2.拼接下载地址

最终形式:http://f.youku.com/player/getFlvPath/sid/00_00/st/P0/fileid/ P1?k=P2 P0:如果选择mp4(即高清)则为mp4,其余为flv。 P0/fileid/ P1?k=P2 P0:如果选择mp4(即高清)则为mp4,其余为flv。

代码语言:javascript复制
function getFileIDMixString($seed)
        {
            $source = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\:._-1234567890";
            $len = strlen($source);
            for ($i = 0; $i < $len; $i  )
            {
                $seed = ($seed * 211   30031) % 65536;
                $index = floor($seed / 65536 * strlen($source));
                $mixed .= $source[$index];
                $source = str_replace($source[$index],'',$source);
            }
            return $mixed;
        }
function getFileID( $fileid,  $seed  )
        {
            $mixed = getFileIDMixString($seed);
            $ids = explode("*",$fileid);
            for ($i = 0; $i < count($ids) - 1; $i  )
            {
                $idx = $ids[$i];
                $realId .= $mixed[$idx];
            }
            return $realId;
        }

说明:此为解密的关键函数,不是我写的,完全是依葫芦画瓢按照下面的C#代码而来:(解密函数getFileID()C#版本)

代码语言:javascript复制
public static String getFileID(String fileid, double seed)
        {
            String mixed = getFileIDMixString(seed);
            String[] ids = fileid.Split('*');
            StringBuilder realId = new StringBuilder();
            int idx;
            for (int i = 0; i < ids.Length - 1; i  )
            {
                idx = int.Parse(ids[i]);
                realId.Append(mixed[idx]);
            }
            //Console.Write(realId.ToString());
            return realId.ToString();
        }
        public static String getFileIDMixString(double seed)
        {
            StringBuilder mixed = new StringBuilder();
            StringBuilder source = new StringBuilder("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\:._-1234567890");
            int index, len = source.Length;
            for (int i = 0; i < len;   i)
            {
                seed = (seed * 211   30031) % 65536;
                index = (int)Math.Floor(seed / 65536 * source.Length);
                mixed.Append(source[index]);
                source.Remove(index, 1);
            }
            return mixed.ToString();
        }

$P2:这个是segs里对应k的值。

如果选择flv(即标清)那么可以找到

"flv":{"no":0,"size":"9932910","seconds":"277","k":"4be592cfae8eea21282826e4","k2":"167f8074bfb7bdca7"}}

其中的4be592cfae8eea21282826e4就是$P2。

得到de P0 、 P1和 P2,拼接为视频地址:http://f.youku.com/player/getFlvPath/sid/00_00/st/ P0/fileid/P1?k= P2

如果视频有很多分段,变更一下$P2就行。

到这里就给个获取优酷地址的php源码:

源码已经失效

提示: 此处内容需要评论本文后才能查看.

调用说明:/XXX.php?id=优酷视频的ID?d=1

d=1表示标清(flv),2表示高清,3表超清.若不写?d=*则默认输出FLV的画质

有些细节处的修改没有写出来,不过php里都是搞好了的。

标清测试:

高清测试:

超清测试:

另附接口:

优酷外链接口(wap地址),这个很简单:

视频:http://v.youku.com/v_show/id_XNjc1MDI4Nzg0.html

外链:

http://m.youku.com/wap/pvs?format=3gphd&id=XNjc1MDI4Nzg0

56网:

视频:ht tp://www.56.com/u30/v_MTA3MDk0Nzg3.html

外链:

http://vxml.56.com/html5/MTA3MDk0Nzg3/     (算的上高清)

http://vxml.56.com/html5/MTA3MDk0Nzg3/?src=3g&res=qvga   (也就是手机上用的)

参考:http://blog.csdn.net/feige2008/article/details/8198434

0 人点赞