Heim >Backend-Entwicklung >PHP-Tutorial >Ausführliche Erläuterung der Verwendung von Curl zur Simulation von IP-Instanzen
Bei Websites mit eingeschränkten IP-Adressen und -Quellen funktionieren normale Erfassungsmethoden nicht. In diesem Artikel wird eine Methode vorgestellt, mit der die Curl-Klasse von PHP verwendet werden kann, um IPs und Quellen zu simulieren und Websites mit eingeschränkten IPs und Quellen zu sammeln.
1. Legen Sie Seitenbeschränkungen für IP und Quellzugriff fest
server.php
<?php $client_ip = getip();$referer = getreferer(); $allow_ip = '192.168.1.100';$allow_referer = 'http://www.uxuew.cn'; 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 ''; } ?>
2. Verwenden Sie Curl, um normal zuzugreifen
<?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.uxuew.cn/server.php';$response = doCurl($url); echo $response;?>
3 Simuliere IP und Quelle für den Zugriff
Simulierte Quelle
curl_setopt($ch, CURLOPT_REFERER, 'source');
Simulierte IP
curl_setopt($ch, CURLOPT_HTTPHEADER, array('CLIENT-IP: simulierte IP','X-FORWARDED-FOR: simulierte IP'));
Vervollständigen Sie den Code wie folgt:
<?phpfunction 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.uxuew.cn/'; $response = doCurl($url, $data, $header, $referer, 5); echo $response;?>
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Verwendung von Curl zur Simulation von IP-Instanzen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!