php curl的使用心得
php的curl有很多参数,整理一下其中的常用参数的作用
设置为 1
是检查服务器SSL证书中是否存在一个公用名(common name)。译者注:公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain)。 设置成 2,会检查公用名是否存在,并且是否与提供的主机名匹配。 0
为不检查名称。 在生产环境中,这个值应该是 2
(默认值)。
2.CURLOPT_SSL_VERIFYPEER
false
禁止 cURL 验证对等证书(peer's certificate)。要验证的交换证书可以在 CURLOPT_CAINFO
选项中设置,或在 CURLOPT_CAPATH
中设置证书目录。
3.CURLOPT_RETURNTRANSFER
true
将curl_exec()获取的信息以字符串返回,而不是直接输出。curl_exec()默认是会输出请求内容的,相当于echo xxx;如果设置了该参数curl会把请求到的参数赋值成变量返回。
4.CURLOPT_USERAGENT
在HTTP请求中包含一个"User-Agent: "
头的字符串。一般用来模拟浏览器行为。
5.CURLOPT_COOKIE
设定 HTTP 请求中"Cookie: "
部分的内容。多个 cookie 用分号分隔,分号后带一个空格(例如, "fruit=apple; colour=red
")。访问管理比较严格的网站会检查cookie,如果想采集这类网站上的数据,那么这个参数是必不可少的。
6.CURLOPT_TIMEOUT
允许 cURL 函数执行的最长秒数。设置最长连接时间,当curl陷入假死,自动断开连接,然后重新发起请求。
7.CURLOPT_FOLLOWLOCATION
true
时将会根据服务器返回 HTTP 头中的 "Location: "
重定向。(注意:这是递归的,"Location: "
发送几次就重定向几次,除非设置了 CURLOPT_MAXREDIRS
,限制最大重定向次数。)有的网站会有重定向操作,加上这个操作curl会跟随网站的重定向抓取。
8.CURLOPT_REFERER
在HTTP请求头中"Referer: "
的内容。在http请求中Referer表示请求来路,一些网站会验证Referer来作为反爬措施。
9.CURLOPT_HTTPHEADER
设置 HTTP 头字段的数组。格式: array('Content-type: text/plain', 'Content-length: 100')。这个参数可以设置http的header,通常用来伪造信息之类的,比设置
CLIENT-IP和X-FORWARDED-FOR来伪造ip,不过能否伪造成功就要看被爬取的网站是怎么识别ip的了。
10.CURLOPT_PROXYTYPE
代理类型,可以是 CURLPROXY_HTTP
(默认值) CURLPROXY_SOCKS4
、 CURLPROXY_SOCKS5
、 CURLPROXY_SOCKS4A
或 CURLPROXY_SOCKS5_HOSTNAME.很多网站会通过ip访问频率来反爬,严格的甚至还会封ip。使用这个参数可以配置代理ip,降低单个ip访问频次。
11.CURLOPT_PROXYPORT
代理服务器的端口。端口也可以在CURLOPT_PROXY
中设置。
12.CURLOPT_PROXY
HTTP 代理通道。(有CURLOPT_PROXYPORT参数写为ip就行,没用CURLOPT_PROXYPORT参数写文ip加端口)