cURL命令行工具的使用

cURL原本是linux/unix上的命令行工具,但是也有Win的版本。已經被mac系統內置了。

其網址是:curl

可用於http, ftp, smtp, pop, .......多種協議。

我用到是Win下的版本,7.43.0,下載後把那個curl.exe放到了 c:/windows/system32下。

1) 訪問和保存網頁

直接

> curl http://www.baidu.com/

就把網頁內容顯示在終端上了。

> curl http://www.baidu.com/ >page.html

則可以另存為一個文件(用的是重定向功能)

但也可以用

> curl -o page.html 百度一下,你就知道

-o這個選項後面跟文件名,就是另存為文件了。

2)處理cookie

> curl -c mycookies.txt http://www.baidu.com/

-c選項,可以把訪問網站過程中的cookie信息存入一個文件

> curl -b mycookies.txt http://www.baidu.com/

-b選項,則可以利用已有的cookie信息文件來訪問網站

3)處理request/response頭部信息

> curl http://www.baidu.com/ -H "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36"

-H選項,可以在請求時發送一行頭部header信息

> curl http://www.baidu.com/ -A "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36"

-A選項,可以發送User Agent信息。(作用跟上面那句一致,因user agent信息也是請求頭的一種)

> curl -e "referer/url" http://www.baidu.com/

-e選項用於提供referer請求頭信息。

> curl -I http://www.baidu.com/

-I選項,只顯示響應response頭信息,而不顯示整個網頁代碼

> curl -D myheader.txt http://www.baidu.com/

-D選項,可以把response響應頭信息保存成文件

4)下載和保存文件、斷點續傳

> curl -O localhost:8080/mypic.jp

-O大寫的O選項,是用於保存網頁上的文件,並保持伺服器上的文件名

>curl -O cgi2.tky.3web.ne.jp/~zz[1-10].JPG

[1-10]是可變參數部分,這種方式是下載screen1.JPG、screen2.JPG、screen3.JPG、....、screen10.JPG

除了[ ],還有{ }, : 這些符號可以用於指定,詳細看Manual的URL部分。

>curl -r 0-10240 -o "zhao.part1" http:/cgi2.tky.3web.ne.jp/~zz &

curl -r 10241-20480 -o "zhao.part1" http:/cgi2.tky.3web.ne.jp/~zz &

curl -r 20481-40960 -o "zhao.part1" http:/cgi2.tky.3web.ne.jp/~zz &

curl -r 40961- -o "zhao.part1" http:/cgi2.tky.3web.ne.jp/~zz

-r 選項用於指定下載的位元組範圍,進行分段下載(linux下可實現多進程同時下載)。

win下可以下載後用copy /b命令進行合併。

> curl -C - -o file ftp://ftp.server.com/path/file

-C選項用於指定下載或上傳時進行斷點續傳處理

5)發送請求

>curl yahoo.com/login.cgi?

發送GET命令的請求時直接把參數寫在url

>curl -d "user=nickwolfe&password=12345" yahoo.com/login.cgi

-d選項用於指定發送請求時POST命令的數據

此外--data-urlencode選項可對數據進行urlencode轉義處理

例如,

> curl -d "value%201" hostname.com

就相當於

> curl --data-urlencode "value 1" hostname.com

會先將空格轉換成%20

5)設置代理,認證,證書等

> curl -x 123.45.67.89:1080 Yahoo

-x選項用於指定代理(伺服器和埠號)

>curl -E localcert.pem remote_server

-E選項用於訪問https協議時指定證書(這裡用的本地證書)

> curl -u username:password ftp://172.19.11.4

-u選項用於設定訪問的用戶名和密碼

> curl ftp://name:passwd@ip:port/path/file

ftp這種方式指定用戶名密碼也可以用。

6)文件上傳

> curl -T localfile -u name:passwd ftp://upload_site:port/path/

-T選項用於上傳文件,對於http協議來說是用的PUT命令進行上傳

>curl -F upload=@localfile -F nick=go cgi2.tky.3web.ne.jp/~zz

-F選項是用http協議的POST命令進行上傳表單方式的文件上傳

7)獲取幫助

> curl -h

顯示一般的幫助

>curl -M

顯示更詳細的幫助(manual)

也可以直接訪問:

curl.haxx.se/docs/manpa

也是這個內容。

此外,在Chrome新版下,F12的開發者面板中,network選項卡抓取的網頁請求信息,

可以用滑鼠右鍵菜單中的「save as cURL"來保存為cURL命令,十分方便。
推薦閱讀:

LabVIEW NXG 2.0 & 2017 SP1發布

TAG:開發工具 | 軟體推薦 |