php curl的使用心得

  php的curl有很多參數,整理一下其中的常用參數的作用

  1.CURLOPT_SSL_VERIFYHOST

  設置為 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加埠)

 

 

Tags: