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

墨辰丷
Release: 2023-03-27 15:58:01
Original
4217 people have browsed it

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

?>
Copy after login

##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;
?>
Copy after login

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;
?>
Copy after login

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!

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template