PHP Curl SSL routines:SSL3_READ_BYTES:sslv3错误解决方法

1,870次阅读
没有评论

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; // 返回数据
	    }
正文完
 

公众号