首页 > 优酷URL分析

优酷URL分析

以下是通过wireshark抓包得到的。
其中,1表示对视频进行拖拽,2是紧接着的

GET /event?t=1001&e=pgsbd&v=mlc&d=Zj1vZmYmcT1mbHYmbD1vbiZ3dD1pbnRlcmlvciZ3PW9mZg==&x=Y3Q9YSZjcz0yMTQ4JnNzaWQ9MTQzNDA4OTIxNzQyMzEwZmRhNzk1JnZlcj0xLjAuMCZmaWQ9bnVsbCZ1aWQ9MCZ0Yz0yNTEuODY1MzA2MTIyNDQ4OTQmdG89MTgyMSZ0Yj0xMDEwJnNpZD0yODY4NDImdmlkPTMxNTA2NDE2MiZ2PTMxMzJ5c3BfeW91a3VfcHMwNi0xMC0xMS01Ng== HTTP/1.1
GET /ykp2pdata?json=%7B%22ct%22:%2291%22,%22vt%22:%22flv_0%22,%22data%22:%7B%22index%22:4%7D,%22dc%22:%224134%22,%22vs%22:%2203-25-10-11%22,%22logType%22:%22play%22,%22errorType%22:%22play%22,%22ac%22:%22320100%22,%22sid%22:%22143408921742310fda795%22,%22vid%22:%22315064162%22,%22time%22:1434090289786,%22cfg%22:%22player_yk_601%22%7D HTTP/1.1

URL解码

/ykp2pdata?json={"ct":"91","vt":"flv_0","data":{"index":4},"dc":"4134","vs":"03-25-10-11","logType":"play","errorType":"play","ac":"320100","sid":"143408921742310fda795","vid":"315064162","time":1434090289786,"cfg":"player_yk_601"}

对上面的URL解码后的结果,通过json在线解析,校验后的结果如下

/ykp2pdata?json={
    "ct": "91",
    "vt": "flv_0",
    "data": {
        "index": 4
    },
    "dc": "4134",
    "vs": "03-25-10-11",
    "logType": "play",
    "errorType": "play",
    "ac": "320100",
    "sid": "143408921742310fda795",
    "vid": "315064162",
    "time": 1434090289786,
    "cfg": "player_yk_601"
}

其中的sid=143408921742310fda795,在网上又看到表示时间+随机数,后六位应该表示随机数,但不知其具体表示什么意思,还有时间表示什么时间,是北京时间,还是视频播放的具体时间?

求各位大牛指点,谢谢!!!


看了下,sid的前面应该是一个时间戳,其中精确到秒的话应该取前10个字符,即1434089217,代表“2015-06-12 14:06:57”,后面大概是精确到毫秒?再后面,坐等高手分析


http://static.youku.com/v1.0.1062/index/js/common.js

var getPvid = function(len){
        var randchar=["0","1","2","3","4","5","6","7","8","9",
            "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
            "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"
                    ];
        var i=0;
        var r="";
        var d=new Date();
        for (i=0;i<len;i++){
                         var index=parseInt(Math.random()*Math.pow(10,6))%randchar.length;
                                  r+=randchar[index];
        }
        return d.getTime()+r;
}

logPvid=getPvid(6);

结论:
sid 由当前的系统时间 + 六位随机数构成.

整体的含义,应该是生成一个用于标记当前用户的唯一值.
因为毫秒值相同且产生的6位随机值也相同的可能性太少了,以至于可以忽略不记,所以采用这种方案来给用户打标记.

【热门文章】
【热门文章】