創意數字品牌全案服務

BRANDING DESIGN AGENCY.

品牌咨詢電話

0571-89937222
curl 選項屬性配置說明
05-22 閱讀:2124

這幾天工作有大量用curl,curl就是模擬瀏覽器來傳輸數據,他支持很多的協議HTPP,HTTPS,FTP….等等很多協議,在做采集和模擬用戶來執行一些操作的時候非常有用的。
使用CURL主要是四個步驟:
1、初始化URL
2、設置請求的一些參數(COOKIE,HEAD…)
3、執行請求
4、關閉資源
先說一個簡單的采集,一般在獲取一個網頁的內容的時候我們最方便就是使用file_get_contents()函數來獲取,現在我們通過CURL來抓取一個網頁的內容

 代碼如下復制代碼

$ch = curl_init();//初始化一個資源
       curl_setopt($ch,CURLOPT_URL,”http://www.mapenggang.com”);//設置我們要獲取的網頁
       curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//關閉直接輸出
       $string= curl_exec($ch);
       curl_close($ch);


注:重點在于curl_setopt()這個函數的第二個參數(下面會有一些常用的資料)
這樣我們就可以得到這個網頁的內容,如果只有CURL來做些這就大材小用了,CURL其實可以用來做更加神奇的東西。
最近剛到一家創業型的新公司(尼瑪,選擇這個公司真的是比較糾結,因為手里有好幾個offer,但是這邊給的工資待遇很低,因為創業型公司嗎。我也不知道為什么會選擇這家公司,反正是為了選擇這家公司,朋友都很不解,其實我也不知道為什么會選擇這家,其他公司的工資大概是這家公司的兩倍,希望這次沒有選錯,不然.想死的心都會有,說了這么多廢話),做的是現在比較火的微信公眾平臺的開發,因為微信現在開放的接口特別的少,所以通過接口得到的東西特別的少(尼瑪,小馬哥你什么時候多放的借口啊!),但是官方提供的操作平臺有很多接口中沒有數據所以,我們需要去自己去找一些數據了,好吧,主角上場CURL。

首先公眾平臺是要登錄才能訪問,那我就先登錄吧(廢話),首先需要抓包分析一下正常提交數據,這里我就不截圖了(博客在bae平臺上,編輯器還沒有時間去理他,不太好使),通過抓包分析得出,微信的公眾平臺使用的是ajax登錄,且密碼在提交之前已經進行了md5加密(好像正規應該叫md5散列把,而且標準的MD5散列應該是128位的,不過為了方便存儲和傳輸就現在最多的就是32和16位了,剛了解,慚愧),還有很重要一點就是,微信公眾平臺采用的是https協議進行登錄的。最爽的一點就是不用驗證碼,sogay。不然老費勁了,分析到這就可以了。Come on !!!!

 代碼如下復制代碼


$password = md5($password);//因為剛才抓包發現是md5加密過的,所以這里我們提前把密碼加密號


$post = "username={$username}&pwd={$password}&f=json&imgcode=";
$loginUrl = "https://mp.weixin.qq.com/cgi-bin/login?";//微信登錄的地址

//這里的頭信息都是必須要設置的,這些你都可以在剛才抓包的時候獲取到


$headerArray = array(
'Accept:application/json, text/javascript, */*',
'Content-Type:application/x-www-form-urlencoded',
'Referer:https://mp.weixin.qq.com/'
);

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$loginUrl);
// 對認證證書來源的檢查,0表示阻止對證書的合法性的檢查。
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// 從證書中檢查SSL加密算法是否存在
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//關閉直接輸出
curl_setopt($ch,CURLOPT_POST,1);//使用post提交數據
curl_setopt($ch,CURLOPT_POSTFIELDS,$post);//設置 post提交的數據
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36');//設置用戶代理
curl_setopt($ch,CURLOPT_HTTPHEADER,$headerArray);//設置頭信息

curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);//設置cookie的保存目錄,這里很重要,你懂的(cookie你都不存,你以為你是麻花騰啊!)
$loginData = curl_exec($ch);//這里會返回token,需要處理一下。

//獲取到token的值

$loginData = json_decode($loginData,true);

$token = explode("=",$loginData['ErrMsg']);

$token = array_pop($token);

echo "登錄微信系統成功
";


curl_close($ch);


 

上邊就是登錄微信公眾平臺的代碼了,經測試十分好用+_+。
這幾天微信公眾平臺接觸的比較多,這個只是萬里長征的第一步,后邊我會分享一下如何將微信的fakeid 和 openid對應起來,實現自己可以自己的平臺上顯示用戶的完整信息(據我了解,網上現在對于如何fakeid 和 openid對應來沒有很好的解決方案,通過好幾天的奮斗現在已經可以對應起來的,比較麻煩,且已有的用戶是無法對起來的(其實這個理論上是可以的,但是沒有做出來不亂說,其實是沒有時間去做這個,有機會可以嘗試,不過實現需要已有系統的支持,也就是你現在的系統必須記錄了和用回的聊天記錄(我說什么了?我什么都沒有說!)))。
體育老師啊,你說你不好好帶你的體育課,沒有跑來教我們語文,這幾天接觸不少能寫的東西太多了,所以想到那就寫到那了,有點亂,幾天主要用的是CURL,所以今天說點CURL的實例,正好就把手頭的登錄微信公眾平臺的東西寫上來了,CURL到此結束,后邊我可能會寫更多關于微信公眾平臺的東西。
附:本文來源: csdn


選項

可選value

備注

CURLOPT_AUTOREFERER

當根據Location:重定向時,自動設置header中的Referer:信息。


CURLOPT_BINARYTRANSFER

在啟用CURLOPT_RETURNTRANSFER的時候,返回原生的(Raw)輸出。


CURLOPT_COOKIESESSION

啟用時curl會僅僅傳遞一個session cookie,忽略其他的cookie,默認狀況下cURL會將所有的cookie返回給服務端。session cookie是指那些用來判斷服務器端的session是否有效而存在的cookie


CURLOPT_CRLF

啟用時將Unix的換行符轉換成回車換行符。


CURLOPT_DNS_USE_GLOBAL_CACHE

啟用時會啟用一個全局的DNS緩存,此項為線程安全的,并且默認啟用。


CURLOPT_FAILONERROR

顯示HTTP狀態碼,默認行為是忽略編號小于等于400HTTP信息。


CURLOPT_FILETIME

啟用時會嘗試修改遠程文檔中的信息。結果信息會通過curl_getinfo()函數的CURLINFO_FILETIME選項返回。 curl_getinfo().


CURLOPT_FOLLOWLOCATION

啟用時會將服務器服務器返回的"Location: "放在header中遞歸的返回給服務器,使用CURLOPT_MAXREDIRS可以限定遞歸返回的數量。


CURLOPT_FORBID_REUSE

在完成交互以后強迫斷開連接,不能重用。


CURLOPT_FRESH_CONNECT

強制獲取一個新的連接,替代緩存中的連接。


CURLOPT_FTP_USE_EPRT

啟用時當FTP下載時,使用EPRT (或 LPRT)命令。設置為FALSE時禁用EPRTLPRT,使用PORT命令only.


CURLOPT_FTP_USE_EPSV

啟用時,在FTP傳輸過程中回復到PASV模式前首先嘗試EPSV命令。設置為FALSE時禁用EPSV命令。


CURLOPT_FTPAPPEND

啟用時追加寫入文件而不是覆蓋它。


本文關鍵詞:選項 屬性 配置 說明 curl
返回
今日足彩推荐预测分析