php curl的使用心得

無盡的糞怒發表於2020-12-11

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

 

 

相關文章