利用php curl发送 post get https请求

//php脚本开始

/*Get请求远程内容函数

url请求网址

head模似请求头

foll是否自动跳转

ref来路

head是否设置头

*/

$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();//启动一个CURL会话

if($head){

curl_setopt($curl,CURLOPT_HTTPHEADER,$head);//模似请求头

}

curl_setopt($curl,CURLOPT_URL,$url);//要访问的地址

curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);//对认证证书来源的检查

curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,1);//从证书中检查SSL加密算法是否存在

curl_setopt($curl,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);//模拟用户使用的浏览器

@curl_setopt($curl,CURLOPT_FOLLOWLOCATION,$foll);//使用自动跳转

if($ref){

curl_setopt($curl,CURLOPT_REFERER,$ref);//带来的Referer

}else{

curl_setopt($curl,CURLOPT_AUTOREFERER,1);//自动设置Referer

}

curl_setopt($curl,CURLOPT_HTTPGET,1);//发送一个常规的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);//设置超时限制防止死循环

curl_setopt($curl,CURLOPT_HEADER,0);//显示返回的Header区域内容

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

$tmpInfo=curl_exec($curl);//执行操作

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

$data[]=curl_getinfo($curl);

curl_close($curl);//关键CURL会话

$data[]=$tmpInfo;

return$data;//返回数据

}

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

$curl=curl_init();//启动一个CURL会话

if($head){

curl_setopt($curl,CURLOPT_HTTPHEADER,$head);//模似请求头

}

curl_setopt($curl,CURLOPT_URL,$url);//要访问的地址

curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);//对认证证书来源的检查

curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,1);//从证书中检查SSL加密算法是否存在

curl_setopt($curl,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);//模拟用户使用的浏览器

@curl_setopt($curl,CURLOPT_FOLLOWLOCATION,$foll);//使用自动跳转

if($ref){

curl_setopt($curl,CURLOPT_REFERER,$ref);//带来的Referer

}else{

curl_setopt($curl,CURLOPT_AUTOREFERER,1);//自动设置Referer

}

curl_setopt($curl,CURLOPT_POST,1);//发送一个常规的Post请求

curl_setopt($curl,CURLOPT_POSTFIELDS,$post);// 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);//设置超时限制防止死循环

curl_setopt($curl,CURLOPT_HEADER,0);//显示返回的Header区域内容

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

$tmpInfo=curl_exec($curl);//执行操作

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

$data[]=curl_getinfo($curl);

curl_close($curl);//关键CURL会话

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

$data[]=$tmpInfo;

return$data;//返回数据

}

//截取字符

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

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

$rule= conver_trule($rule);//转义正则表达式特殊字符串

$rule=str_replace('\['.$getstr.'\]','\s*(.+?)\s*',$rule);//解析为正则表达式

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;

}

/**

*转义正则表达式字符串

*/

functionconver_trule($rule) {

$rule=preg_quote($rule,"/");//转义正则表达式

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

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

return$rule;

}

/*转编码*/

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);

}

推荐阅读更多精彩内容