加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php使用curl读取远程http和https网页内容实例源码

发布时间:2020-05-30 19:14:36 所属栏目:PHP 来源:互联网
导读:php curl是利用URL语法在命令行方式下工作的开源文件传输工具,本文章向大家介绍php使用curl访问https与http网页的示例源码,需要的朋友可以参考一下。

phpcurl函数组可以帮助我们把机器为装成人行为来抓取网站,下面来分享两个例子,一个是访问http网页,一个访问https网页,下面一起看看。

php使用curl访问https页面

今日在做一个项目,需要curl获取第三方的API,对方的API是https方式的。

之前使用curl能获取http请求,但今天获取https请求时,出现了以下的错误提示:证书验证失败。

SSL certificate problem,verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

解决方法为在curl请求时,加入如下代码

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); // 跳过证书检查

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

完整代码:

/** curl 获取 https 请求

* @param String $url 请求的url

* @param Array $data 要發送的數據

* @param Array $header 请求时发送的header

* @param int $timeout 超时时间,默认30s

* 作者:脚本之家教程 http://www.manongjc.com

*/

function curl_https($url,$data=array(),$header=array(),$timeout=30){

$ch = curl_init();

curl_setopt($ch,false); // 跳过证书检查

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

curl_setopt($ch,CURLOPT_URL,$url);

curl_setopt($ch,CURLOPT_HTTPHEADER,$header);

curl_setopt($ch,CURLOPT_POST,true);

curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($data));

curl_setopt($ch,CURLOPT_RETURNTRANSFER,CURLOPT_TIMEOUT,$timeout);

$response = curl_exec($ch);

if($error=curl_error($ch)){

die($error);

}

curl_close($ch);

return $response;

}

// 调用

$url = 'https://www.example.com/api/message.php';

$data = array('name'=>'fdipzone');

$header = array();

$response = curl_https($url,$data,$header,5);

echo $response;

?>

php使用curl访问http页面

如何我们请求的是http网页,则不需要以下代码:

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

直接这样就可以:

$curl=curl_init();

curl_setopt($curl,"http://www.manongjc.com/article/1579.html");

curl_setopt($curl,CURLOPT_HEADER,1);

curl_setopt($curl,CURLOPT_PROXYTYPE,CURLPROXY_SOCKS5);//使用了SOCKS5代理

curl_setopt($curl,CURLOPT_PROXY,"fuck.3322.org:1080");

$data = array('user' => "geek",'password' => 'fuck');

curl_setopt($curl,$data);

//curl_setopt($curl,CURLOPT_HTTPPROXYTUNNEL,1);如果是HTTP代理

//curl_setopt($curl,CURLOPT_COOKIEJAR,'cookie.txt');cookie你懂的

$request = curl_exec($curl);

//var_dump($request);

curl_close($curl);

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读