来自http://tunps.com/water-cube-ticket
这几天回到学校交了毕设的开题报告,然后在寝室复习梦牵梦绕的自考科目《英美文学选读》,临床的哥们在搞啥活动。凑过去看了看,原来是重庆大渝网和某某度假区搞的水魔方开业抢票活动。
具体的活动介绍看这里,主要意思就是从一个时刻开始,回复lz的问题,如果你回复所在的楼数恰好是符合中奖要求的,比如楼数的个位为6,比如是20的倍数,30的倍数….等等。
然后我临床的那个哥们和她老婆就是在那个帖子上疯狂的回帖了,我心想可以写一个自动post数据的程序,恰好这几天看了看验证码(captcha)方面的东东,发现qq论坛的验证码貌似机器很难读取,所以放弃。
过了一会儿,15分钟的活动就结束了,然后那位同学就开始立即从帖子的第一页开始翻,看自己的楼层是不是40的倍数,我一看,189页,那不得累死个人啊。于是乎,说是迟,那时快。我赶紧拿出我的陈年php脚本,稍作修改,运行了起来,直接查找是否搞到门票了:)
<?php function download($url,$from,$to){ $originUrl=$url; while($from<=$to){ $url=str_replace('@',$from,$url); $ch = curl_init(); $options=array( CURLOPT_URL=>$url, CURLOPT_RETURNTRANSFER=>true ); curl_setopt_array($ch,$options); $data = curl_exec($ch); $fp=fopen("qq.txt","a"); echo "downloaded:".$url."\n"; fwrite($fp,$data); fclose($fp); curl_close($ch); $url=$originUrl; $from++; } echo "all pages completely downloaded"; } download('http://bbs.cq.qq.com/life/gk3tvq15774-@.htm','2','189'); $handle=fopen("qq.txt","r"); $count=0; while(!feof($handle)){ $line=fgets($handle); $line=mb_convert_encoding($line,'GB2312','auto'); if(strpos($line,'卡特') or strpos($line,'靖')){ $startPos=strpos($line,'<b>')+3; $endPos=strpos($line,'</b>'); $len=$endPos-$startPos; $msg=substr($line,$startPos,$len-2)."\n"; if($msg%40 == 0){ $msg.=" 可以领取门票了。\n"; } echo $msg; $count++; } } echo "总共抢楼 $count 次\n";?> |
'卡特'是那个哥们的qq论坛ID,'靖'是他女人的。
第4期的活动取40倍数的楼层,所有是$msg%40
值得注意的是那个网页是utf-8编码,需要通过mb_convert_encoding来转换编码。
其实php里面的fopen,fsockopen可以直接打开查找,而不需要下载到本地文件系统,再查找文件.
代码保存为php文件,然后以命令行的方式运行,比如php test.php。
D:\project>php test.php 55 80 可以领取门票了。 116 194 199 372 391 498 529 646 730 783 919 930 1035 1170 1196 1449 1484 1668 1723 1836 1958 2027 2196 2232 2364 2444 2505 2612 2642 2716 2868 2890 3122 3312 3424 3557 3694 3860 总共抢楼 40 次
