PHP Curl Header詳解
在使用PHP進行網絡編程的過程中,我們經常需要使用到Curl技術,而在Curl的使用中,header也是一個非常重要的概念。本文將詳細講解PHP Curl Header所包含的內容,給予舉例說明,并總結Curl Header所使用的一些常見操作。
header的基本概念
header(頭部)指的是HTTP請求和響應消息中的元數據信息。它們主要用來描述請求/響應的屬性、條件和意圖。由于Web服務器和客戶端通過HTTP傳遞的是消息和響應,所以頭部也都包含在HTTP消息頭中。比如User-Agent、Accept和Authorization等用來描述請求的信息就是頭部的一部分。
如果我們需要模擬一個HTTP請求并且需要修改頭部信息,那么在PHP中我們可以使用Curl來實現。比如下面這段代碼:
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.google.com"); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $response = curl_exec($ch); curl_close ($ch);這個例子中,我們請求了www.google.com并打印出了返回的HTTP頭。下面我們詳細解釋一下這個例子中各個選項的含義。 CURLOPT_HEADER — 是否返回header CURLOPT_HEADER是指是否返回頭部信息。如果設為true,那么curl_exec返回的內容中會包含HTTP頭。一些典型的HTTP頭常見于下文。 CURLOPT_FOLLOWLOCATION — 是否自動跳轉至目標頁面 在瀏覽網站的時候我們經常會遇到網站進行了自動跳轉。這個時候我們再對Curl進行模擬時,就需要使用到CURLOPT_FOLLOWLOCATION:如果為true,在模擬HTTP請求的時候,curl會自動跳轉至目標頁面。 CURLOPT_RETURNTRANSFER — 是否返回請求結果 CURLOPT_RETURNTRANSFER則是指curl_exec返回的時候是否直接輸出返回結果。如果為true,返回結果會以字符串形式呈現,而不是直接輸出。這使我們可以對請求的結果進行加工處理或者輸出保存。如果您的代碼不使用該選項,那么請求到的數據值會直接輸出到屏幕上,而不是以變量的形式傳到后面的代碼中進行處理。 CURLOPT_SSL_VERIFYHOST — 是否檢測https CURLOPT_SSL_VERIFYHOST和CURLOPT_SSL_VERIFYPEER則分別指定了CURL如何檢測HTTPS協議。通常我們在進行HTTPS的抓取操作時,需要進行檢測,以確保我們的抓取操作不被攔截或者篡改。 舉例說明 為了更好地說明header的使用,下面我們舉個例子。假設我們要訪問一個需要身份認證的網站,對方要求我們在header中發送用戶名和密碼后才能訪問。實現代碼如下:
$username='test'; $password='1234'; $url = 'http://www.test.com/xxx.php'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, "username=$username&password=$password"); $headers = array(); $headers[] = 'Content-type: application/x-www-form-urlencoded'; $headers[] = 'Authorization: Basic '. base64_encode("$username:$password"); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch);在這個例子中,我們首先設置了要訪問的URL地址。接著,我們定義了header,包含了身份認證信息。最后,我們使用Curl進行post抓取,并把header放到CURLOPT_HTTPHEADER選項里。這樣,我們就能成功模擬一個身份認證的請求,獲取到數據。因此,使用header,我們可以實現更多的Curl抓取機制。 結語 相信通過本文的介紹,您已經對PHP Curl Header有了更清晰的認識。尤其是在制作采集程序、模擬登錄的時候,header的使用更是非常必要。希望我們的講解能夠給您帶來啟示,逐步掌握PHP技術中的Curl Header操作。