动态随机生成国内IP实现伪造IP提交数据

2016-10-15 PHP 1270

今天追梦群“国家领导人”有个需求,需要伪造随机IP,POST提交到一个API获取数据。

通过网上查相关资料,在 火端网络 找到了现成的函数:

//随机生成国内IP
function rand_ip(){
	$ip_long = array(
		array('607649792', '608174079'), //36.56.0.0-36.63.255.255
		array('975044608', '977272831'), //58.30.0.0-58.63.255.255
		array('999751680', '999784447'), //59.151.0.0-59.151.127.255
		array('1019346944', '1019478015'), //60.194.0.0-60.195.255.255
		array('1038614528', '1039007743'), //61.232.0.0-61.237.255.255
		array('1783627776', '1784676351'), //106.80.0.0-106.95.255.255
		array('1947009024', '1947074559'), //116.13.0.0-116.13.255.255
		array('1987051520', '1988034559'), //118.112.0.0-118.126.255.255
		array('2035023872', '2035154943'), //121.76.0.0-121.77.255.255
		array('2078801920', '2079064063'), //123.232.0.0-123.235.255.255
		array('-1950089216', '-1948778497'), //139.196.0.0-139.215.255.255
		array('-1425539072', '-1425014785'), //171.8.0.0-171.15.255.255
		array('-1236271104', '-1235419137'), //182.80.0.0-182.92.255.255
		array('-770113536', '-768606209'), //210.25.0.0-210.47.255.255
		array('-569376768', '-564133889'), //222.16.0.0-222.95.255.255
	);
	$rand_key = mt_rand(0, 14);
	$huoduan_ip= long2ip(mt_rand($ip_long[$rand_key][0], $ip_long[$rand_key][1]));
	return $huoduan_ip;
}

关键函数是:long2ip()

然后,再通过随机IP拼装HTTP头,通过curl函数提交:

/**  
 * Curl版本  
 * 使用方法:  
 * $post_string = array("app"=>request,"version"=>beta);  
 * request_by_curl('http://www.qianyunlai.com/restServer.php', $post_string);  
 */  
function request_by_curl($remote_server, $post_string,$ip) {
	// $ip = rand_ip();
	$ch = curl_init();
	$header = array( 
		'CLIENT-IP:'.$ip, 
		'X-FORWARDED-FOR:'.$ip, 
		);
	curl_setopt($ch, CURLOPT_URL, $remote_server);
	curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS,  $post_string);  
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/5.0 Chrome/47.0.2526.73 Safari/537.36");  
	$data = curl_exec($ch);
	curl_close($ch);
	return $data;
}

使用方法:

$post_data_array = array(
	array( 'token' =>'d182702a9', 'activityId' => '39' ),//token1
	array( 'token' =>'d10f2a9gs', 'activityId' => '40' ),//token2...以此类推,复制行
);

//循环发送post请求,并写入文件
foreach ($post_data_array as $key => $post_data) {
	$ip = rand_ip();//随机生成IP
	$res = request_by_curl('http://abc.com/info/newuseract/doget.json', $post_data, $ip);
	file_put_contents('./ma.txt', '['.$ip.']-['.date('Y-m-d H:i:s').']-['.$post_data['token'].']'.$res."\r\n", FILE_APPEND);// ./ma.txt 表示输出到当前目录ma.txt
}
0