第一种:写了段代码伪装ip,原理是,客户访问网站,获取客户ip,伪装客户ip去访问数据源。采集后处理缓存到/tmp公共目录(省了空间,不占用自己的空间),然后输出到客户浏览器。代码如下:
$url = "http://www.baidu.com";
$host = 'www.baidu.com';
$data = "要发送的数据";
$ip='121.186.1.57';
$headers['CLIENT-IP'] = $ip;
$headers['X-FORWARDED-FOR'] = $ip;
$headerArr = array();
foreach( $headers as $n => $v ) {
$headerArr[] = $n .':' . $v;
}
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt ($ch, CURLOPT_HTTPHEADER , $headerArr ); //构造IP
// 我们在POST数据哦!
curl_setopt($ch, CURLOPT_POST, 1);
// 把post的变量加上
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$file_contents = curl_exec($ch);
curl_close($ch);
var_dump($file_contents);
第二种:采用socket请求的方式
$host = '192.168.1.100';
$fp = fsockopen($host,80);
if(!$fp)
{
die('创建连接失败,检查主机地址或网络连接');
}
//构造http请求串
$send = "POST $path HTTP/1.1\r\n";
$send .= "Host: $host\r\n";
$send .= "Content-type: application/x-www-form-urlencoded\r\n";
// $send .= 'X-FORWARDED-FOR:8.8.8.8' . "\r\n";
$send .= "CLIENT-IP:$per_ip\r\n";//伪造IP
$send .= "Content-length: " . strlen($data) . "\r\n";
$send .= "Connection: close\r\n\r\n";
$send .= $data . "\r\n\r\n";
//发送请求
fwrite($fp, $send, strlen($send));
//读取返回信息
$back = '';
while(!feof($fp))
{
$back .= fread($fp, 1024);
}
fclose($fp);
if(strpos($back, '成功'))
{
$flag = '成功';
sleep(1);
}