首頁  >  文章  >  後端開發  >  php怎麼模擬不同ip訪問

php怎麼模擬不同ip訪問

藏色散人
藏色散人原創
2022-11-10 10:03:092273瀏覽

php模擬不同ip訪問的方法:1、設定頁面限制ip和來源訪問;2、使用curl正常訪問;3、使用curl模擬ip和來源進行訪問,代碼如“curl_setopt($ch, CURLOPT_HTTPHEADER, array('CLIENT-IP: ip','X-FORWARDED-FOR: ip'));」。

php怎麼模擬不同ip訪問

本教學操作環境:windows7系統、PHP8.1版、Dell G3電腦。

php怎麼模擬不同ip存取

php 使用curl模擬ip和來源進行存取的實作方法

#對於限制了ip和來源的網站,使用正常的訪問方式是無法訪問的。本文將介紹一種方法,使用php的curl類別實作模擬ip和來源,造訪那些限制了ip和來源的網站。

1.設定頁面限制ip與來源存取

server.php

<?php
 
$client_ip = getip();
$referer = getreferer();
 
$allow_ip = &#39;192.168.1.100&#39;;
$allow_referer = &#39;https://www.jb51.net&#39;;
 
if($client_ip==$allow_ip && strpos($referer, $allow_referer)===0){
  echo &#39;allow access&#39;;
}else{
  echo &#39;deny access&#39;;
}
 
 
// 获取访问者ip
function getip(){
  if(!empty($_SERVER[&#39;HTTP_CLIENT_IP&#39;])){
    $cip = $_SERVER[&#39;HTTP_CLIENT_IP&#39;];
  }elseif(!empty($_SERVER[&#39;HTTP_X_FORWARDED_FOR&#39;])){
    $cip = $_SERVER[&#39;HTTP_X_FORWARDED_FOR&#39;];
  }elseif(!empty($_SERVER[&#39;REMOTE_ADDR&#39;])){
    $cip = $_SERVER[&#39;REMOTE_ADDR&#39;];
  }else{
    $cip = &#39;&#39;;
  }
  return $cip;
}
 
// 获取访问者来源
function getreferer(){
  if(isset($_SERVER[&#39;HTTP_REFERER&#39;])){
    return $_SERVER[&#39;HTTP_REFERER&#39;];
  }
  return &#39;&#39;;
}
 
?>

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 = &#39;http://www.example.com/server.php&#39;;
$response = doCurl($url);
 
echo $response;
?>

返回deny access

3.使用curl模擬ip和來源進行存取

模擬來源

curl_setopt($ch, CURLOPT_REFERER, &#39;来源&#39;);

模擬ip

curl_setopt($ch, CURLOPT_HTTPHEADER, array(&#39;CLIENT-IP: 模拟ip&#39;,&#39;X-FORWARDED-FOR: 模拟ip&#39;));

完整程式碼如下:

<?php
function doCurl($url, $data=array(), $header=array(), $referer=&#39;&#39;, $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 = &#39;http://www.example.com/server.php&#39;;
$data = array();
 
// 设置IP
$header = array(
  &#39;CLIENT-IP: 192.168.1.100&#39;,
  &#39;X-FORWARDED-FOR: 192.168.1.100&#39;
);
 
// 设置来源
$referer = &#39;https://www.jb51.net/&#39;;
 
$response = doCurl($url, $data, $header, $referer, 5);
 
echo $response;
?>

返回allow access

推薦學習:《PHP影片教學

以上是php怎麼模擬不同ip訪問的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn