PHP Curl實現登陸採集

來源:互聯網
上載者:User
關鍵字 PHP Curl實現登陸採集

登陸採集,是指某些網頁內容需要使用帳號登陸以後,才可以查看,傳統的file_get_contents無法擷取到登陸後才可查看的內容。
curl是PHP中一個強大的組件,可以實現HTTP協議的HEAD,GET,POST方式訪問資料,通過POST即可類比使用者登陸,然後拿到SESSION再擷取具體的頁面。

注意事項:
1、網頁編碼問題,如果對方的網頁編碼與你的不一致,請自行使用iconv或mb_string進行編碼轉換。
2、COOKIE儲存的路徑必須是絕對路徑,一開始測試的時候,在WINDOWS上怎麼也儲存不上COOKIE,請確認你的路徑。

廢話不多說,直接看代碼:

'coldstar','password'=>'123456.');$cookiepath = $_SERVER["DOCUMENT_ROOT"] .'\\' .MD5($UserURL);//以登陸網域名稱的MD5值設定為COOKIE檔案名稱$html = curl_post_contents($UserURL,$UserData,$cookiepath);//類比登陸if($html){if(stripos($html,'登陸成功')){$html = curl_get_contents($testURL,True,$cookiepath);//擷取真正的內容}else{$html = '登陸失敗';}}echo $html;function curl_get_contents($url,$usecookie = 0,$cookiepath = ''){$userAgent = 'Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1)';$referer = $url;$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);//設定訪問的url地址curl_setopt($ch, CURLOPT_TIMEOUT, 10);//設定逾時curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);//使用者訪問代理 User-Agentcurl_setopt($ch, CURLOPT_REFERER, $referer);//設定 refererif($usecookie){curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiepath);//COOKIE的儲存路徑,傳送時使用}curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);//跟蹤301curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//返回結果$r = curl_exec($ch);curl_close($ch);return $r;}function curl_post_contents($url,$data = array(),$cookiepath = ''){$userAgent = 'Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1)';$referer = $url;if(!is_array($data) || !$url) return '';foreach($data as $key=>$value){$post .= urlencode($key).'='.$value.'&';}rtrim($post ,'&');$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);//設定訪問的url地址curl_setopt($ch, CURLOPT_TIMEOUT, 10);//設定逾時curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);//使用者訪問代理 User-Agentcurl_setopt($ch, CURLOPT_REFERER, $referer);//設定 referercurl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);//跟蹤301curl_setopt($ch, CURLOPT_POST, 1);//指定post資料curl_setopt($ch, CURLOPT_POSTFIELDS, $post);//添加變數curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiepath);//COOKIE的儲存路徑,返回時儲存COOKIE的路徑curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//返回結果$r = curl_exec($ch);curl_close($ch);return $r;}?>

原文:http://www.yanghengfei.com/archives/506/

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.