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加埠)