有项任务要用到优酷视频的开发接口,我想着用curl来访问获取数据。按照一般的写法写好请求,打印下数据一致是返回为false值。刚开始以为有什么防抓取的检测等,加了useragent参数也不行。后来想到接口url使用的是https协议,这个需要ssl认证的。后来在网上查找相关资料得到解决,现在记录下来。
在请求中,加入下面两行代码即可
php;auto-links:false;">curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
上面代码表示不需要进行ca认证和证书中域名认证
下面附上整个代码
<?php $ch=curl_init(); $url='https://openapi.youku.com/v2/videos/by_category.json?';//请求接口参数未写完整,不影响代码 curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); $res=curl_exec($ch); $res=json_decode($res,1); var_dump($res);?>
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,true); // 只信任CA颁布的证书$cacert=getcwd().'/youku.crt'; //证书的位置curl_setopt($ch, CURLOPT_CAINFO, $cacert); // CA根证书curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,1); //// 检查证书中是否设置域名