QQ上好友发来消息,要帮忙给xxx活动投票,最近我正好也在写php程序,就小试了一下。
打开投票的网站http://www.xxxx.com/votePage1.aspx?tid=1&cid=0之后,能看见是一个asp.net的页面,提交表单的字段VIEWSTATE很奇怪,value的值特别的长,有4769个字符,真不知道做什么用的。
先抓个包,查看来来往往的http信息,记录POST和GET各自的值。
然后就开始伪造http的包了,经过几个测试,发现验证的方法只有2个:
IP验证,每个IP只能投5票
鼠标位置验收,点击投标的时候,记录鼠标位置,2次投票的位置不能相同
剩下的事情就是见招拆招了,先找一堆代理IP吧,这个网上特别的多,网上一找一大把,比如我在代理中国网站上搜到的IP列表
$wget http://www.proxycn.com/html_proxy/countryDX-1.html
$grep "clip('" countryDX-1.html | awk -F "'" '{print $2}' > ip1039.txt
鼠标位置的处理是图片大小范围之类,可以定义一个随机数来生产位置
$x = rand(1,60); $y = rand(1,20); ...ImageButton1.x='.$x.'...ImageButton1.y='.$y
编写php的投标脚本,内容大致包括:
$filename = "/home/zhanggang/ip1039.txt";
$lines = file($filename);
$curlPost = '...4769个字符..ImageButton1.x='.$x.'&datalstJT%24ctl05%24ImageButton1.y='.$y;
//循环取出代理IP列表的行,提交投票的http包
foreach ($lines as $line_num => $line) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.xxxx.com/votePage1.aspx?tid=1&cid=0');
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, $line); //用代理IP投票
curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"); //从抓包里面抄的useragent
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_TIMEOUT, 10); //10秒不成功就超时处理
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
echo "..window.location..|".$line; //输出结果,看看是否投票成功
$data = curl_exec($ch);
curl_close($ch);
echo $data;
}
经验证投票有两种结果,分别为:
一、成功
..window.location..|218.14.227.197:3128
alert(‘谢谢您的投票!’);window.location=”http://www.xxxx.com/votePage1.aspx?tid=1&cid=0″
二、失败一
..window.location..|119.40.99.2:8080
alert(‘在这段时间你不能再对该项目投票’);window.location=”http://www.xxxx.com/votePage1.aspx?tid=1&cid=0″
失败二
..window.location..|60.191.241.38:8080
没有输出,说明代理IP有问题
经测试,代理IP可用的不多,估计很多都是临时开放一下,轮到我的时候都已经关闭了,剩下的就是无差事了,到网上到处找能用的代理IP了

举手之劳,请点击这里—->个人收款主页
相关的文章: