Home >Backend Development >PHP Tutorial >PHP implements the method of using curl to simulate IP and source for access

PHP implements the method of using curl to simulate IP and source for access

墨辰丷
墨辰丷Original
2018-05-23 11:21:104229browse

This article mainly introduces the method of using curl to simulate IP and source access in PHP. Interested friends can refer to it. I hope it will be helpful to everyone.

For websites that have restricted IP addresses and sources, they cannot be accessed using normal access methods. This article will introduce a method to use PHP's curl class to simulate IP and source, and access websites with restricted IP and source.

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.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. Use curl to access normally

<?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;
?>

Return

deny access

3. Use curl to simulate IP and source for access

Simulation source

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

Simulation ip

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

The complete code is as follows:

<?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;http://www.jb51.net/&#39;;

$response = doCurl($url, $data, $header, $referer, 5);

echo $response;
?>

Return

allow access

The above is the entire content of this article, I hope it will be useful for everyone’s learning help.


Related recommendations:

PHPBasic knowledge review_php basics

PHPCorrectly parse UTF-8 string skills application_php basics

php realizes image uploading and cutting functions_php skills

The above is the detailed content of PHP implements the method of using curl to simulate IP and source for access. 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