如何在php中利用curl对ip进行模拟
发布时间:-12-24 14:25:08
来源:亿速云
阅读:71
作者:Leah
如何在php中利用curl对ip进行模拟?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
1.设置页面限制ip和来源访问
server.php<?php
$client_ip=getip();
$referer=getreferer();
$allow_ip='192.168.1.100';
$allow_referer='';
if($client_ip==$allow_ip&&strpos($referer,$allow_referer)===0){
echo'allowaccess';
}else{
echo'denyaccess';
}
//获取访问者ip
functiongetip(){
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;
}
//获取访问者来源
functiongetreferer(){
if(isset($_SERVER['HTTP_REFERER'])){
return$_SERVER['HTTP_REFERER'];
}
return'';
}
?>
2.使用curl正常访问<?php
functiondoCurl($url,$data=array(),$header=array(),$timeout=30){
$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='/server.php';
$response=doCurl($url);
echo$response;
?>
返回 deny access
3.使用curl模拟ip和来源进行访问
模拟来源
curl_setopt($ch, CURLOPT_REFERER, '来源');
模拟ip
curl_setopt($ch, CURLOPT_HTTPHEADER, array('CLIENT-IP: 模拟ip','X-FORWARDED-FOR: 模拟ip'));
完整代码如下:<?php
functiondoCurl($url,$data=array(),$header=array(),$referer='',$timeout=30){
$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);
//模拟来源
curl_setopt($ch,CURLOPT_REFERER,$referer);
$response=curl_exec($ch);
if($error=curl_error($ch)){
die($error);
}
curl_close($ch);
return$response;
}
//调用
$url='/server.php';
$data=array();
//设置IP
$header=array(
'CLIENT-IP:192.168.1.100',
'X-FORWARDED-FOR:192.168.1.100'
);
//设置来源
$referer='/';
$response=doCurl($url,$data,$header,$referer,5);
echo$response;
?>
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
如果觉得《php模拟IP请求 如何在php中利用curl对ip进行模拟》对你有帮助,请点赞、收藏,并留下你的观点哦!