curl是一個訪問url的工具,可以用他構造http request報文,且可以解析伺服器返回的http response,額外還支援cookie特性,可以用curl完成web瀏覽器的準系統。當然curl還支援HTTPS/FTP/FTPS/TELNET/LDAP等協議。本文只探討其強大的HTTP功能。
通用文法:
curl [option] [URL...]
在處理URL的時候其支援類型於SHELL的名稱擴充功能,如http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html可以產生多個期望的URL
下面介紹選項功能:
不帶任何參數時 curl 將返回指定url中的資料並列印在螢幕上
-o out 將指定curl返回儲存為out檔案,內容從html/jpg到各種MIME類型檔案
-O 按伺服器上的名稱儲存下載的檔案
-r/--range from-to 下載指定range內的資料
-C 在儲存檔案時進行續傳
-A/--user-agent <ua> 指定發送請求的使用者代理程式 如 curl -A My-Agent/1.0.0 www.apple.com
-x ip:port 指定使用的http代理,如curl -x 192.168.1.1:8080 www.apple.com
-D head.txt 將伺服器的返回的header儲存為檔案,頭部的cookie也可被儲存 curl -D header.txt www.apple.com
-c <file> 儲存伺服器的cookie檔案
-b/--cookie <name=data> 向伺服器提交cookie,若無=則name視為檔案名稱 curl -b cookie.txt www.apple.com
-e url 設定引用頭的值
-T localfile 向伺服器PUT檔案 如curl -T 1.mp3 www.apple.com/upload.php
-d <key=value> 向伺服器POST表單資料 如curl -d "order=111&count=2" http://www.apple.com/buy
-F <key=value> 向伺服器POST表單 curl -F "web=@index.html;type=text/html" url.com
如果希望從本地檔案中擷取表單資料,則在檔案名稱前加@ 如 curl -d @data.xml http://www.apple.com
若希望從標準輸入擷取則用curl -d - http://www.apple.com
-E cert.pem 指定本地認證
-H <header:value> 為HTTP請求設定任意header及值。如curl -H "Connection:keep-alive" http://www.apple.com
-I 構造一個HEAD請求
-X/--request method 使用者定義的HTTP要求方法名如 curl -X GET www.baidu.com
--compressed 採用壓縮方式接收返回資料
--connect-timeout <s> 設定逾時時間
-v 詳細輸出,包含請求和響應的首部
--retry num
--retry timeo 指定重試的次數和間隔
--tcp-nodelay 開啟TCP_NODELAY選項 不進行捎帶確認
環境 變數:http_proxy [protocol://]<host>[:port]