A-A+

技术分析youku会员用户数

2014年11月08日 14:57 汪洋大海 暂无评论 阅读 264 views 次

【转载】写这边文章,主要是看优酷视频的时候。几十秒的预告片,竟然要1分钟的广告,所以我就想知道有多少人被逼无奈买优酷的会员。接下来进入正题!!(有点像渗透信息收集,哈哈)

通过观察优酷的用户
A用户

http://i.youku.com/u/UNQ==

B用户

http://i.youku.com/u/UNg==

我发现一种规律,用户共同的URL为

http://i.youku.com/u/U

所以后面的字符串可能为base64编码,经过测试确定是base64编码
A用户
http://i.youku.com/u/UNQ== ->youku_id为5
B用户
http://i.youku.com/u/UNg== ->youku_id为6
以此类推,可以推理出优酷的用户数已经超6亿了

接下来我们是要分析每个用户页面里有木有会员的关键字,然后进行for循环即可遍历出所有会员用户的个数。

通过上图可以发现优酷会员的标志是唯一的,然后以订阅作为字符串结束标志即可(为什么要作为结束表示,因为下面有留言版,要是有会员留言容易有误差)

接下来是shell实现优酷会员数代码
for i in $(seq 1 6000000) do
base64_uid=`echo $i | perl -e 'use MIME::Base64; $_ = encode_base64(<>); print;'`
url="http://i.youku.com/u/U${base64_uid}" mytest=`GET "$url"`
vipsuper=`echo ${mytest%subscribe_pNode*}|grep ico__vipsuper` if [ "$vipsuper" != "" ] then
vip_youku=$[$vip_youku+1] echo "youku id:$i vip youku sum:$vip_youku" fidone

顺便放出用php实现的代码(加了个功能,统计删除用户的数目) 这个是学习重点。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$youku_vip=0; $youku_del=0;
for($i=1;$i<630000000;$i++){   
		$url='http://i.youku.com/u/U'.base64_encode($i);
		$content=@file_get_contents($url); 
		if($content){ 
			$youku_member_contents=substr($content,0,strpos($content,'<div class="subscribe" id="subscribe_pNode">'));
			if(preg_match('/ico__vipsuper/',$youku_member_contents)){ 
				$youku_vip++; 
				echo 'youku_id:'.$i.' youku vip num:'.$youku_vip."\r\n"; 
			}
		}else{ 
		$youku_del++; 
		echo 'youku_id:'.$i.' delete youku num:'.$youku_del."\r\n"; 
		}   
	}   
echo 'youku vip count:'.$youku_vip;
?>

效果图片如下

文章来源:http://www.anylm.com/?post=398 暗影's Blog

标签:

给我留言