天天看點

web自動化的利器 -- cURL

 cURL支援HTTP、HTTPS、FTP協定,也支援POST,cookie,斷點續傳,userAgent,extra header, 限速,檔案大小限制,進度條等等。

預設情況下,linux的發行版往往不帶cURL,需要自行安裝。

cURL通常将下載下傳檔案輸出到stdout,将進度資訊輸出到stderr,如果不想顯示進度資訊,可以使用--silent選項。

最簡單的使用:

$ curl URL --silent      

這樣的指令會把檔案輸出到終端,如果想寫入檔案,可以使用-O選項。

$ curl URL --silent -O      

如果不指明輸出檔案名,就會使用從URL中解析出來的檔案名,例如

$ curl http://linux.web-coding.tech/index.html --silent -O      

這樣就會得到一個index.html檔案。

如果無法從URL中解析出檔案名,指令執行時會報錯,是以你可以指定檔案名:

$ curl http://linux.web-coding.tech/ --silent -o index.html      

注意前者是-O,後者是-o。

curl支援從特定的檔案偏移量處繼續下載下傳,

$ curl URL -C offset      

offset就是以位元組為機關的整數。

如果隻想斷點續傳,可以這樣

$ curl URL -C -URL      

我們可以用curl存儲cookie為一個檔案

$ curl URL --cookie-jar cookie_file      

如果要指定cookie

$ curl URL --cookie "key1=value1;key2=value2"      

cookies是用key=value的形式給出,多個cookie以分号隔開。

有一些網頁會檢測通路的userAgent,這時候如果希望能按照指定的方式通路,就需要指定userAgent

$ curl URL --user-agent "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"      

用-A和--user-agent是一樣的。

同樣的,如果需要設定通路的header

$ curl URL -H "Host:linux.web-coding.tech" -H "Accept-Language: zh-CN"      

如果隻想擷取請求響應的頭,可以使用-I或者-head

$ curl -I http://linux.web-coding.tech      

如果帶寬有限,可以使用--limit-rate來限制下載下傳速度

$ curl URL --limit-rate 20k      

速度機關支援k和m。

還可以指定下載下傳的最大檔案大小

$ curl URL --max-filesize 2500000      

這裡檔案大小機關是byte。

curl指令也支援認證

$ curl -u username:password URL      
$ curl -u username URL      

繼續閱讀