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.
server.php
<?php$client_ip = getip();$referer = getreferer();$allow_ip = '192.168.1.100';$allow_referer = 'http://www.csdn.net';if($client_ip==$allow_ip && strpos($referer, $allow_referer)===0){ echo 'allow access'; }else{ echo 'deny access'; }// 获取访问者ipfunction getip(){ if(!empty($_SERVER['HTTP_CLIENT_IP'])){ $cip = $_SERVER['HTTP_CLIENT_IP']; }elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ $cip = $_SERVER['HTTP_X_FORWARDED_FOR']; }elseif(!empty($_SERVER['REMOTE_ADDR'])){ $cip = $_SERVER['REMOTE_ADDR']; }else{ $cip = ''; } return $cip; }// 获取访问者来源function getreferer(){ if(isset($_SERVER['HTTP_REFERER'])){ return $_SERVER['HTTP_REFERER']; } return ''; }?>
<?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 = 'http://www.example.com/server.php';$response = doCurl($url);echo $response;?>
Return deny access
Simulation source
curl_setopt($ch, CURLOPT_REFERER, '来源');
Simulation ip
curl_setopt($ch, CURLOPT_HTTPHEADER, array('CLIENT-IP: 模拟ip','X-FORWARDED-FOR: 模拟ip'));
The complete code is as follows:
<?php function doCurl($url, $data=array(), $header=array(), $referer='', $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 = 'http://www.example.com/server.php';$data = array(); // 设置IP$header = array( 'CLIENT-IP: 192.168.1.100', 'X-FORWARDED-FOR: 192.168.1.100'); // 设置来源$referer = 'http://www.csdn.net/';$response = doCurl($url, $data, $header, $referer, 5); echo $response; ?>
Returnallow access
This article explains the relevant knowledge of PHP using curl to simulate IP and source for access. For more related content, please pay attention to PHP Chinese website.
Related recommendations:
Converting NULL data through mysql method
About the PHP function using a variable number of parameters Content
How to call Sina API through php to generate short links
The above is the detailed content of How to use curl to simulate ip and source for access through php. For more information, please follow other related articles on the PHP Chinese website!