Home  >  Article  >  Backend Development  >  How to set ip in php curl

How to set ip in php curl

藏色散人
藏色散人Original
2020-08-27 10:04:013569browse

php curl method to set IP: First obtain the visitor IP through the getip method; then use the "getreferer" method to obtain the visitor source; finally, set the page to restrict IP and source access.

How to set ip in php curl

Recommended: "PHP Video Tutorial"

php uses curl to simulate ip and source to access

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 the page to restrict 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.csdn.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 for normal access

<?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 to deny access

3. Use curl to simulate ip and source to access

Simulate source

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

Simulate ip

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

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.csdn.net/&#39;;
$response = doCurl($url, $data, $header, $referer, 5);
echo $response;
?>

Return allow access

The above is the detailed content of How to set ip in php curl. 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