首先我們創(chuàng)建一個(gè)php頁(yè)面:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><form action="#" method="post"><input name="pass" type="text"></input><input name="submit" type="submit" value="Login"></input></form><?phpecho "Refer : " . $_SERVER['HTTP_REFERER'] . "<br>";if(isset($_POST['pass'])){ echo "Login successfully via PassWord <br> pass = " . $_POST['pass'] . "<br>"; setcookie("pass", "password");}else if(isset($_COOKIE['pass'])){ echo "Login successfully via COOKIE <br> pass = " . $_COOKIE['pass'] . "<br>";}else{ echo "Please login <br>";}?>這是一個(gè)簡(jiǎn)單的登錄頁(yè)面,可以通過(guò)輸入密碼登陸,也可以通過(guò)cookie登陸。
我們將通過(guò)這個(gè)頁(yè)面示范C語(yǔ)言通過(guò)libcurl庫(kù)進(jìn)行設(shè)置http請(qǐng)求頭、post、cookie的操作。
C代碼:
#include "stdafx.h"#include "curl/curl.h"size_t function( void *ptr, size_t size, size_t nmemb, void *stream){ Chrome/53.0.2785.104 Safari/537.36 Core/1.53.2141.400 QQBrowser/9.5.10219.400"); headers = curl_slist_append(headers,"Cache-Control: max-age=0"); headers = curl_slist_append(headers,"Content-Type: application/x-www-form-urlencoded"); headers = curl_slist_append(headers,"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); headers = curl_slist_append(headers,"Referer:http://www.baidu.com"); headers = curl_slist_append(headers,"Accept-Encoding: gzip, deflate"); headers = curl_slist_append(headers,"Accept-Language: zh-CN,zh;q=0.8");// headers = curl_slist_append(headers,"Cookie: olfsk=olfsk7257964002188215; hblid=nR2Zo2hcfSVtItpT3m39N804DHbNAfAp; pass=password");//也可以直接通過(guò)頭部提交cookie curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(curl, CURLOPT_COOKIEFILE,"");//CURLOPT_COOKIEFILE參數(shù)用于從文件讀取cookie。這里用于初始化cookie引擎,這樣后面的curl_easy_getinfo才能正確接收到cookie數(shù)據(jù). curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookie_open.txt");//保存從服務(wù)器返回的cookie到文件,也就是說(shuō)我們自己設(shè)置的并不會(huì)保存 curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1/VSCurlTest.php"); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, function); curl_easy_setopt(curl, CURLOPT_POST, 1);//設(shè)置CURLOPT_POST之后必須帶有POST數(shù)據(jù) curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "pass=23333&submit=%CC%E1%BD%BB"); curl_easy_setopt(curl, CURLOPT_COOKIE, "olfsk=olfsk7257964002188215; hblid=nR2Zo2hcfSVtItpT3m39N804DHbNAfAp; pass=adadad"); curl_easy_perform(curl); curl_easy_getinfo(curl, CURLINFO_COOKIELIST, &cookies);//獲取cookie,只獲取服務(wù)器返回的cookie cookie = cookies; while(cookie) { printf("%s/n", cookie->data); cookie = cookie->next; } curl_slist_free_all(headers); curl_slist_free_all(cookies); curl_easy_cleanup(curl); getchar(); return 0;}通過(guò)注釋這個(gè)例子的某些curl_easy_setopt調(diào)用,觀察輸出信息,大概也能理解libcurl的使用了。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注