PHP Curl SSL routines:SSL3_READ_BYTES:sslv3错误解决方法,因为目标服务器要求的SSL版本比较高,而我们写的CURL抓取代码版本太低。
就发生了14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
这个错误,怎么解决PHP Curl SSL routines:SSL3_READ_BYTES:sslv3错误呢,其实方法很简单。
既然他提示版本不行,哪么我们把CURL SSL的版本号改高一些,
把curl_setopt($curl, CURLOPT_SSLVERSION, 3);
修改为curl_setopt($curl, CURLOPT_SSLVERSION, 4);
就是修改大于3的版本号,这样就可以了!测试正常返回数据!
下面贴上php curl 取SSL网站的代码:
function post($url,$post){
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($curl, CURLOPT_SSLVERSION, 4);
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
@curl_setopt($curl, CURLOPT_FOLLOWLOCATION,0); // 使用自动跳转
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);}
curl_close($curl); // 关键CURL会话
$data=$tmpInfo;
return $data; // 返回数据
}
正文完