linux 命令之 curl

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.comcurl

發送表單信息

對於 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]> 設置代理

設置 cookie

-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

參考

【1】 Linux curl 命令詳解
【2】linux curl 命令詳解,以及實例
【3】curl網站開發指南

相關文章
相關標籤/搜索