使用curl類比ip執行個體詳解

來源:互聯網
上載者:User
對於限制了ip和來源的網站,使用正常的採集方式是不行的。本文將介紹一種方法,使用php的curl類實現類比ip和來源,實現採集限制ip和來源的網站。

1.設定頁面限制ip和來源訪問

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.使用curl正常訪問

<?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.使用curl類比ip和來源進行訪問

類比來源

curl_setopt($ch, CURLOPT_REFERER, '來源');

類比ip

curl_setopt($ch, CURLOPT_HTTPHEADER, array('CLIENT-IP: 類比ip','X-FORWARDED-FOR: 類比ip'));

完整代碼如下:

<?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;?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.