Home > Backend Development > PHP Problem > How to set ip in php curl

How to set ip in php curl

藏色散人
Release: 2023-03-05 10:04:01
Original
3603 people have browsed it

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

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

Return to deny access

3. Use curl to simulate ip and source to access

Simulate source

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

Simulate ip

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

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

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!

Related labels:
php
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