PHP CURL的使用
PHP curl 的一些简单用法和封装,代码摘自网络。
首先安装curl模块,我用的是debian系统:
apt-get install php5-curl
PHP CURL 请求http链接,转自这里
$url = 'http://www.xxx.com';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
curl_close($curl);
var_dump($data);
PHP CURL 请求https链接,同样转自这里
$url = 'https://www.xxx.com';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//这个是重点。
$data = curl_exec($curl);
curl_close($curl);
var_dump($data);
//当请求https的数据时,会要求证书,这时候,加上下面这两个参数,规避ssl的证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
这是一个博友自己写的请求url的函数,转自这里
//参数1:访问的URL,参数2:post数据(不填则为GET),参数3:提交的cookies,参数4:是否返回cookies
function curl_request(url,post='',cookie='',returnCookie=0){
curl = curl_init();
curl_setopt(curl, CURLOPT_URL, url);
curl_setopt(curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)');
curl_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt(curl, CURLOPT_AUTOREFERER, 1);
curl_setopt(curl, CURLOPT_REFERER, "http://XXX");
if(post) {
curl_setopt(curl, CURLOPT_POST, 1);
curl_setopt(curl, CURLOPT_POSTFIELDS, http_build_query(post));
}
if(cookie) {
curl_setopt(curl, CURLOPT_COOKIE,cookie);
}
curl_setopt(curl, CURLOPT_HEADER,returnCookie);
curl_setopt(curl, CURLOPT_TIMEOUT, 10);
curl_setopt(curl, CURLOPT_RETURNTRANSFER, 1);
data = curl_exec(curl);
if (curl_errno(curl)) {
return curl_error(curl);
}
curl_close(curl);
if(returnCookie){
list(header,body) = explode("\r\n\r\n", data, 2);
preg_match_all("/Set\-Cookie:([^;]*);/",header, matches);info['cookie'] = substr(matches[1][0], 1);info['content'] = body;
returninfo;
}else{
return $data;
}
}
这是别人写的,请求使用GET和请求POST的URL,转自这里
//注意:这里的url已经包含参数了,不带参数你自己处理哦GET很简单
function curl_get_https(url){
curl = curl_init(); // 启动一个CURL会话
curl_setopt(curl, CURLOPT_URL, url);
curl_setopt(curl, CURLOPT_HEADER, 0);
curl_setopt(curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt(curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
curl_setopt(curl, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在tmpInfo = curl_exec(curl); //返回api的json对象
//关闭URL请求
curl_close(curl);
return tmpInfo; //返回json对象
}
/* PHP CURL HTTPS POST */
function curl_post_https(url,data){ // 模拟提交数据函数curl = curl_init(); // 启动一个CURL会话
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, 1); // 使用自动跳转
curl_setopt(curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt(curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt(curl, CURLOPT_POSTFIELDS, data); // Post提交的数据包
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);//捕抓异常
}
curl_close(curl); // 关闭CURL会话
returntmpInfo; // 返回数据,json格式
}