技术分析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" 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
布施恩德可便相知重
微信扫一扫打赏
支付宝扫一扫打赏