这篇文章主要介绍了php之curl实现http与https请求的方法,分别讲述了PHP访问http网页与访问https网页的实例,以及相关的注意事项,需要的朋友可以参考下。
本文实例讲述了php之curl实现http与https请求的方法,分享给大家供大家参考。具体如下:
通常来说,php的curl函数组可以帮助我们把机器伪装成人的行为来抓取网站,下面来分享两个例子,一个是访问http网页,一个访问https网页,一起来看一下。
每次要使用curl的时候,总要查一堆资料。
现在将常用的几句保存下来,省的每次都去谷歌。
$url = "http://www.jb51.net"; $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);使用curl请求HTTPS:
$url = "https://www.jb51.net";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 设置头信息(当用IP直接访问时,加这个如:https://baibu.com -> 220.15.23.5)
// curl_setopt($ci, CURLOPT_HTTPHEADER, array("Host:baibu.com"));
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //这个是重点,规避ssl的证书检查。
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); // 跳过host验证
$data = curl_exec($curl);
curl_close($curl);
var_dump($data);
注意
当请求https的数据时,会要求证书,这时候,加上下面这两个参数,规避ssl的证书检查
复制代码 代码如下:
// https请求 不验证证书和hosts curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 从证书中检查SSL加密算法是否存在(默认不需要验证) curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);curl https请求代码
"fdipzone"); $header = array(); $response = curl_https($url, $data, $header, 5); echo $response; ?>baidu域名解析后https请求示例
为什么要解析域名后再请求呢?因为用curl请求网络,如果直接用域名baidu.com 这样会在请求中解析域名耗时很长,测试了几次有10几秒吧,如果直接用解析后的IP请求,则速度会大大提升。
请看下面的示例:
// $url = "https://www.baidu.com";
$url = "https://123.125.114.144";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 增加请求头文件
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Host:baidu.com"));
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//这个是重点。
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
$data = curl_exec($curl);
// 打印获取curl请求信息
// $curl_info = curl_getinfo( $curl );
// print_r($curl_info);
// 打印错误信息
// curl_error( $curl);
curl_close($curl);
var_dump($data);
更加完美的封装:
加载证书文件:
/**
* curl POST
*
* @param string url
* @param array 数据
* @param int 请求超时时间
* @param bool HTTPS时是否进行严格认证
* @return string
*/
function curlPost($url, $data = array(), $timeout = 30, $CA = true){
$cacert = getcwd() . "/cacert.pem"; //CA根证书
$SSL = substr($url, 0, 8) == "https://" ? true : false;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout-2);
if ($SSL && $CA) {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); // 只信任CA颁布的证书
curl_setopt($ch, CURLOPT_CAINFO, $cacert); // CA根证书(用来验证的网站证书是否是CA颁布)
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 检查证书中是否设置域名,并且是否与提供的主机名匹配
} else if ($SSL && !$CA) {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); // 检查证书中是否设置域名
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Expect:")); //避免data数据过长问题
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
//curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); //data with URLEncode
$ret = curl_exec($ch);
//var_dump(curl_error($ch)); //查看报错信息
curl_close($ch);
return $ret;
}
相关文章地址:详解使用PHP CURL访问HTTPS
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/21731.html
摘要:例如模拟表单向某个地址发送数据在无验证码的情况下模拟表单完成用户登陆上传某个文件到远程服务器请求远程服务器提供的某些功能支持和协议。我们在使用过程当中,如果没有基础根本不知道如何开发微信公众号。 微信微博公众号、QQ公众号、地图和很多的第三方功能提供都是采用http 的API(应用程序)形式向开发人员提供的功能。 如果你只希望能够做些简单的微信公众号、QQ公众号等小应用,深入学习PHP...
摘要:支持创建的库,能够连接通讯各种服务器使用各种协议。目前支持的协议有。在一些复杂的请求中,不能够设置请求头代理认证等相关信息,更不能向某个服务器提交表单数据,上传文件。文件类型可在文件名后以的格式指定。 概述 简介 在设计之初,cURL (Client URL Library)是一种作为使用 URL 语法传输数据的命令行工具。通过 cURL 库,我们可以在 PHP 脚本中自由地使用某种协...
摘要:不支持多进程,如果需要异步请求,非阻塞的方式,请选择。时会发送请求,类型为,是表单提交时最常见的一种。允许函数执行的最长秒数。设定请求中部分的内容。常规的使用来请求,功能强大,使用方便,按需配置。 在PHP后端的开发过程中,除了获取数据库的数据和处理数据的内部逻辑,往往还需要请求其他服务器接口的数据,我们一般有3种方式来获取数据,分别是: file_get_contents fsoc...
摘要:七夕啦,作为开发,妹子没得撩就撩下服务器吧,妹子有得撩的同学那就左拥妹子右抱服务器吧,况且妹子是要礼物的,服务器又不用。下面我们来看一些常用的情景,我们需要如何打扮自己配置参数才能正确撩妹正确撩到服务器。 七夕啦,作为开发,妹子没得撩就撩下服务器吧,妹子有得撩的同学那就左拥妹子右抱服务器吧,况且妹子是要礼物的,服务器又不用。好啦,长话短说再长说,祭出今天的工具——CURL(Client...
阅读 1328·2021-11-25 09:43
阅读 927·2021-11-22 14:45
阅读 4081·2021-09-30 09:48
阅读 1267·2021-08-31 09:41
阅读 2178·2019-08-30 13:52
阅读 2164·2019-08-30 11:24
阅读 1564·2019-08-30 11:07
阅读 1179·2019-08-29 12:15