Home  >  Article  >  Backend Development  >  Detailed explanation of using curl to simulate IP instances

Detailed explanation of using curl to simulate IP instances

零下一度
零下一度Original
2017-07-26 18:03:201767browse

For websites with restricted IP addresses and sources, normal collection methods will not work. This article will introduce a method to use PHP's curl class to simulate IPs and sources, and collect websites with restricted IPs and sources.

1. Set page restrictions for IP and source access

server.php

##
<?php 
$client_ip = getip();$referer = getreferer(); 
$allow_ip = &#39;192.168.1.100&#39;;$allow_referer = &#39;http://www.uxuew.cn&#39;; 
if($client_ip==$allow_ip && strpos($referer, $allow_referer)===0){  echo &#39;allow access&#39;;
}else{  echo &#39;deny access&#39;;
} 
 
// 获取访问者ipfunction 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. Use curl for normal access

<?phpfunction 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.uxuew.cn/server.php&#39;;$response = doCurl($url); 
echo $response;?>

3. Use curl to simulate ip and source for access

Simulated source

curl_setopt($ch, CURLOPT_REFERER, 'source');

Simulated ip

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

The complete code is as follows:

<?phpfunction 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;http://www.uxuew.cn/&#39;; 
$response = doCurl($url, $data, $header, $referer, 5); 
echo $response;?>

The above is the detailed content of Detailed explanation of using curl to simulate IP instances. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn