curl 命令是一個利用 URL 規則在命令行下工做的文件傳輸工具。它支持文件的上傳和下載,因此是綜合傳輸工具,但按傳統,習慣稱 curl 爲下載工具。css
它支持包括 HTTP、HTTPS、ftp等衆多協議,還支持 POST、cookies、認證、從指定偏移處下載部分文件、用戶代理字符串、限速、文件大小、進度條等特徵。html
-o
將文件保存爲命令行中指定的文件名的文件中-O
使用URL中默認的文件名保存文件到本地linux
# 將文件下載到本地並命名爲 mygettext.html curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html # 將文件保存到本地並命名爲gettext.html,後面的 url 能夠寫正則 curl -O http://www.gnu.org/software/gettext/manual/gettext.html # -O -O 能夠同時下載多個文件 # 不加這個選項會直接打印到標準輸出
有些網頁,好比 www.sina.com
, 發生了跳轉,直接 curl 的話沒法得到網頁源碼,這時須要加 -L
選項sql
# 遇到重定向時,使用該選項能夠將請求重定向到新的地址上 curl -L www.sina.com
當 curl 網頁時中途終端,可使用 -C
選項來接着已經完成的下載,已經下載過的文件不會被從新下載。cookie
# 當文件在下載完成以前結束該進程 $ curl -O http://www.gnu.org/software/gettext/manual/gettext.html ############## 20.1% $ curl -C -O http://www.gnu.org/software/gettext/manual/gettext.html ############### 21.1%
-i
顯示 http response 的頭信息,連同網頁代碼一塊兒。-I/--head
只顯示 response 頭部信息。-v
顯示一次http通訊的整個過程,包括端口鏈接和http request頭信息。
或者使用下面的命令得到更詳細的通訊過程:curl --trace output.txt www.sina.com
curl
對於 GET 方法,因爲參數數據在 url 上,所以,能夠直接 curl,這也是 curl 默認方法。
對於其餘方法,則須要使用 -X
選項進行指定,如 POST、DELETE 等。工具
$ curl -X POST --data "data=xxx" example.com
--data
等同於 -d
,有如下幾種用法:網站
-d @file # 將提交的參數放在文件裏 -d "string" # 多參數形式爲 xxx&xxx --data "string" --data-ascii "string" --data-binary "string" --data-urlencode "string # 含有特殊符號的須要進行 url 編碼
-e/--referer <url>
選項能夠僞造來源網址。google
# 僞裝是從 http://www.google.com 頁面跳轉到目的頁面的 $ curl --referer http://www.google.com http://man.linuxde.net
-A/--user-agent <string>
選項能夠僞造 UA。編碼
curl URL -A "Mozilla/5.0"
-H/--header
自定義頭部信息
curl -H "Host:man.linuxde.net" -H "accept-language:zh-cn" <url>
-x/--proxy <host[:port]>
設置代理
-b/--cookie <name=val/file>
選項用來設置 cookie 或者從指定文件中讀取 cookie 信息發起 http 請求。
$ curl --cookie "name=xxx;pass=xxx" www.example.com
-c/--cookie-jar <file>
選項能夠將 cookies 保存到指定文件。
-u/--user <user[:password]>
進行 http/ftp 的認證
$ curl -u name:password www.example.com $ curl -O ftp://name:passwd@ip:port/demo/curtain/bbstudy_files/style.css
$ curl -T test.sql ftp://name:passwd@ip:port/demo/curtain/bbstudy_files/
--limit-rate <rate>
選項設置傳輸速度
curl URL --limit-rate 50k
--max-filesize <bytes>
選項設置最大下載的文件總量
curl URL --max-filesize bytes