您好,登錄后才能下訂單哦!
今天小編給大家分享一下php如何模擬不同ip訪問的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
php模擬不同ip訪問的方法:1、設置頁面限制ip和來源訪問;2、使用curl正常訪問;3、使用curl模擬ip和來源進行訪問,代碼如“curl_setopt($ch, CURLOPT_HTTPHEADER, array('CLIENT-IP: ip','X-FORWARDED-FOR: 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 = 'https://www.jb51.net';
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
function doCurl($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 = 'http://www.example.com/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
function doCurl($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 = '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 = 'https://www.jb51.net/';
$response = doCurl($url, $data, $header, $referer, 5);
echo $response;
?>
返回 allow access
以上就是“php如何模擬不同ip訪問”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。