Pour les sites Web dont les adresses IP et les sources sont restreintes, les méthodes de collecte normales ne fonctionneront pas. Cet article présentera une méthode pour utiliser la classe curl de PHP pour simuler des adresses IP et des sources, et collecter des sites Web avec des adresses IP et des sources restreintes.
1. Définir des restrictions de page pour l'accès IP et à la source
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. Utilisez curl pour accéder normalement
<?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. simuler l'IP et la source pour accéder
Source simulée
curl_setopt($ch, CURLOPT_REFERER, 'source');
IP simulée
curl_setopt($ch, CURLOPT_HTTPHEADER, array('CLIENT-IP : ip simulée','X-FORWARDED-FOR : ip simulée'));
Code complet Comme suit :
<?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;?>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!