下面小编就为大家带来一篇php 使用curl模拟ip和来源进行访问的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
对于限制了ip和来源的网站,使用正常的访问方式是无法访问的。本文将介绍一种方法,使用PHP的curl类实现模拟ip和来源,访问那些限制了ip和来源的网站。
1.设置页面限制ip和来源访问
server.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正常访问
$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'));
完整代码如下:
// 模拟来源
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和来源进行访问的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程之家。