引言:繼前文《模擬登陸並採集數據》,《模擬登陸帶有驗證碼的網站》,你們對CURL基本上已經有了認識,這一講簡單的說一下請求Https。php
在不少的站點,如TalkingData, BaiDu等等,一些請求協議都是走SSL,大白話來講就是Https,這種協議在模擬CURL時可能會出現請求不成功等等的問題。html
下面爲你們講一下解決方案。算法
這一講很簡單,但能說明問題……。api
異常提示
curl
大多數異常信息提示以下:證書驗證失敗。post
SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed 網站
切入主題ui
解決方法,在curl請求時,加入加密
// 跳過證書檢查 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 從證書中檢查SSL加密算法是否存在 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);
curl https post請求封裝代碼代碼url
<?php /** curl 獲取 https 請求 * @param String $url 請求的url * @param Array $data 要發送的數據 * @param Array $header 請求時發送的header * @param int $timeout 超時時間,默認30s */ function curl_https($url, $data=array(), $header=array(), $timeout=30){ $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳過證書檢查 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 從證書中檢查SSL加密算法是否存在 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 = 'https://www.example.com/api/message.php'; $data = array('name'=>'fdipzone'); $header = array(); $response = curl_https($url, $data, $header, 5); echo $response; ?>
未完待續……。
本站文章爲 寶寶巴士 SD.Team 原創,轉載務必在明顯處註明:(做者官方網站: 寶寶巴士 )
轉載自【寶寶巴士SuperDo團隊】 原文連接: http://www.cnblogs.com/superdo/p/4792496.html