curl命令設定自定義的HTTP頭
問題:我正嘗試使用curl命令獲取一個URL,但除此之外我還想在傳出的HTTP請求中設定一些自定義的頭部欄位。我如何能夠在curl中使用自定義的HTTP頭呢?
curl是一個強大的命令列工具,它可以通過網路將資訊傳遞給伺服器或者從伺服器獲取資料。他支援很多的傳輸協議,尤其是HTTP/HTTPS以及其他諸如FTP/FTPS, RTSP, POP3/POP3S, SCP, IMAP/IMAPS協議等。當你使用curl向一個URL傳送HTTP請求的時候,它會使用一個預設只包含必要的頭部欄位(如:User-Agent, Host, and Accept)的HTTP頭。
在一些個例中,或許你想要在一個HTTP請求中覆蓋掉預設的HTTP頭或者新增一個新的自定義頭部欄位。例如,你或許想要重寫“HOST”欄位來測試一個
為了解決所有這些問題,curl提供了一個簡單的方法來完全控制傳出HTTP請求的HTTP頭。你需要的這個引數是“-H” 或者 “--header”。
為了定義多個HTTP頭部欄位,"-H"選項可以在curl命令中被多次指定。
例如:以下命令設定了3個HTTP頭部欄位。也就是說,重寫了“HOST”欄位,並且添加了兩個欄位("Accept-Language" 和 "Cookie")
- $ curl -H 'Host:157.166.226.25'-H 'Accept-Language:es'-H 'Cookie:ID=1234'
經測試:
1、頭名、冒號和頭值之間不能有空格。
2、自定義的http頭,需要加在標準頭後面。
對於"User-Agent", "Cookie", "Host"這類標準的HTTP頭部欄位,通常會有另外一種設定方法。curl命令提供了特定的選項來對這些頭部欄位進行設定:
- -A (or --user-agent): 設定 "User-Agent" 欄位.
- -b (or --cookie): 設定 "Cookie" 欄位.
- -e (or --referer): 設定 "Referer" 欄位.
例如,以下兩個命令是等效的。這兩個命令同樣都對HTTP頭的"User-Agent"字串進行了更改。
- $ curl -H "User-Agent: my browser" http://cnn.com
- $ curl -A "my browser" http://cnn.com
wget是另外一個類似於curl,可以用來獲取URL的命令列工具。並且wget也一樣允許你使用一個自定義的HTTP頭。點選這裡檢視wget命令的詳細資訊。