天天看點

curl指令

《Linux就該這麼學》是一本基于最新Linux系統編寫的入門必讀書籍,内容面向零基礎讀者,由淺入深漸進式教學,銷量保持國内第一,年銷售量預期超過10萬本。點此免費線上閱讀。

curl指令是一個利用URL規則在指令行下工作的檔案傳輸工具。它支援檔案的上傳和下載下傳,是以是綜合傳輸工具,但按傳統,習慣稱curl為下載下傳工具。作為一款強力工具,curl支援包括HTTP、HTTPS、ftp等衆多協定,還支援POST、cookies、認證、從指定偏移處下載下傳部分檔案、使用者代理字元串、限速、檔案大小、進度條等特征。做網頁處理流程和資料檢索自動化,curl可以祝一臂之力。

-a/--append

上傳檔案時,附加到目标檔案

-A/--user-agent <string>

設定使用者代理發送給伺服器

-anyauth

可以使用“任何”身份驗證方法

-b/--cookie <name=string/file>

cookie字元串或檔案讀取位置

     --basic

使用HTTP基本驗證

-B/--use-ascii

使用ASCII /文本傳輸

-c/--cookie-jar <file>

操作結束後把cookie寫入到這個檔案中

-C/--continue-at <offset>

斷點續轉

-d/--data <data>

HTTP POST方式傳送資料

     --data-ascii <data>

以ascii的方式post資料

     --data-binary <data>

以二進制的方式post資料

     --negotiate

使用HTTP身份驗證

     --digest

使用數字身份驗證

     --disable-eprt

禁止使用EPRT或LPRT

     --disable-epsv

禁止使用EPSV

-D/--dump-header <file>

把header資訊寫入到該檔案中

     --egd-file <file>

為随機資料(SSL)設定EGD socket路徑

     --tcp-nodelay

使用TCP_NODELAY選項

-e/--referer

來源網址

-E/--cert <cert[:passwd]>

用戶端證書檔案和密碼 (SSL)

     --cert-type <type>

證書檔案類型 (DER/PEM/ENG) (SSL)

     --key <key>

私鑰檔案名 (SSL)

     --key-type <type>

私鑰檔案類型 (DER/PEM/ENG) (SSL)

     --pass <pass>

私鑰密碼 (SSL)

     --engine <eng>

加密引擎使用 (SSL). "--engine list" for list

     --cacert <file>

CA憑證 (SSL)

     --capath <directory>

CA目錄 (made using c_rehash) to verify peer against (SSL)

     --ciphers <list>

SSL密碼

     --compressed

要求傳回是壓縮的形勢 (using deflate or gzip)

     --connect-timeout <seconds>

設定最大請求時間

     --create-dirs

建立本地目錄的目錄層次結構

     --crlf

上傳是把LF轉變成CRLF

-f/--fail

連接配接失敗時不顯示http錯誤

     --ftp-create-dirs

如果遠端目錄不存在,建立遠端目錄

     --ftp-method [multicwd/nocwd/singlecwd]

控制CWD的使用

     --ftp-pasv

使用 PASV/EPSV 代替端口

     --ftp-skip-pasv-ip

使用PASV的時候,忽略該IP位址

     --ftp-ssl

嘗試用 SSL/TLS 來進行ftp資料傳輸

     --ftp-ssl-reqd

要求用 SSL/TLS 來進行ftp資料傳輸

-F/--form <name=content>

模拟http表單送出資料

     --form-string <name=string>

-g/--globoff

禁用網址序列和範圍使用{}和[]

-G/--get

以get的方式來發送資料

-H/--header <line>

自定義頭資訊傳遞給伺服器

     --ignore-content-length

忽略的HTTP頭資訊的長度

-i/--include

輸出時包括protocol頭資訊

-I/--head

隻顯示請求頭資訊

-j/--junk-session-cookies

讀取檔案進忽略session cookie

     --interface <interface>

使用指定網絡接口/位址

     --krb4 <level>

使用指定安全級别的krb4

-k/--insecure

允許不使用證書到SSL站點

-K/--config

指定的配置檔案讀取

-l/--list-only

列出ftp目錄下的檔案名稱

     --limit-rate <rate>

設定傳輸速度

     --local-port<NUM>

強制使用本地端口号

-m/--max-time <seconds>

設定最大傳輸時間

     --max-redirs <num>

設定最大讀取的目錄數

     --max-filesize <bytes>

設定最大下載下傳的檔案總量

-M/--manual

顯示全手動

-n/--netrc

從netrc檔案中讀取使用者名和密碼

     --netrc-optional

使用 .netrc 或者 URL來覆寫-n

     --ntlm

使用 HTTP NTLM 身份驗證

-N/--no-buffer

禁用緩沖輸出

-o/--output

把輸出寫到該檔案中

-O/--remote-name

把輸出寫到該檔案中,保留遠端檔案的檔案名

-p/--proxytunnel

使用HTTP代理

     --proxy-anyauth

選擇任一代理身份驗證方法

     --proxy-basic

在代理上使用基本身份驗證

     --proxy-digest

在代理上使用數字身份驗證

     --proxy-ntlm

在代理上使用ntlm身份驗證

-P/--ftp-port <address>

使用端口位址,而不是使用PASV

-q

作為第一個參數,關閉 .curlrc

-Q/--quote <cmd>

檔案傳輸前,發送指令到伺服器

-r/--range <range>

檢索來自HTTP/1.1或FTP伺服器位元組範圍

--range-file

讀取(SSL)的随機檔案

-R/--remote-time

在本地生成檔案時,保留遠端檔案時間

     --retry <num>

傳輸出現問題時,重試的次數

     --retry-delay <seconds>

傳輸出現問題時,設定重試間隔時間

     --retry-max-time <seconds>

傳輸出現問題時,設定最大重試時間

-s/--silent

靜默模式。不輸出任何東西

-S/--show-error

顯示錯誤

     --socks4 <host[:port]>

用socks4代理給定主機和端口

     --socks5 <host[:port]>

用socks5代理給定主機和端口

     --stderr <file>

-t/--telnet-option <OPT=val>

Telnet選項設定

     --trace <file>

對指定檔案進行debug

     --trace-ascii <file>

Like --跟蹤但沒有hex輸出

     --trace-time

跟蹤/詳細輸出時,添加時間戳

-T/--upload-file <file>

上傳檔案

     --url <URL>

Spet URL to work with

-u/--user <user[:password]>

設定伺服器的使用者和密碼

-U/--proxy-user <user[:password]>

設定代理使用者名和密碼

-w/--write-out [format]

什麼輸出完成後

-x/--proxy <host[:port]>

在給定的端口上使用HTTP代理

-X/--request <command>

指定什麼指令

-y/--speed-time

放棄限速所要的時間,預設為30

-Y/--speed-limit

停止傳輸速度的限制,速度時間

檔案下載下傳

curl指令可以用來執行下載下傳、發送各種HTTP請求,指定HTTP頭部等操作。如果系統沒有curl可以使用<code>yum install curl</code>安裝,也可以下載下傳安裝。curl是将下載下傳檔案輸出到stdout,将進度資訊輸出到stderr,不顯示進度資訊使用<code>--silent</code>選項。

這條指令是将下載下傳檔案輸出到終端,所有下載下傳的資料都被寫入到stdout。

使用選項<code>-O</code>将下載下傳的資料寫入到檔案,必須使用檔案的絕對位址:

選項<code>-o</code>将下載下傳資料寫入到指定名稱的檔案中,并使用<code>--progress</code>顯示進度條:

斷點續傳

curl能夠從特定的檔案偏移處繼續下載下傳,它可以通過指定一個便宜量來下載下傳部分檔案:

使用curl設定參照頁字元串

參照頁是位于HTTP頭部中的一個字元串,用來表示使用者是從哪個頁面到達目前頁面的,如果使用者點選網頁A中的某個連接配接,那麼使用者就會跳轉到B網頁,網頁B頭部的參照頁字元串就包含網頁A的URL。

使用<code>--referer</code>選項指定參照頁字元串:

用curl設定cookies

使用<code>--cookie "COKKIES"</code>選項來指定cookie,多個cookie使用分号分隔:

将cookie另存為一個檔案,使用<code>--cookie-jar</code>選項:

用curl設定使用者代理字元串

有些網站通路會提示隻能使用IE浏覽器來通路,這是因為這些網站設定了檢查使用者代理,可以使用curl把使用者代理設定為IE,這樣就可以通路了。使用<code>--user-agent</code>或者<code>-A</code>選項:

其他HTTP頭部資訊也可以使用curl來發送,使用<code>-H</code>"頭部資訊" 傳遞多個頭部資訊,例如:

curl的帶寬控制和下載下傳配額

使用<code>--limit-rate</code>限制curl的下載下傳速度:

指令中用k(千位元組)和m(兆位元組)指定下載下傳速度限制。

使用<code>--max-filesize</code>指定可下載下傳的最大檔案大小:

如果檔案大小超出限制,指令則傳回一個非0退出碼,如果指令正常則傳回0。

用curl進行認證

使用curl選項 -u 可以完成HTTP或者FTP的認證,可以指定密碼,也可以不指定密碼在後續操作中輸入密碼:

隻列印響應頭部資訊

通過<code>-I</code>或者<code>-head</code>可以隻列印出HTTP頭部資訊:

上一篇: ifconfig指令
下一篇: ifconfig 源碼

繼續閱讀