curl:抓取https数据


编	写:袁	亮
时	间:2015-07-15
说	明:使用curl抓取https数据

一、为什么需要?
	未了安全考虑,很多网站使用了https域名
	https需要客户端和服务端都做openssl的验证
	
二、抓取设置
	1、方法一,设置为不验证证书【直接用这个,除非安全性要求特别高】
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
		ps:抓百度的时候需要注意,referer设置为百度本身的返回会又问题,可以自己尝试看看
	
	2、设置一个正确的证书验证
		2.1 下载最新的证书到本地
			wget http://curl.haxx.se/ca/cacert.pem
		2.2 设置使用证书
			curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,true); ;
			curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).'/cacert.pem');
			
三、一些错误情况(出错的情况下,开启curl_error($ch)查看)
	1、centos系统,如果不知道证书地址,则使用系统证书
		/etc/pki/tls/certs/ca-bundle.crt
	2、如果系统证书过期,或者错误,则会显示签名出错
		通过wget http://curl.haxx.se/ca/cacert.pem 来更新最新的证书
	3、显示“段错误”,有可能是libcurl和php版本不一致导致
		线上centos 6.2和php 5.2.17,出现过该问题
	4、当不能确定是否是某台服务器出问题的时候,写个简单的demo,分别在几台服务器运行看下是否有问题
	
四、尚未解决
	1、采用浏览器下载或者导出的证书,在程序中一直未能使用成功
	
	
	
	

发表评论