利用php curl發(fā)送 post get https請求

//php腳本開始

/*Get請求遠(yuǎn)程內(nèi)容函數(shù)

url請求網(wǎng)址

head模似請求頭

foll是否自動跳轉(zhuǎn)

ref來路

head是否設(shè)置頭

*/

$ip=$_SERVER['REMOTE_ADDR'];

$head=array(

'X-FORWARDED-FOR:'.$ip,

'CLIENT-IP:'.$ip,

'Accept-Language: zh-cn',

'Accept-Encoding:gzip,deflate',

'Connection: Keep-Alive',

'Cache-Control: no-cache'

);

$cookie_file=dirname(__FILE__).'/cookie.txt';//COOKIE存放地址

functionget($url,$head=false,$foll=1,$ref=false){

$curl=curl_init();//啟動一個(gè)CURL會話

if($head){

curl_setopt($curl,CURLOPT_HTTPHEADER,$head);//模似請求頭

}

curl_setopt($curl,CURLOPT_URL,$url);//要訪問的地址

curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);//對認(rèn)證證書來源的檢查

curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,1);//從證書中檢查SSL加密算法是否存在

curl_setopt($curl,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);//模擬用戶使用的瀏覽器

@curl_setopt($curl,CURLOPT_FOLLOWLOCATION,$foll);//使用自動跳轉(zhuǎn)

if($ref){

curl_setopt($curl,CURLOPT_REFERER,$ref);//帶來的Referer

}else{

curl_setopt($curl,CURLOPT_AUTOREFERER,1);//自動設(shè)置Referer

}

curl_setopt($curl,CURLOPT_HTTPGET,1);//發(fā)送一個(gè)常規(guī)的Post請求

curl_setopt($curl,CURLOPT_COOKIEJAR,$GLOBALS['cookie_file']);//存放Cookie信息的文件名稱

curl_setopt($curl,CURLOPT_COOKIEFILE,$GLOBALS['cookie_file']);//讀取上面所儲存的Cookie信息

curl_setopt($curl,CURLOPT_ENCODING,'gzip,deflate');//解釋gzip

curl_setopt($curl,CURLOPT_TIMEOUT,30);//設(shè)置超時(shí)限制防止死循環(huán)

curl_setopt($curl,CURLOPT_HEADER,0);//顯示返回的Header區(qū)域內(nèi)容

curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//獲取的信息以文件流的形式返回

$tmpInfo=curl_exec($curl);//執(zhí)行操作

if(curl_errno($curl)) {echo'Errno'.curl_error($curl);}

$data[]=curl_getinfo($curl);

curl_close($curl);//關(guān)鍵CURL會話

$data[]=$tmpInfo;

return$data;//返回?cái)?shù)據(jù)

}

functionpost($url,$head=false,$foll=1,$ref=false,$post){

$curl=curl_init();//啟動一個(gè)CURL會話

if($head){

curl_setopt($curl,CURLOPT_HTTPHEADER,$head);//模似請求頭

}

curl_setopt($curl,CURLOPT_URL,$url);//要訪問的地址

curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);//對認(rèn)證證書來源的檢查

curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,1);//從證書中檢查SSL加密算法是否存在

curl_setopt($curl,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);//模擬用戶使用的瀏覽器

@curl_setopt($curl,CURLOPT_FOLLOWLOCATION,$foll);//使用自動跳轉(zhuǎn)

if($ref){

curl_setopt($curl,CURLOPT_REFERER,$ref);//帶來的Referer

}else{

curl_setopt($curl,CURLOPT_AUTOREFERER,1);//自動設(shè)置Referer

}

curl_setopt($curl,CURLOPT_POST,1);//發(fā)送一個(gè)常規(guī)的Post請求

curl_setopt($curl,CURLOPT_POSTFIELDS,$post);// Post提交的數(shù)據(jù)包

curl_setopt($curl,CURLOPT_COOKIEJAR,$GLOBALS['cookie_file']);//存放Cookie信息的文件名稱

curl_setopt($curl,CURLOPT_COOKIEFILE,$GLOBALS['cookie_file']);//讀取上面所儲存的Cookie信息

curl_setopt($curl,CURLOPT_ENCODING,'gzip,deflate');//解釋gzip

curl_setopt($curl,CURLOPT_TIMEOUT,30);//設(shè)置超時(shí)限制防止死循環(huán)

curl_setopt($curl,CURLOPT_HEADER,0);//顯示返回的Header區(qū)域內(nèi)容

curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//獲取的信息以文件流的形式返回

$tmpInfo=curl_exec($curl);//執(zhí)行操作

if(curl_errno($curl)) {echo'Errno'.curl_error($curl);}

$data[]=curl_getinfo($curl);

curl_close($curl);//關(guān)鍵CURL會話

$tmpInfo=preg_replace('/script/','js',$tmpInfo);

$data[]=$tmpInfo;

return$data;//返回?cái)?shù)據(jù)

}

//截取字符

functionpreg_message($message,$rule,$getstr,$limit=1) {

$result=array('0'=>'');

$rule= conver_trule($rule);//轉(zhuǎn)義正則表達(dá)式特殊字符串

$rule=str_replace('\['.$getstr.'\]','\s*(.+?)\s*',$rule);//解析為正則表達(dá)式

if($limit==1) {

preg_match("/$rule/is",$message,$rarr);

if(!empty($rarr[1])) {

$result[0] =$rarr[1];

}

}else{

preg_match_all("/$rule/is",$message,$rarr);

if(!empty($rarr[1])) {

$result=$rarr[1];

}

}

return$result;

}

/**

*轉(zhuǎn)義正則表達(dá)式字符串

*/

functionconver_trule($rule) {

$rule=preg_quote($rule,"/");//轉(zhuǎn)義正則表達(dá)式

$rule=str_replace('\*','.*?',$rule);

$rule=str_replace('\|','|',$rule);

return$rule;

}

/*轉(zhuǎn)編碼*/

functionescape($str) {

preg_match_all("/[-].|[\x01-?]+/",$str,$r);

$ar=$r[0];

foreach($aras$k=>$v) {

if(ord($v[0]) <128)

$ar[$k] =rawurlencode($v);

else

$ar[$k] ="%u".bin2hex(iconv("GB2312","UCS-2",$v));

}

returnjoin("",$ar);

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容