php 使用curl模拟ip和来源进行访问的实现方法

前端之家收集整理的这篇文章主要介绍了php 使用curl模拟ip和来源进行访问的实现方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

对于限制了ip和来源的网站,使用正常的访问方式是无法访问的。本文将介绍一种方法,使用PHP的curl类实现模拟ip和来源,访问那些限制了ip和来源的网站。

1.设置页面限制ip和来源访问

server.PHP

PHP;"> $client_ip = getip();
$referer = getreferer();

$allow_ip = '192.168.1.100';
$allow_referer = '//www.jb51.cc';

if($client_ip==$allow_ip && strpos($referer,$allow_referer)===0){
echo 'allow access';
}else{
echo 'deny access';
}

// 获取访问者ip
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 = '';
}
return $cip;
}

// 获取访问者来源
function getreferer(){
if(isset($_SERVER['HTTP_REFERER'])){
return $_SERVER['HTTP_REFERER'];
}
return '';
}

?>

2.使用curl正常访问

PHP;"> $ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($data));
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_TIMEOUT,$timeout);

$response = curl_exec($ch);

if($error=curl_error($ch)){
die($error);
}

curl_close($ch);

return $response;

}

// 调用
$url = 'http://www.example.com/server.php';
$response = doCurl($url);

echo $response;
?>

返回

3.使用curl模拟ip和来源进行访问

模拟来源

curl_setopt($ch,CURLOPT_REFERER,'来源');

模拟ip

curl_setopt($ch,array('CLIENT-IP: 模拟ip','X-FORWARDED-FOR: 模拟ip'));

完整代码如下:

PHP;"> // 模拟来源
curl_setopt($ch,$referer);

$response = curl_exec($ch);

if($error=curl_error($ch)){
die($error);
}

curl_close($ch);

return $response;

}

// 调用
$url = 'http://www.example.com/server.php';
$data = array();

// 设置IP
$header = array(
'CLIENT-IP: 192.168.1.100','X-FORWARDED-FOR: 192.168.1.100'
);

// 设置来源
$referer = '//www.jb51.cc/';

$response = doCurl($url,$data,$header,$referer,5);

echo $response;
?>

返回 allow access

以上这篇PHP 使用curl模拟ip和来源进行访问的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程之家。

猜你在找的PHP相关文章