shell实现分析youku会员用户数

写这边文章,主要是看优酷视频的时候。几十秒的预告片,竟然要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"
	fi
 
done

看看效果把

顺便放出用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;

效果图片如下

发表评论

电子邮件地址不会被公开。 必填项已用*标注