一個簡單的增強型PHP curl函數


啥都不說,先上代碼

<?PHP /*
  *  @author  小伍
  */
echo "<pre>"; $proxy = array('url'=>'http://localhost:8087'); print_r(xCurl('http://www.cnblogs.com/picaso',true,array(),null,null,$proxy)); function xCurl($url,$return=true,$postData=array(),$cookiePath=null,$referer=null,$proxy=array(),$userAgent="Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)") { $ch = curl_init(); $optionArray = array( CURLOPT_AUTOREFERER => true, CURLOPT_URL => $url,  //目標URL CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => 1,  //不直接打印顯示 CURLOPT_CONNECTTIMEOUT => 3,  //連接超時3s CURLOPT_TIMEOUT => 12,      //執行超時12s CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false  //此處兩個SSL相關參數是適應HTTPS網頁 ); if(count($proxy) > 0){  //網頁代理設置,代理,大家都懂的,可以做很多事 $optionArray[CURLOPT_HTTPPROXYTUNNEL] = true;  //HTTP代理開關 if(!empty($proxy['type']) && $proxy['type'] == 'socket'){ $optionArray[CURLOPT_PROXYTYPE] = CURLPROXY_SOCKS5;  //可以使用socket代理(×這里我沒有測試socket代理) } $optionArray[CURLOPT_PROXY] = $proxy['url'];if (!empty($proxy['auth'])) {              //代理驗證
$optionArray[CURLOPT_PROXYAUTH] = false;$optionArray[CURLOPT_PROXYUSERPWD] = $proxy['auth'];  //格式 username:password } } if(!empty($referer)) {    //HTTP頭部的referer $optionArray[CURLOPT_REFERER] = $referer; } if(!empty($userAgent)) {    //HTTP頭部的UserAgent $optionArray[CURLOPT_USERAGENT] = $userAgent; } if (!empty($cookiePath)) {    //Cookie的保存與傳遞(cookiePath是一個cookie文件,自定義即可) $optionArray[CURLOPT_COOKIEFILE] = $cookiePath;  //傳遞cookie $optionArray[CURLOPT_COOKIEJAR] = $cookiePath;  //保存cookie } if(count($postData) > 0){    //post傳值 $optionArray[CURLOPT_POST] = 1; $optionArray[CURLOPT_POSTFIELDS] = $postData; } curl_setopt_array($ch, $optionArray); $content = curl_exec($ch); if(!curl_errno($ch)){ $output = curl_getinfo($ch); } curl_close($ch); if($return) { $output['content'] = $content; return $output; } else { echo $content; } } ?>

 

 

1、簡介:

  能夠抓取HTTP和HTTPS頁面;

  能夠記錄、使用cookie;

  能夠使用HTTP代理(socket代理可以使用,效果未檢測),支持代理驗證;

  可以自定義Referer、UserAgent;

   檢查鏈路信息,包含狀態碼等(返回結果數組詳見curl_getinfo函數數據解釋)

2、用途:

  換IP作業:郵件群發,注冊帳號,發布軟文等;

  接口處理:API接口處理(可以精簡本代碼);

  網頁采集:太不道德了

 

3、擴展功能:

  CURL也可以偽造IP,別干壞事哦~~

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

4、用法:

  會調用函數就會使用,So easy~

 

只是一函數而已,參數顯得很亂,有興趣可以改寫成class類


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM