天天看點

curl指令

curl指令

curl

是一個指令行工具,用于使用任何受支援的協定

HTTP

FTP

IMAP

POP3

SCP

SFTP

SMTP

TFTP

TELNET

LDAP

FILE

向網絡伺服器傳輸資料或從網絡伺服器傳輸資料,其被設計成無需使用者互動即可工作,是以非常适合在

shell

腳本中使用,該軟體提供代理支援、使用者身份驗證、

FTP

上傳、

HTTP posting

SSL

連接配接、

cookie

、檔案斷點傳輸、

metalink

等功能。

文法

curl [options] [URL...]
           

參數

  • -#, --progress-bar

    : 讓

    curl

    将進度顯示為一個簡單的進度條,而不是标準的、更具資訊性的計量器。
  • -:, --next

    : 告訴

    curl

    對以下

    URL

    和相關選項使用單獨的操作,這允許您發送多個

    URL

    請求,每個請求都有自己的特定選項,例如不同的使用者名或自定義請求,在

    7.36.0

    中添加`。
  • -0, --http1.0

    :

    HTTP

    ,告訴

    curl

    使用

    HTTP 1.0

    版本,而不是内部首選的

    HTTP 1.1

  • --http1.1

    HTTP

    curl

    HTTP

    版本

    1.1

    ,這是内部預設版本,在

    7.33.0

    添加。
  • --http2

    HTTP

    curl

    HTTP 2

    送出請求,這需要建構底層

    libcurl

    來支援它,在

    7.33.0

  • --no-npn

    : 禁用

    NPN TLS

    擴充,如果

    libcurl

    是使用支援

    NPN

    SSL

    庫建構的,則

    NPN

    預設啟用,支援

    HTTP 2

    libcurl

    NPN

    https

    會話期間與伺服器協商對

    HTTP 2

    的支援,在

    7.36.0

  • --no-alpn

    ALPN TLS

    libcurl

    是用一個支援

    ALPN

    SSL

    庫建構的,那麼

    ALPN

    HTTP 2

    libcurl

    ALPN

    https

    HTTP 2

    7.36.0

  • -1, --tlsv1

    SSL

    ,強制

    curl

    在與遠端

    TLS

    伺服器協商時使用

    tls1.x

    版本,您可以使用選項

    --tlsv1.0

    --tlsv1.1

    --tlsv1.2

    來更精确地控制

    TLS

    版本。
  • -2, --sslv2

    SSL

    ,當與遠端

    SSL

    伺服器協商時,強制

    curl

    SSL version 2

  • -3, --sslv3

    SSL

    SSL

    curl

    SSL version 3

  • -4, --ipv4

    : 如果

    curl

    能夠将一個位址解析為多個

    IP

    版本(如果它支援

    IPv6

    ),則此選項告訴

    curl

    僅将名稱解析為

    IPv4

    位址。
  • -6, --ipv6

    curl

    IP

    IPv6

    curl

    IPv6

  • -a, --append

    FTP/SFTP

    ,當在

    FTP

    上傳中使用時,這将告訴

    curl

    追加到目标檔案,而不是覆寫它,如果檔案不存在,就建立它,注意,這個選項會被一些

    SSH

    伺服器忽略,包括

    OpenSSH

  • -A, --user-agent <agent string>

    HTTP

    ,指定要發送到

    HTTP

    伺服器的使用者代理字元串,如果這個字段沒有設定為

    Mozilla/4.0

    ,一些做得不好的

    cgi

    就會失敗,要對字元串中的空格進行編碼,請用單引号将字元串括起來,當然,這也可以通過

    -H,-header

    選項進行設定,如果多次使用此選項,将使用最後一個選項。
  • --anyauth

    HTTP

    curl

    自己找出身份驗證方法,并使用遠端站點聲稱支援的最安全的方法,這是通過首先執行請求并檢查響應頭來完成的,是以可能會導緻額外的網絡往返,這是用來代替設定特定的身份驗證方法的,您可以使用

    --basic

    --digest

    --ntlm

    --negotiate

    來實作,請注意,如果從

    stdin

    上傳資料,則不建議使用

    --anyauth

    ,因為它可能需要發送兩次資料,然後用戶端必須能夠倒帶,如果從

    stdin

    上傳時需要,上傳操作将失敗。
  • -b, --cookie <name=data>

    HTTP

    ,将資料作為

    cookie

    傳遞到

    HTTP

    伺服器,它應該是以前在

    Set Cookie:

    行中從伺服器接收到的資料,資料格式應為

    NAME1=VALUE1; NAME2=VALUE2

    ,如果行中沒有使用

    =

    符号,則會将其視為用于讀取以前存儲的

    cookie

    行的檔案名,如果這些行比對,則應在此會話中使用,使用這個方法還可以激活

    cookieparser

    ,它也會讓

    curl

    記錄傳入的

    cookie

    ,如果您将這個方法與

    -L,-location

    選項結合使用,這可能會很友善,要從中讀取

    cookie

    的檔案的檔案格式應該是純

    HTTP

    頭或

    Netscape/Mozilla cookie

    檔案格式,請注意,用

    -b, --cookie

    指定的檔案僅用作輸入,檔案中不會存儲

    Cookie

    ,要存儲

    cookie

    ,請使用

    -c, --cookiejar

    選項,或者甚至可以使用

    -D, --dump-header

    HTTP

    頭儲存到檔案中,如果多次使用此選項,将使用最後一個選項。
  • -B, --use-ascii

    FTP/LDAP

    ,啟用

    ASCII

    傳輸,對于

    FTP

    ,這也可以通過使用以

    type=A

    結尾的

    URL

    來實作,對于

    win32

    系統,此選項使發送到标準輸出的資料處于文本模式。
  • --basic

    HTTP

    curl

    HTTP

    基本身份驗證,這是預設值,并且此選項通常是無意義的,除非您使用它來重寫先前設定的選項,該選項設定了不同的身份驗證方法,例如

    --ntlm

    --digest

    --negotiate

  • -c, --cookie-jar <file name>

    HTTP

    ,指定在完成操作後要将所有

    cookie

    寫入哪個檔案,

    curl

    寫入以前從指定檔案讀取的所有

    cookie

    以及從遠端伺服器接收的所有

    cookie

    ,如果沒有已知的

    cookies

    ,則不會寫入任何檔案,檔案将使用

    Netscape cookie

    檔案格式寫入,如果将檔案名設定為單破折号

    -

    ,則

    cookie

    将寫入标準輸出,此指令行選項将激活生成

    curl

    記錄并使用

    cookie

    cookie

    引擎,另一種激活它的方法是使用

    -b, --cookie

    選項,如果不能建立或寫入

    cookiejar

    ,整個

    curl

    操作不會失敗,甚至不會清楚地報告錯誤,使用

    -v

    會顯示一個警告,但這是關于這種可能緻命的情況的唯一可見回報,如果多次使用此選項,将使用最後指定的檔案名。
  • -C, --continue-at <offset>

    : 以給定的偏移量繼續

    /

    恢複以前的檔案傳輸,給定的偏移量是将被跳過的确切位元組數,從源檔案的開頭開始計算,然後再将其傳輸到目标,如果與上載一起使用,

    curl

    将不使用

    FTP

    伺服器指令大小,使用

    -C -

    告訴

    curl

    自動找出在哪裡

    /

    如何繼續傳輸,然後它使用給定的輸出

    /

    輸入檔案來解決這個問題,如果多次使用此選項,将使用最後一個選項。
  • --ciphers <list of ciphers>

    SSL

    ,指定要在連接配接中使用的密碼,密碼清單必須指定有效的密碼,此為的

    SSL

    密碼清單詳細資訊

    http://www.openssl.org/docs/apps/ciphers.html

    NSS

    密碼的實作方式與

    OpenSSL

    GnuTLS

    不同,

    NSS

    密碼的完整清單位于以下

    URL

    NSSCipherSuite

    條目中

    http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives

    ,如果多次使用此選項,将使用最後一個選項。
  • --compressed

    HTTP

    ,使用

    curl

    支援的算法之一請求壓縮響應,并儲存未壓縮的文檔,如果使用此選項并且伺服器發送不受支援的編碼,

    curl

    将報告錯誤。
  • --connect-timeout <seconds>

    : 允許連接配接到伺服器的最長時間(秒),這隻會限制連接配接階段,一旦

    curl

    連接配接了,這個選項就不再有用了,自

    7.32.0

    以來,此選項接受十進制值,但實際逾時的精度将随着指定逾時的十進制精度增加而降低,另請參見

    -m, -max time

    選項,如果多次使用此選項,将使用最後一個選項。
  • --create-dirs

    : 當與

    -o

    選項結合使用時,

    curl

    将根據需要建立必要的本地目錄層次結構,此選項建立與

    -o

    選項一起提到的

    dir

    ,而不是其他選項,如果

    -o

    檔案名不使用

    dir

    ,或者它提到的

    dir

    已經存在,則不會建立

    dir

    ,要在使用

    FTP

    SFTP

    時建立遠端目錄,請嘗試

    --FTP create dirs

  • --crlf

    FTP

    ,上傳時将

    LF

    轉換為

    CRLF

    ,适用于

    MVS (OS/390)

  • --crlfile <file>

    HTTPS/FTPS

    ,提供一個使用

    PEM

    格式的檔案,其中包含一個證書吊銷清單,該清單可以指定要被視為吊銷的對等證書,如果多次使用此選項,将使用最後一個選項,在

    7.19.7

    增加。
  • -d, --data <data>

    HTTP

    ,将

    POST

    請求中指定的資料發送到

    HTTP

    伺服器,就像使用者填寫

    HTML

    表單并按下

    submit

    按鈕時浏覽器所做的那樣,這将導緻

    curl

    使用内容類型

    application/x-www-form-urlencoded

    将資料傳遞給伺服器,與

    -F, --form

    比較,

    -d, --data

    --data ascii

    相同,要釋出純二進制的資料,應該改用

    --data binary

    選項,要對表單字段的值進行

    URL

    編碼,可以使用

    --data urlencode

    ,如果這些選項中的任何一個在同一指令行上被多次使用,則指定的資料段将與分隔的

    &

    符号合并在一起,是以,使用

    -d name=daniel -d skill=lousy

    将生成一個類似

    name=daniel&skill=lousy

    post

    塊,如果資料以

    @

    開頭,其餘的應該是從中讀取資料的檔案名,如果要從

    stdin

    讀取資料,也可以指定多個檔案,例如,從名為

    foobar

    的檔案釋出資料将使用

    --data@foobar

    完成,當

    --data

    被告知從這樣的檔案中讀取時,回車符和換行符将被去除。
  • -D, --dump-header <file>

    : 将協定頭寫入指定的檔案,當您想存儲

    HTTP

    站點發送給您的頭檔案時,使用此選項非常友善,通過使用

    -b, -cookie

    選項,可以在第二次

    curl

    調用中讀取來自頭的

    cookie

    ,但是,

    -c,-cookie jar

    選項是存儲

    cookie

    的更好方法,在

    FTP

    中使用時,

    FTP

    伺服器響應行被認為是

    headers

    ,是以儲存在那裡,如果多次使用此選項,将使用最後一個選項。
  • --data-ascii <data>

    : 請參見

    -d, --data

  • --data-binary <data>

    HTTP

    ,這将完全按照指定的方式釋出資料,無需任何額外處理,如果資料以

    @

    開頭,其餘的應該是檔案名,資料的釋出方式與

    --dataascii

    類似,隻是保留了換行符和回車符,并且從不進行轉換,如果多次使用此選項,則第一個選項後面的選項将附加

    -d, -data

    中所述的資料。
  • --data-urlencode <data>

    HTTP

    ,這會釋出資料,與其他

    --data

    選項類似,但會執行

    URL

    編碼,在

    7.18.0

    中添加,為了符合

    CGI

    <data>

    部分應以名稱開頭,後跟分隔符和内容規範,可以使用以下文法之一将

    <data>

    部分傳遞給

    curl

    • content

      : 這将使

      curl URL

      編碼内容并将其傳遞,請小心,使内容不包含任何

      =

      @

      符号,因為這将使文法與以下其他情況之一比對。
    • =content

      curl URL-encode

      編碼内容并将其傳遞,前面的

      =

      符号不包括在資料中。
    • name=content

      curl URL

      編碼内容部分并将其繼續傳遞,請注意,名稱部分應該已經過

      URL

      編碼。
    • @filename

      : 這将使卷曲加載來自給定檔案(包括任何換行符)的資料,對該資料進行

      URL

      編碼并在

      POST

      中傳遞。
    • name@filename

      curl

      從給定的檔案(包括任何換行符)加載資料,

      URL

      對該資料進行編碼并在

      POST

      中傳遞,名稱部分附加了一個等号,結果是

      name=urlencoded

      檔案内容,注意,名稱應該已經是

      URL

      編碼的。
  • --delegation LEVEL

    : 設定

    LEVEL

    ,告訴伺服器在處理使用者憑據時允許委托什麼,通常與

    GSS/kerberos

    一起使用。
    • none

      : 不允許任何授權。
    • policy

      : 委托當且僅當

      Kerberos

      服務票證中設定了

      OK-AS-DELEGATE

      标志時,這是領域政策的問題。
    • always

      : 無條件地允許伺服器進行委托。
  • --digest

    HTTP

    HTTP

    摘要身份驗證,這是一種身份驗證方案,可防止密碼以明文形式通過有線發送,将此選項與正常的

    -u, -user

    選項結合使用,以設定使用者名和密碼,如果多次使用此選項,則隻使用第一個選項。
  • --disable-eprt

    FTP

    curl

    在執行活動

    FTP

    傳輸時禁用

    EPRT

    LPRT

    指令,

    curl

    通常會首先嘗試使用

    EPRT

    ,然後在使用

    PORT

    之前使用

    LPRT

    ,但是有了這個選項,它會立即使用

    PORT

    EPRT

    LPRT

    是原始

    FTP

    協定的擴充,可能無法在所有伺服器上工作,但它們以比傳統的

    PORT

    指令更好的方式實作了更多功能,

    --eprt

    可以用來再次顯式地啟用

    eprt

    ,并且

    --no eprt

    --disable eprt

    的别名,禁用

    EPRT

    隻會更改活動行為,如果要切換到被動模式,則不需要使用

    -P, -ftp

    端口或強制使用

    -ftp pasv

  • --dns-interface <interface>

    curl

    通過

    <interface>

    發送傳出的

    DNS

    請求,此選項對應于

    --interface

    (不影響

    DNS

    ),提供的字元串必須是接口名稱(不是位址),此選項要求

    libcurl

    是使用支援此操作的解析器後端建構的,

    c-ares

    後端是唯一這樣的,在

    7.33.0

    中添加。
  • --dns-ipv4-addr <ip-address>

    curl

    在發出

    ipv4dns

    請求時綁定到

    <ip address>

    ,以便

    DNS

    請求源自此位址,參數應為單個

    IPv4

    位址,此選項要求

    libcurl

    c-ares

    7.33.0

  • --dns-ipv6-addr <ip-address>

    : 在發出

    ipv6dns

    請求時,告訴

    curl

    綁定到

    <ip address>

    DNS

    IPv6

    libcurl

    c-ares

    7.33.0

  • --dns-servers <ip-address,ip-address>

    : 設定要使用的

    DNS

    伺服器清單,而不是系統預設值,

    IP

    位址清單應以逗号分隔,端口号也可以選擇在每個

    IP

    位址後給出

    <Port number>

    ,此選項要求

    libcurl

    c-ares

    7.33.0

  • -e, --referer <URL>

    HTTP

    referer Page

    資訊發送到

    HTTP

    伺服器,當然,這也可以用

    -H, -header

    标志來設定,當與

    -L, -location

    一起使用時,您可以在

    --referer URL

    後面附加

    ; auto

    ,使

    curl

    location:header

    後面自動設定上一個

    URL

    auto

    字元串可以單獨使用,即使您沒有設定初始

    --referer

  • -E, --cert <certificate[:password]>

    SSL

    curl

    在使用

    HTTPS

    FTPS

    或其他基于

    SSL

    的協定擷取檔案時使用指定的用戶端證書檔案,如果使用安全傳輸,證書必須為

    PKCS#12

    格式,如果使用任何其他引擎,證書必須為

    PEM

    格式,如果未指定可選密碼,将在終端上查詢該密碼,注意,這個選項假設一個

    certificate

    是私鑰和私鑰連接配接在一起的,請參見

    --cert

    --key

    以獨立地指定它們。
  • --engine <name>

    : 選擇用于密碼操作的

    OpenSSL

    加密引擎,使用

    --engine list

    列印建構時支援的引擎的清單,請注意,并非所有

    engine

    在運作時都可用。
  • --environment

    RISC OS ONLY

    -w

    選項支援的名稱設定一系列環境變量,以便在運作

    curl

    之後更容易地提取有用的資訊。
  • --egd-file <file>

    SSL

    ,指定守護程序套接字的路徑名,套接字用于為

    SSL

    連接配接的随機引擎播種,另請參見

    --random file

    選項。
  • --cert-type <type>

    SSL

    curl

    提供的證書是什麼類型的證書,

    PEM

    DER

    ENG

    是公認的類型,如果未指定,則假定為

    PEM

  • --cacert <CA certificate>

    SSL

    curl

    使用指定的證書檔案來驗證對等方,檔案可能包含多個

    CA

    證書,證書必須采用

    PEM

    格式,通常情況下,

    curl

    是使用預設檔案建構的,是以此選項通常用于更改預設檔案。
  • --capath <CA certificate directory>

    SSL

    curl

    使用指定的證書目錄來驗證對等方,可以通過使用

    :

    分隔多條路徑,例如

    path1:path2:path3

    ,證書必須是

    PEM

    格式的,如果

    curl

    是基于

    OpenSSL

    建構的,那麼目錄必須使用

    OpenSSL

    提供的

    c_rehash

    程式進行處理,如果

    --cacert

    檔案包含許多

    CA

    證書,那麼使用

    --capath

    可以使

    OpenSSL

    支援的

    curl

    比使用

    --cacert

    更有效地建立

    SSL

    連接配接。如果設定了此選項,将忽略預設的

    capath

    值,如果多次使用,将使用最後一個值。
  • -f, --fail

    HTTP

    ,伺服器錯誤時無提示失敗,即完全沒有輸出,這樣做主要是為了更好地使腳本等更好地處理失敗的嘗試,在正常情況下,當

    HTTP

    伺服器無法傳遞文檔時,它會傳回一個

    HTML

    文檔,通常會描述原因,此标志将阻止

    curl

    輸出該值并傳回錯誤

    22

    ,這種方法不是故障安全的,有時會出現不成功的響應代碼,特别是在涉及身份驗證時,例如響應代碼

    401

    407

  • -F, --form <name=content>

    HTTP

    ,這使得

    curl

    可以模拟使用者按下

    submit

    按鈕的填充表單,

    curl

    根據

    rfc2388

    multipart/form

    資料釋出資料,這樣就可以上傳二進制檔案等,若強制内容部分成為檔案,在檔案名前面加上

    @

    符号,若要僅從檔案中擷取内容部分,請在檔案名前面加上

    <

    符号,

    @

    <

    之間的差別是

    @

    使一個檔案作為檔案上傳附加到

    post

    中,而

    <

    使一個文本字段從一個檔案中擷取該文本字段的内容。
  • --ftp-account [data]

    FTP

    ,當

    FTP

    伺服器在提供使用者名和密碼後請求

    account data

    時,使用

    ACCT

    指令發送該資料,在

    7.13.0

    中添加,如果多次使用此選項,将使用最後一個選項。
  • --ftp-alternative-to-user <command>

    FTP

    ,如果與使用者的身份驗證和

    PASS

    指令失敗,則發送此指令,當使用用戶端證書通過

    FTPS

    連接配接到

    Tumbleweed

    的安全傳輸伺服器時,使用

    SITE AUTH

    将告訴伺服器從證書中檢索使用者名,在

    7.15.5

  • --ftp-create-dirs

    FTP/SFTP

    FTP

    sftp url/

    操作使用伺服器上目前不存在的路徑時,

    curl

    的标準行為是失敗,使用此選項,

    curl

    将嘗試建立丢失的目錄。
  • --ftp-method [method]

    FTP

    ,控制

    curl

    應該使用什麼方法通路

    FTP(S)

    伺服器上的檔案,在

    7.15.1

    添加,方法參數應該是以下選項之一:
    • multicwd

      curl

      對給定

      URL

      中的每個路徑部分執行一個

      CWD

      操作,對于深層層次結構,這意味着有很多指令,

      RFC1738

      就是這麼說明的,這是預設但最慢的行為。
    • nocwd

      curl

      根本不做

      CWD

      curl

      将執行

      SIZE

      RETR

      STOR

      等操作,并為所有這些指令提供到伺服器的完整路徑,這是最快的行為。
    • singlecwd

      curl

      對完整的目标目錄執行一個

      CWD

      ,然後正常地對檔案進行操作,就像

      multicwd

      一樣,這比

      nocwd

      更符合标準,但沒有

      multicwd

      的全部處理。
  • --ftp-pasv

    FTP

    ,資料連接配接使用被動模式,被動是内部預設行為,但使用此選項可用于覆寫以前的

    -P/-ftp

    端口選項,在

    7.11.0

    中添加,如果多次使用此選項,則隻使用第一個選項,撤消強制的被動端口确實是不可行的,但是您必須再次強制執行正确的

    -P, --ftp

    端口,被動模式意味着

    curl

    将首先嘗試

    EPSV

    指令,然後再嘗試

    PASV

    ,除非使用

    --disable EPSV

  • --ftp-skip-pasv-ip

    FTP

    curl

    連接配接資料連接配接時,告訴

    curl

    不要使用伺服器在響應

    curl

    PASV

    指令時建議的

    IP

    位址,相反,

    curl

    将重用它已經用于控制連接配接的相同

    IP

    位址,在

    7.14.2

    增加,如果使用

    PORT

    EPRT

    EPSV

    代替

    PASV

    ,則此選項無效。
  • --ftp-pret

    FTP

    curl

    PASV

    EPSV

    之前發送

    PRET

    指令,某些

    FTP

    伺服器(主要是

    drftpd

    )需要這個非标準的指令來顯示目錄清單,以及在

    PASV

    模式下進行更新和下載下傳,在

    7.20.x

  • --ftp-ssl-ccc

    FTP

    CCC

    (清除指令通道)在驗證後關閉

    SSL/TLS

    層,控制信道通信的其餘部分将是未加密的,這允許

    NAT

    路由器跟蹤

    FTP

    事務,預設模式為被動模式,其他模式請參見

    --ftp ssl ccc mode

    ,在

    7.16.1

  • --ftp-ssl-ccc-mode [active/passive]

    FTP

    CCC

    (清除指令通道)設定

    CCC

    模式,被動模式不會啟動關閉,而是等待伺服器執行,并且不會從伺服器回複關閉,活動模式啟動關機并等待伺服器的回複,

    7.16.2

  • --ftp-ssl-control

    FTP

    FTP

    登入需要

    SSL/TLS

    ,清除以進行傳輸,允許安全的身份驗證,但非加密的資料傳輸效率,如果伺服器不支援

    SSL/TLS

    ,則傳輸失敗,在

    7.16.0

    中添加,目前仍然可以使用,但将在将來的版本中删除。
  • --form-string <name=string>

    HTTP

    ,類似于

    --form

    ,隻是命名參數的值字元串是按字面意思使用的,值中的前導

    @

    <

    字元以及

    ; type=

    字元串沒有特殊含義,如果字元串值可能意外觸發

    --form

    的'

    @

    '或'

    <

    '特性,請優先使用

    --form

  • -g, --globoff

    : 此選項關閉

    URL globbing

    解析器,設定此選項時,可以指定包含字母

    {}[]

    URL

    ,而無需

    curl

    本身對其進行解釋,請注意,這些字母不是正常的合法

    URL

    内容,但它們應該根據

    URI

    标準進行編碼。
  • -G, --get

    : 使用此選項時,将使用

    -d

    -data

    -data binary

    -data urlencode

    指定的所有資料在

    HTTP GET

    請求中使用,而不是在其他情況下使用的

    POST

    請求,資料将附加到帶有

    ?

    URL

    中分離器,如果與

    -I

    結合使用,

    POST

    資料将被附加到帶有

    HEAD

    請求的

    URL

    中,如果多次使用此選項,則隻使用第一個選項,這是因為撤消

    GET

    沒有意義,但是您應該執行您喜歡的替代方法。
  • -H, --header <header>

    HTTP

    ,向伺服器發送

    HTTP

    時請求中包含的額外頭,您可以指定任意數量的額外标頭,請注意,如果您應該添加一個與

    curl

    将使用的内部頭具有相同名稱的自定義頭,那麼将使用外部設定的頭而不是内部頭,這使得你可以做比

    curl

    更複雜的東西,您不應該在不完全清楚自己在做什麼的情況下替換内部設定的頭檔案,通過在冒号的右側提供一個沒有内容的替換來删除内部标題,如

    : -H Host:

    ,如果發送沒有值的自定義标頭,則其标頭必須以分号結尾,例如

    -H X-custom-header;

    以發送

    X-custom-header:

    curl

    将確定您添加

    /

    替換的每個标題都使用正确的行尾标記發送,是以您不應将其添加為标題内容的一部分

    :

    不要添加換行符或回車符,它們隻會為您帶來麻煩,另請參見

    -A, --user-agent

    -e, --referer

  • --hostpubmd5 <md5>

    SCP/SFTP

    ,傳遞包含

    32

    個十六進制數字的字元串,字元串應該是遠端主機公鑰的

    128

    MD5

    校驗和,除非

    md5 sums

    比對,否則

    curl

    将拒絕與主機的連接配接,在

    7.17.1

  • --ignore-content-length

    HTTP

    ,忽略内容長度标題,這對于運作

    Apache1.x

    的伺服器尤其有用,後者将報告大于

    2G

    的檔案的不正确内容長度。
  • -i, --include

    HTTP

    ,在輸出中包括

    HTTP

    頭,

    HTTP

    頭包括伺服器名稱、文檔日期、

    HTTP

    版本等内容。
  • -I, --head

    HTTP/FTP/FILE

    ,僅擷取

    HTTP

    HTTP

    伺服器的特點是響應頭,它隻用來擷取文檔的頭,當用于

    FTP

    或檔案時,

    curl

    僅顯示檔案大小和上次修改時間。
  • --interface <name>

    : 使用指定的接口執行操作,您可以輸入接口名、

    IP

    位址或主機名,例如

    : curl

    —接口

    eth0:1 http://www.netscape.com/

    如果多次使用此選項,将使用最後一個選項。
  • -j, --junk-session-cookies

    HTTP

    curl

    被告知從給定檔案讀取

    cookies

    時,此選項将使其放棄所有會話

    cookies,

    這将基本上具有與啟動新會話相同的效果,典型的浏覽器總是在關閉會話

    cookie

    時丢棄它們。
  • -J, --remote-header-name

    HTTP

    ,此選項告訴

    -O, -remote name

    選項使用伺服器指定的内容配置檔案名,而不是從

    URL

    提取檔案名,在提供的檔案名中還沒有嘗試解碼%

    -

    序列,是以此選項可能會為您提供意外的檔案名。
  • -k, --insecure

    SSL

    ,這個選項顯式地允許

    curl

    執行不安全的

    SSL

    連接配接和傳輸,所有

    SSL

    連接配接都試圖通過使用預設安裝的

    CA

    證書捆綁包來確定安全,這使得所有被認為是不安全的連接配接失敗,除非使用

    -k, -unsecure

  • -K, --config <config file>

    : 指定從哪個配置檔案讀取

    curl

    參數,配置檔案是一個文本檔案,可以在其中寫入指令行參數,然後使用這些參數,就像它們被寫入實際的指令行一樣,選項及其參數必須在同一配置檔案行中指定,并用空格、冒号或等号分隔,可以選擇在配置檔案中給出長選項名,而不使用初始雙破折号,如果是這樣,冒号或等号字元可以用作分隔符,如果使用一個或兩個破折号指定選項,則選項與其參數之間不能有冒号或等号字元,如果參數要包含空格,則參數必須用引号括起來,在雙引号中,下列轉義序列可用:

    \\

    \"

    \t

    \n

    \r

    \v

    ,任何其他字母前面的反斜杠将被忽略,如果配置行的第一列是

    #

    字元,則該行的其餘部分将被視為注釋,在配置檔案中,每個實體行隻寫一個選項,将檔案名指定為

    -K, --config

    -,

    使

    curl

    stdin

    讀取檔案。
  • --keepalive-time <seconds>

    : 此選項設定在發送

    keepalive

    探測之前連接配接需要保持空閑的時間以及各個

    keepalive

    探測之間的時間,它目前在提供

    TCP_KEEPIDLE

    TCP_KEEPINTVL

    套接字選項的作業系統上非常有效(指

    Linux

    、最近的

    AIX

    HP-UX

    等),如果使用

    --no keepalive,

    則此選項無效,(在

    7.18.0

    中添加)如果多次使用此選項,将使用最後一個選項,如果未指定,則該選項預設為

    60

    秒。
  • --key <key>

    SSL/SSH

    ,私鑰檔案名,允許您在此單獨的檔案中提供私鑰,如果多次使用此選項,将使用最後一個選項。
  • --key-type <type>

    SSL

    ,私鑰檔案類型,指定

    --key

    提供的私鑰是哪種類型,支援

    DER

    PEM

    ENG,

    如果未指定,則假定為

    PEM

  • --krb <level>

    FTP

    Kerberos

    身份驗證和使用,必須輸入級别,并且級别應為

    clear

    safe

    secretary

    private

    之一,如果您使用的級别不是這些級别之一,則将改用

    private

    ,此選項需要使用

    kerberos4

    支援建構的庫,這并不常見,使用

    -V, -version

    檢視卷曲是否支援它,如果多次使用此選項,将使用最後一個選項。
  • -l, --list-only

    FTP

    ,列出

    FTP

    目錄時,此開關強制使用僅名稱視圖,如果使用者希望機器解析

    FTP

    目錄的内容,這尤其有用,因為普通目錄視圖不使用标準的外觀或格式,這樣使用時,該選項将導緻向伺服器發送

    NLST

    指令,而不是

    LIST

    ,注意: 一些

    FTP

    伺服器在響應

    NLST

    時隻列出檔案,它們不包括子目錄和符号連結,

    POP3

    POP3

    檢索特定電子郵件時,此開關強制執行

    LIST

    指令而不是

    RETR

    ,如果使用者希望檢視伺服器上是否存在特定的消息

    id

    以及它的大小,那麼這一點特别有用,注意: 當與

    -X, -request<command>

    組合使用時,此選項可用于發送

    UIDL

    指令,是以使用者可以使用電子郵件的唯一辨別符而不是其消息

    id

    來送出請求,在

    7.21.5

  • -L, --location

    HTTP/HTTPS

    ,如果伺服器報告請求的頁面已移動到其他位置(用

    location:header

    3XX

    響應代碼表示),此選項将使

    curl

    在新位置上重做請求,如果與

    -i, --include

    -i, --head

    一起使用,将顯示所有請求頁面的标題,使用身份驗證時,

    curl

    隻将其憑據發送到初始主機,如果重定向将

    curl

    帶到另一個主機,它将無法截獲使用者

    +

    密碼,另請參見

    --location trusted

    ,了解如何更改此設定,您可以使用

    --max redirs

    選項來限制要遵循的重定向數量,當

    curl

    遵循重定向并且請求不是純

    GET

    (例如

    POST

    PUT

    )時,如果

    HTTP

    響應是

    301

    302

    303

    ,它将使用

    GET

    執行以下請求,如果響應代碼是任何其他

    3xx

    代碼,

    curl

    将使用相同的未修改方法重新發送以下請求,您可以告訴

    curl

    不要更改

    non-GET

    請求方法,以便在

    30x

    響應之後使用專用選項

    --post301

    -post302

    -post303

    擷取。
  • --libcurl <file>

    : 将此選項附加到任何普通的

    curl

    指令行,您将獲得一個

    libcurl

    ,它使用

    C

    源代碼編寫到檔案中,執行與指令行操作相同的操作!如果多次使用此選項,将使用最後給定的檔案名,

    7.16.1

  • --limit-rate <speed>

    : 指定您希望

    curl

    使用的最大傳輸速率

    -

    用于下載下傳和上載,如果您有一個有限的管道,并且希望您的傳輸不使用整個帶寬,則此功能非常有用,使它比其他情況下慢,給定的速度以位元組

    /

    秒為機關,除非附加字尾,加上

    k

    k

    将把數字計為千位元組,

    m

    m

    表示兆位元組,而

    g

    g

    表示千兆位元組,例如

    : 200K

    3m

    1G

    ,給定的速率是整個傳輸過程中計算的平均速度,這意味着

    curl

    可能在短脈沖中使用更高的傳輸速度,但随着時間的推移,它使用的傳輸速度不會超過給定的速率,如果您還使用

    -Y, -speed limit

    選項,則該選項将優先,并可能略微削弱速率限制,以幫助保持速度限制邏輯正常工作,如果多次使用此選項,将使用最後一個選項。
  • --local-port <num>[-num]

    : 設定用于連接配接的本地端口号的首選數目或範圍,請注意,端口号本質上是一種稀缺資源,有時會很忙,是以将此範圍設定為太窄可能會導緻不必要的連接配接設定失敗,在

    7.15.2

  • --location-trusted

    HTTP/HTTPS

    ,與

    -L, --location

    類似,但允許向站點可能重定向到的所有主機發送名稱

    +

    密碼,如果站點将您重定向到要向其發送身份驗證資訊的站點(在

    HTTP

    基本身份驗證的情況下是明文),則這可能會或可能不會導緻安全漏洞。
  • -m, --max-time <seconds>

    : 允許整個操作所用的最長時間(秒),這有助于防止批處理作業因網絡或連結運作緩慢而挂起數小時,自

    7.32.0

    --connect timeout

  • --login-options <options>

    : 指定伺服器身份驗證期間要使用的登入選項,您可以使用登入選項指定身份驗證期間可能使用的特定于協定的選項,目前隻有

    IMAP

    POP3

    SMTP

    支援登入選項,有關登入選項的更多資訊,請參閱

    RFC 2384

    RFC 5092

    IETF

    草稿

    draft-earhart-url-smtp-00.txt

    (在

    7.34.0

    中添加),如果多次使用此選項,将使用最後一個選項。
  • --mail-auth <address>

    SMTP

    ,指定單個位址,這将用于指定正在中繼到另一個伺服器的已送出郵件的身份驗證位址(辨別),在

    7.25.0

  • --mail-from <address>

    SMTP

    ,指定發送給定郵件的單一位址,在

    7.20.0

  • --max-filesize <bytes>

    : 指定要下載下傳的檔案的最大大小(以位元組為機關),如果請求的檔案大于這個值,傳輸将不會開始,

    curl

    将傳回退出代碼

    63

    ,注意

    :

    檔案大小在下載下傳之前并不總是已知的,對于這樣的檔案,即使檔案傳輸最終超過這個給定的限制,這個選項也不起作用,這涉及到

    FTP

    HTTP

    傳輸。
  • --mail-rcpt <address>

    : (

    SMTP

    )指定單個位址、使用者名或郵件清單名稱,在執行郵件傳輸時,收件人應指定要将郵件發送到的有效電子郵件位址,(在

    7.20.0

    中添加)執行位址驗證(

    VRFY

    指令)時,應将收件人指定為使用者名或使用者名和域(根據

    RFC5321

    3.5

    節),(在

    7.34.0

    中添加)在執行郵件清單擴充(

    EXPN

    指令)時,應該使用郵件清單名稱指定收件人,例如

    Friends

    London Office

    7.34.0

  • --max-redirs <num>

    : 設定允許的最大重定向次數,如果使用

    -L, --location

    ,這個選項可以用來防止

    curl

    不斷地遵循重定向,預設情況下,限制設定為

    50

    個重定向,将此選項設定為

    -1

    以使其無限,如果多次使用此選項,将使用最後一個選項。
  • --metalink

    : 此選項可以告訴

    curl

    将給定的

    URI

    作為

    Metalink

    檔案進行解析和處理(支援版本

    3

    和版本

    4

    (

    RFC 5854

    )),并在出現錯誤(例如檔案或伺服器不可用)時使用中列出的鏡像進行故障轉移,它還将在下載下傳完成後驗證檔案的哈希值,

    Metalink

    檔案本身在記憶體中下載下傳和處理,而不是存儲在本地檔案系統中。
  • -n, --netrc

    : 使

    curl

    掃描使用者主目錄中的

    .netrc

    netrc on Windows

    )檔案以擷取登入名和密碼,這通常用于

    UNIX

    上的

    FTP

    ,如果與

    HTTP

    一起使用,

    curl

    将啟用使用者身份驗證,有關檔案格式的詳細資訊,請參閱

    netrc(4)

    ftp(1)

    ,如果檔案沒有正确的權限,

    curl

    不會報錯,環境變量

    HOME

    用于查找主目錄,一個快速且非常簡單的示例,說明如何設定

    .netrc

    以允許

    curl

    FTP

    傳輸到機器

    host.domain.com

    網站使用者名為

    myself

    和密碼為

    secret

    的應類似于

    :

    機器

    host.domain.com

    網站登入密碼密碼。
  • -N, --no-buffer

    : 禁用輸出流的緩沖,在正常的工作環境中,

    curl

    将使用一個标準的緩沖輸出流,它将以塊的形式輸出資料,而不一定是在資料到達時,使用此選項将禁用該緩沖,請注意,這是已記錄的否定選項名稱,是以,可以使用

    --buffer

    來強制執行緩沖。
  • --netrc-file

    : 此選項類似于

    --netrc

    ,隻是您提供了

    curl

    應該使用的

    netrc

    檔案的路徑(絕對或相對),每次調用隻能指定一個

    netrc

    檔案,如果提供了多個

    --netrc

    檔案選項,則隻使用最後一個選項,(

    7.21.5

    增加)此選項會覆寫

    --netrc

    的任何用法,因為它們是互斥的,如果指定,它還将遵循

    --netrc optional

  • --netrc-optional

    : 與

    --netrc

    非常相似,但此選項使

    .netrc

    的用法成為可選的,而不是像

    --netrc

    選項那樣是強制性的。
  • --negotiate

    HTTP

    ,啟用協商(

    SPNEGO

    )身份驗證,如果要為代理身份驗證啟用協商(

    SPNEGO

    ),請使用

    --proxy Negotiate

    GSS-API

    SSPI

    支援建構的庫,使用

    -V, -version

    檢視

    curl

    是否支援

    GSS-API/SSPI

    SPNEGO

    ,使用此選項時,還必須提供假

    -u, -user

    選項以正确激活身份驗證代碼,發送

    -u

    就足夠了,因為實際上沒有使用

    -u

    選項中的使用者名和密碼,如果多次使用此選項,則隻使用第一個選項。
  • --no-keepalive

    : 禁用在

    TCP

    連接配接上使用

    keepalive

    消息,因為預設情況下

    curl

    會啟用它們,請注意,這是已記錄的否定選項名稱,是以,可以使用

    --keepalive

    來強制執行

    keepalive

  • --no-sessionid

    SSL

    ,禁用

    curl

    SSL

    會話

    ID

    緩存的使用,預設情況下,所有傳輸都使用緩存完成,請注意,盡管嘗試重用

    SSL

    id

    不會對任何事情造成傷害,但在野外似乎存在損壞的

    SSL

    實作,可能需要您禁用它才能成功,(在

    7.16.0

    中添加)請注意,這是已記錄的否定選項名稱,是以,您可以使用

    --sessionid

    來強制執行會話

    ID

    緩存。
  • --noproxy <no-proxy-list>

    : 不使用代理(如果指定了代理)的主機的逗号分隔清單,唯一的通配符是一個

    *

    字元,它比對所有主機,并有效地禁用代理,此清單中的每個名稱都比對為包含主機名的域或主機名本身,例如,本地網站将比對本地網站,

    7.19.4

    中增加。
  • --ntlm

    HTTP

    NTLM

    身份驗證,

    NTLM

    身份驗證方法是由

    Microsoft

    設計的,用于

    IIS web

    伺服器,它是一個專有的協定,由聰明的人逆向設計,并根據他們的努力在

    curl

    中實作,這種行為不應該被認可,您應該鼓勵每個使用

    NTLM

    的人轉而使用公共的和文檔化的身份驗證方法,比如

    Digest

    ,如果要為代理身份驗證啟用

    NTLM

    --proxy NTLM

    SSL

    -V, -version

    curl

    NTLM

    ,如果多次使用此選項,則隻使用第一個選項。
  • -o, --output <file>

    : 将輸出寫入

    <file>

    而不是标準輸出,如果使用

    {}

    []

    擷取多個文檔,則可以在

    <file>

    說明符中使用

    #

    後跟數字,該變量将替換為正在擷取的

    URL

    的目前字元串。
  • -O, --remote-name

    : 将輸出寫入名為的本地檔案,就像我們得到的遠端檔案一樣,僅使用遠端檔案的檔案部分,路徑被切斷,用于儲存的遠端檔案名是從給定的

    URL

    提取的,而不是從其他

    URL

    提取的,是以,檔案将儲存在目前工作目錄中,如果要将檔案儲存在其他目錄中,請確定在使用

    -O, -remote name

    标志調用

    curl

    之前更改目前工作目錄,沒有對檔案名執行

    URL

    解碼,如果名稱中有%

    20

    或其他

    URL

    編碼的部分,它們将以檔案名的形式結束,您可以使用此選項的次數與您擁有的

    URL

    數量相同。
  • --oauth2-bearer

    IMAP、POP3、SMTP

    ,指定

    OAUTH 2.0

    伺服器身份驗證的承載令牌,承載令牌與使用者名一起使用,使用者名可以指定為

    --url

    -u, -user

    選項的一部分,承載令牌和使用者名根據

    rfc6750

    格式化,如果多次使用此選項,将使用最後一個選項。
  • --proxy-header <header>

    HTTP

    ,向代理發送

    HTTP

    時請求中包含的額外頭,您可以指定任意數量的額外标頭,這是與

    -H, -header

    等效的選項,但僅适用于代理通信,就像在連接配接請求中一樣,當您希望将單獨的頭發送到代理時,它将發送到實際的遠端主機,

    curl

    /

    :

    不要添加換行符或回車符,它們隻會為您帶來麻煩,使用此選項指定的頭不會包含在

    curl

    知道不會發送到代理的請求中,此選項可多次用于添加

    /

    替換

    /

    删除多個标頭,在

    7.37.0

  • -p, --proxytunnel

    : 當使用

    HTTP

    代理(

    -x, --proxy

    )時,此選項将導緻非

    HTTP

    協定嘗試通過代理進行隧道傳輸,而不是僅使用它來執行類似

    HTTP

    的操作,隧道方法是通過

    HTTP

    代理連接配接請求來實作的,并且要求代理允許直接連接配接到

    curl

    希望通過隧道連接配接到的遠端端口号。
  • -P, --ftp-port <address>

    FTP

    ,在連接配接

    FTP

    時反轉預設的發起程式

    /

    偵聽程式角色,此開關使

    curl

    使用活動模式,在實踐中,

    curl

    然後告訴伺服器連接配接回客戶機指定的位址和端口,而被動模式則要求伺服器設定一個

    IP

    位址和端口以供連接配接。
  • --pass <phrase>

    SSL/SSH

    ,私鑰的密碼短語,如果多次使用此選項,将使用最後一個選項。
  • --post301

    HTTP

    curl

    遵守

    rfc2616/10.3.2

    ,在執行

    301

    重定向時不要将

    POST

    請求轉換為

    GET

    請求,非

    RFC

    行為在

    web

    浏覽器中無處不在,是以

    curl

    預設情況下進行轉換以保持一緻性,然而,伺服器可能需要在這樣的重定向之後保持

    POST

    ,此選項僅在使用

    -L, -location

    7.17.1

    中添加)時才有意義。
  • --post302

    HTTP

    curl

    rfc2616/10.3.2

    302

    POST

    GET

    RFC

    web

    curl

    POST

    -L, -location

    7.19.1

  • --post303

    HTTP

    curl

    rfc2616/10.3.2

    303

    POST

    GET

    RFC

    web

    curl

    POST

    -L, -location

    7.26.0

  • --proto <protocols>

    curl

    使用列出的協定進行初始檢索,協定從左到右求值,以逗号分隔,每個協定都是一個協定名或

    all

    ,可以選擇以零個或多個修飾符作為字首。
  • --proto-redir <protocols>

    curl

    在重定向後使用列出的協定,有關協定的表示方式,請參見

    --proto

    ,(

    7.20.2

    增加)。
  • --proxy-anyauth

    curl

    在與給定代理通信時選擇合适的身份驗證方法,這可能會導緻額外的請求

    /

    響應往返,(

    7.13.2

  • --proxy-basic

    curl

    在與給定代理通信時使用

    HTTP

    基本身份驗證,使用

    --basic

    對遠端主機啟用

    HTTP basic

    Basic

    curl

    用于代理的預設身份驗證方法。
  • --proxy-digest

    curl

    HTTP

    摘要身份驗證,使用

    --digest

    HTTP

    摘要。
  • --proxy-negotiate

    curl

    HTTP

    協商(

    SPNEGO

    )身份驗證,使用

    --negotiate

    啟用與遠端主機的

    HTTP

    SPNEGO

    ),

    7.17.1

  • --proxy-ntlm

    curl

    httpntlm

    身份驗證,使用

    --ntlm

    啟用遠端主機的

    ntlm

  • --proxy1.0 <proxyhost[:port]>

    : 使用指定的

    HTTP 1.0

    代理,如果未指定端口号,則假定在端口

    1080

    處,此選項與

    HTTP proxy

    選項

    -x, --proxy

    之間的唯一差別是,嘗試通過代理使用

    CONNECT

    将指定

    HTTP 1.0

    協定,而不是預設的

    HTTP 1.1

  • --pubkey <key>

    SSH

    ,公鑰檔案名,允許您在此單獨的檔案中提供公鑰,如果多次使用此選項,将使用最後一個選項。
  • -q

    : 如果用作指令行上的第一個參數,則不會讀取和使用

    curlrc config

    檔案,有關預設配置檔案搜尋路徑的詳細資訊,請參見

    -K, --config

  • -Q, --quote <command>

    FTP/SFTP

    ,向遠端

    FTP

    SFTP

    伺服器發送任意指令,

    Quote

    指令在傳輸發生之前發送(确切地說,是在

    FTP

    傳輸中的初始

    PWD

    指令之後),若要使指令在成功傳輸後執行,請在其前面加一個短劃線

    -

    ,要使指令在

    curl

    更改工作目錄後發送,就在傳輸指令之前,在指令前面加上

    +

    (這僅适用于

    FTP

    ),您可以指定任意數量的指令,如果伺服器傳回其中一個指令失敗,則整個操作将中止,必須按照

    RFC 959

    的定義将文法正确的

    FTP

    指令發送到

    FTP

    伺服器,或将下面列出的指令之一發送到

    SFTP

    伺服器,此選項可以多次使用,在與

    FTP

    伺服器通信時,在指令前面加一個星号

    *

    curl

    即使失敗也能繼續,因為預設情況下,

    curl

    會在第一次失敗時停止,

    SFTP

    是一種二進制協定,與

    FTP

    curl

    在将

    SFTP quote

    指令發送到伺服器之前會自己解釋它們,檔案名可以用

    shell

    樣式引用以嵌入空格或特殊字元。
  • -r, --range <range>

    HTTP/FTP/SFTP/FILE

    ,從

    HTTP/1.1

    FTP

    SFTP

    伺服器或本地檔案檢索位元組範圍(即部分文檔),可以通過多種方式指定範圍。
  • -R, --remote-time

    : 使用時,這将使

    curl

    嘗試找出遠端檔案的時間戳,如果該時間戳可用,則使本地檔案獲得相同的時間戳。
  • --random-file <file>

    SSL

    ,指定包含随機資料的檔案的路徑名,資料用于為

    SSL

    --egd

    檔案選項。
  • --raw

    HTTP

    ,使用時,它會禁用所有内容或傳輸編碼的内部

    HTTP

    解碼,而是讓它們原封不動地傳遞,

    7.16.2

  • --remote-name-all

    : 此選項将更改所有給定

    URL

    的預設操作,使其處理方式與每個

    URL

    -O

    -remote name

    一樣,是以,如果要在使用

    --remote name all

    之後對特定

    URL

    禁用該選項,則必須使用

    -o-

    --no remote name

    7.19.0

  • --resolve <host:port:address>

    : 為特定主機和端口對提供自定義位址,使用此方法,可以使

    curl

    請求使用指定的位址,并防止使用通常解析的位址,将其視為指令行上提供的一種

    /etc/hosts

    替代方案,端口号應該是用于主機将用于的特定協定的編号,這意味着,如果要為同一主機提供不同端口的位址,則需要多個條目,可以多次使用此選項添加許多要解析的主機名,在

    7.21.3

  • --retry <num>

    curl

    嘗試執行傳輸時傳回暫時性錯誤,它将在放棄之前重試此次數,将數字設定為 将使

    curl

    不重試(這是預設值),瞬時錯誤表示

    :

    逾時、

    ftp4xx

    響應代碼或

    http5xx

    響應代碼,當

    curl

    将要重試傳輸時,它将首先等待一秒鐘,然後對于所有即将進行的重試,它将加倍等待時間,直到達到

    10

    分鐘,這将是其餘重試之間的延遲,通過使用

    --retry delay

    可以禁用這個指數退避算法,另請參見

    --retry max time

    以限制允許重試的總時間,(

    7.12.3

    增加)如果多次使用此選項,将使用最後一個選項。
  • --retry-delay <seconds>

    : 當傳輸因暫時性錯誤而失敗時,在每次重試之前使

    curl

    休眠此時間量(它會更改重試之間的預設退避時間算法),隻有同時使用

    --retry

    時,此選項才有意義,将此延遲設定為零将使

    curl

    使用預設回退時間,(

    7.12.3

  • --retry-max-time <seconds>

    : 重試計時器在第一次傳輸嘗試之前重置,隻要計時器沒有達到這個給定的限制,重試就會照常進行(請參閱

    --retry

    ),請注意,如果計時器尚未達到限制,則會送出請求,并且在執行時,可能需要比給定的時間段更長的時間,要限制單個請求的最長時間,請使用

    -m, -max time

    ,将此選項設定為零以不逾時重試,(

    7.12.3

  • -s, --silent

    : 安靜或安靜模式,不顯示進度表或錯誤消息,使卷發靜音,它仍然會輸出您請求的資料,甚至可能輸出到終端

    /stdout

    ,除非您重定向它。
  • --sasl-ir

    : 在

    SASL

    身份驗證中啟用初始響應,在

    7.31.0

  • -S, --show-error

    -s

    一起使用時,如果

    curl

    失敗,它将顯示一條錯誤消息。
  • --ssl

    FTP, POP3, IMAP, SMTP

    ,嘗試使用

    SSL/TLS

    進行連接配接,如果伺服器不支援

    SSL/TLS

    ,則還原為非安全連接配接,另請參見

    --ftp ssl control

    --ssl reqd

    以了解所需的不同加密級别,(在

    7.20.0

    中添加)此選項以前稱為

    --ftp ssl

    7.11.0

    中添加),該選項名稱仍可以使用,但将在将來的版本中删除。
  • --ssl-reqd

    FTP, POP3, IMAP, SMTP

    ,連接配接需要

    SSL/TLS

    ,如果伺服器不支援

    SSL/TLS

    ,則終止連接配接,(在

    7.20.0

    --ftp ssl reqd

    7.15.5

  • --ssl-allow-beast

    SSL

    curl

    不要繞過

    SSL3

    TLS1.0

    協定中稱為

    BEAST

    的安全缺陷,如果不使用此選項,

    SSL

    層可能會使用已知的解決方法來解決某些較舊的

    SSL

    實作的互操作性問題,警告

    :

    此選項會降低

    SSL

    安全性,通過使用此标志,您會要求完全相同的安全性,在

    7.25.0

  • --socks4 <host[:port]>

    SOCKS4

    1080

    處,(

    7.15.2

    增加)此選項将覆寫以前使用的任何

    -x, --proxy

    ,因為它們是互斥的,從

    7.21.7

    開始,此選項是多餘的,因為您可以使用

    socks4://

    協定字首指定具有

    -x, --proxy

    socks4

    代理,如果多次使用此選項,将使用最後一個選項。
  • --socks4a <host[:port]>

    SOCKS4a

    1080

    處,(在

    7.18.0

    中添加)此選項将覆寫以前使用的任何

    -x, --proxy

    7.21.7

    socks4a://

    -x, -proxy

    socks4a

  • --socks5-hostname <host[:port]>

    SOCKS5

    代理(并讓代了解析主機名),如果未指定端口号,則假定在端口

    1080

    7.18.0

    -x, --proxy

    7.21.7

    socks5h://

    協定字首指定帶有

    -x, -proxy

    socks5

    主機名代理,如果多次使用此選項,将使用最後一個選項,(此選項以前被錯誤地記錄并用作

    --socks

    ,但沒有附加數字)。
  • --socks5 <host[:port]>

    SOCKS5

    代理

    -

    但在本地解析主機名,如果未指定端口号,則假定在端口

    1080

    處,此選項将覆寫以前使用的任何

    -x, --proxy

    7.21.7

    socks5://

    -x, -proxy

    socks5

    代理,如果多次使用此選項,将使用最後一個選項,(此選項以前被錯誤地記錄并用作

    --socks

    ,但沒有附加數字),此選項(以及

    --socks4

    )不适用于

    IPV6

    FTPS

    LDAP

  • --socks5-gssapi-service <servicename>

    socks

    伺服器的預設服務名稱是

    rcmd/server fqdn

    ,此選項允許您更改它,示例

    : ---socks5 proxy name--socks5 gssapi service sockd

    将使用

    sockd/proxy name--socks5 proxy name--socks5 gssapi service sockd/real name

    将在代理名稱與主體名稱不比對的情況下使用

    sockd/real name

    7.19.4

  • --socks5-gssapi-nec

    : 作為

    GSS-API

    協商的一部分,将協商保護模式,

    RFC1961

    在第

    4.3/4.4

    節中說它應該受到保護,但

    NEC

    參考實施沒有,選項

    --socks5 gssapi nec

    允許保護模式協商的無保護交換,在

    7.19.4

  • --stderr <file>

    : 将對

    stderr

    的所有寫入重定向到指定的檔案,如果檔案名是一個普通的

    -

    ,則改為寫入标準輸出,如果多次使用此選項,将使用最後一個選項。
  • -t, --telnet-option <OPT=val>

    : 将選項傳遞給

    telnet

    協定,支援的選項包括

    : TTYPE=<term>

    設定終端類型,

    XDISPLOC=<X display>

    設定

    X

    顯示位置,

    NEW_ENV=<var, val>

    設定環境變量。
  • -T, --upload-file <file>

    : 這會将指定的本地檔案傳輸到遠端

    URL

    ,如果指定的

    URL

    中沒有檔案部分,

    curl

    将附加本地檔案名,請注意,您必須在最後一個目錄上使用尾随

    /

    來真正證明

    curl

    沒有檔案名,否則

    curl

    會認為您的最後一個目錄名是要使用的遠端檔案名,這很可能會導緻上載操作失敗,如果在

    HTTP

    S

    )伺服器上使用,則将使用

    PUT

    指令,使用檔案名

    -

    來使用

    stdin

    而不是給定的檔案,或者,可以指定檔案名

    .

    (單個句點)而不是

    -

    ,以便在非阻塞模式下使用

    stdin

    ,以便在上載

    stdin

    時讀取伺服器輸出。
  • --tcp-nodelay

    : 打開

    TCP_NODELAY

    選項,有關此選項的詳細資訊,請參閱

    curl_easy_setopt

    手冊頁,在

    7.11.2

  • --tftp-blksize <value>

    TFTP

    ,設定

    TFTP BLKSIZE

    選項(必須大于

    512

    ),這是

    curl

    在向

    TFTP

    伺服器傳輸資料或從

    TFTP

    伺服器傳輸資料時嘗試使用的塊大小,預設情況下,将使用

    512

    位元組,如果多次使用此選項,将使用最後一個選項,在

    7.20.0

  • --tlsauthtype <authtype>

    TLS

    身份驗證類型,目前,

    TLS-SRP

    RFC 5054

    )唯一支援的選項是

    SRP

    ,如果指定了

    --tlsuser

    --tlspassword

    ,但未指定

    --tlsauthtype

    ,則此選項預設為

    SRP

    7.21.4

  • --tlspassword <password>

    : 設定密碼以用于用

    --tlsauthtype

    指定的

    TLS

    身份驗證方法,要求同時設定

    --tlsuser

    7.21.4

  • --tlsuser <user>

    : 設定使用者名以便與用

    --tlsauthtype

    TLS

    身份驗證方法一起使用,要求同時設定

    --tlspassword

    7.21.4

  • --tlsv1.0

    SSL

    curl

    TLS

    TLS

    1.0

    7.34.0

  • --tlsv1.1

    SSL

    curl

    TLS

    TLS

    1.1

    7.34.0

  • --tlsv1.2

    SSL

    curl

    TLS

    TLS

    1.2

    7.34.0

  • --tr-encoding

    HTTP

    curl

    支援的算法之一請求壓縮傳輸編碼響應,并在接收資料時解壓縮資料,在

    7.21.6

  • --trace <file>

    : 啟用所有傳入和傳出資料(包括描述性資訊)到給定輸出檔案的完整跟蹤轉儲,使用

    -

    作為檔案名将輸出發送到

    stdout

    ,此選項覆寫以前使用的

    -v, -verbose

    -trace ascii

  • --trace-ascii <file>

    -

    stdout

    ,這與

    --trace

    非常相似,但是省略了十六進制部分,隻顯示轉儲的

    ASCII

    部分,它使較小的輸出,可能更容易閱讀未經訓練的人,此選項覆寫以前使用的

    -v

    -verbose

    -trace

  • --trace-time

    : 為

    curl

    顯示的每個跟蹤或詳細行預先準備一個時間戳,在

    7.14.0

  • -u, --user <user:password>

    : 指定用于伺服器身份驗證的使用者名和密碼,重寫

    -n

    -netrc

    --netrc

    可選,如果隻指定使用者名,

    curl

    将提示輸入密碼,使用者名和密碼在第一個冒号上分開,這樣就不可能在使用者名中使用帶有此選項的冒号,密碼仍然可以,将

    Kerberos V5

    與基于

    Windows

    的伺服器一起使用時,應在使用者名中包含

    Windows

    域名,以便伺服器成功擷取

    Kerberos

    票證,如果不這樣做,那麼初始身份驗證握手可能會失敗,當使用

    NTLM

    時,可以簡單地将使用者名指定為使用者名,而不指定域。
  • -U, --proxy-user <user:password>

    : 指定用于代理身份驗證的使用者名和密碼,如果您使用啟用了

    Windows SSPI

    curl

    二進制檔案并進行協商或

    NTLM

    身份驗證,那麼您可以通過指定一個冒号來告訴

    curl

    從您的環境中選擇使用者名和密碼,該冒号帶有以下選項:

    -U

  • --url <URL>

    : 指定要擷取的

    URL

    ,當您要在配置檔案中指定

    URL

    時,此選項非常友善,此選項可以使用任意次數,要控制此

    URL

    的寫入位置,請使用

    -o, --output

    -o, --remote name

  • -v, --verbose

    : 輸出詳細資訊,主要用于調試,以

    >

    開頭的行表示

    curl

    發送的頭資料,

    <

    表示

    curl

    接收的在正常情況下隐藏的頭資料,以*開頭的行表示

    curl

    提供的附加資訊,請注意,如果您隻希望在輸出中使用

    HTTP

    頭,那麼您可能需要

    -i, -include

    選項,如果您認為此選項仍然不能提供足夠的詳細資訊,請考慮改用

    --trace

    --trace ascii

    --trace ascii

    --trace

    -s, --silent

    curl

    安靜。
  • -w, --write-out <format>

    : 定義操作完成并成功後在标準輸出上顯示的内容,格式是一個字元串,可以包含純文字和任意數量的變量,字元串可以指定為

    string

    ,要從特定檔案中讀取,您可以将其指定為

    @filename

    ,并告訴

    curl

    stdin

    中讀取格式,您可以編寫

    @-

    ,輸出格式中的變量将被

    curl

    認為合适的值或文本替換,如下所述,所有變量都指定為%

    {variable_name}

    ,要輸出一個普通的%隻需将它們寫為%%,您可以使用

    \n

    、帶

    \r

    的回車符和帶

    \t

    的制表符來輸出換行符,可能的值為

    content_type

    filename_effective

    ftp_entry_path

    http_code

    http_connect

    local_ip

    local_port

    num_connects

    num_redirects

    redirect_url

    remote_ip

    remote_port

    size_download

    size_header

    size_request

    size_upload

    speed_download

    speed_upload

    ssl_verify_result

    time_appconnect

    time_connect

    time_namelookup

    time_pretransfer

    time_redirect

    time_starttransfer

    time_total

    url_effective

  • -x, --proxy <[protocol://][user:password@]proxyhost[:port]>

    : 使用指定的代理,可以使用

    protocol://

    字首指定代理字元串,以指定備用代理協定,使用

    socks4://

    socks4a://

    socks5://

    socks5h://

    請求要使用的特定

    SOCKS

    版本,沒有指定協定,

    http://

    和所有其他協定都将被視為

    http

    代理,(在

    curl7.21.7

    中添加了協定支援)如果代理字元串中未指定端口号,則假定端口号為

    1080

    ,此選項将覆寫将代理設定為使用的現有環境變量,如果有環境變量設定代理,則可以将代理設定為以覆寫它,通過

    HTTP

    代理執行的所有操作都将透明地轉換為

    HTTP

    ,這意味着某些特定于協定的操作可能不可用,如果您可以通過代理進行隧道傳輸(如使用

    -p

    -proxytunnel

    選項時),則情況并非如此,代理字元串中可能提供的使用者和密碼由

    curl

    進行

    URL

    解碼,這允許您通過使用

    %40

    傳入特殊字元,如

    @

    ,或用

    %3a

    傳入冒号,可以使用與代理環境變量完全相同的方式指定代理主機,包括協定字首(

    http://

    )和嵌入的使用者

    +

    密碼,如果多次使用此選項,将使用最後一個選項。
  • -X, --request <command>

    HTTP

    ,指定與

    HTTP

    伺服器通信時要使用的自定義請求方法,将使用指定的請求,而不是使用其他方法(預設為

    GET

    ),有關詳細資訊和解釋,請閱讀

    HTTP1.1

    規範,常見的附加

    HTTP

    請求包括

    PUT

    DELETE

    ,但

    WebDAV

    等相關技術提供了

    PROPFIND

    COPY

    MOVE

    等功能,通常你不需要這個選項,各種

    GET

    HEAD

    POST

    PUT

    請求都是通過使用專用的指令行選項來調用的,此選項僅更改

    HTTP

    請求中使用的實際單詞,不改變

    curl

    的行為方式,是以,例如,如果您想要發出一個正确的

    HEAD

    請求,那麼使用

    -X HEAD

    将是不夠的,你需要使用

    -I, -head

  • --xattr

    : 将輸出儲存到檔案時,此選項告訴

    curl

    将某些檔案中繼資料存儲在擴充檔案屬性中,目前,

    URL

    存儲在

    xdg.origin.url

    屬性,對于

    HTTP

    ,内容類型存儲在

    mime

    類型屬性中,如果檔案系統不支援擴充屬性,将發出警告。
  • -y, --speed-time <time>

    : 如果在某個速度時間段内下載下傳速度低于每秒的速度限制位元組數,則下載下傳将被中止,如果使用速度時間,則預設速度限制将為

    1

    -Y

    設定,此選項控制傳輸,是以不會影響慢速連接配接等,如果您擔心此問題,請嘗試

    --connect timeout

  • -Y, --speed-limit <speed>

    : 如果下載下傳速度低于此給定速度(以位元組

    /

    秒為機關)達數秒,則會中止下載下傳,速度時間設定為

    -y

    ,如果未設定,則為

    30

  • -z, --time-cond <date expression>|<file>

    HTTP/FTP

    )請求在給定的時間和日期之後修改的檔案,或在該時間之前修改的檔案,

    <date expression>

    可以是各種日期字元串,或者如果它與任何内部字元串都不比對,則将其作為檔案名并嘗試從

    <file>

    擷取修改日期

    mtime

    ,有關日期表達式的詳細資訊,請參閱

    getdate

    手冊頁,以破折号

    -

    開始日期表達式,使其請求比給定日期

    /

    時間早的文檔,預設值是比指定日期

    /

    時間新的文檔,如果多次使用此選項,将使用最後一個選項。
  • -h, --help

    : 輸出幫助資訊。
  • -M, --manual

    : 手動模式,顯示詳細的幫助文本。
  • -V, --version

    : 輸出版本資訊。

環境變量

使用環境變量設定代理與使用

--proxy

選項具有相同的效果。

  • http_proxy [protocol://]<host>[:port]

    : 設定用于

    HTTP

    的代理伺服器。
  • HTTPS_PROXY [protocol://]<host>[:port]

    HTTPS

  • [url-protocol]_PROXY [protocol://]<host>[:port]

    : 設定要用于

    [url protocol]

    的代理伺服器,其中協定是

    curl

    支援的協定,并在

    url

    中指定,

    FTP

    FTPS

    POP3

    IMAP

    SMTP

    LDAP

    等。
  • ALL_PROXY [protocol://]<host>[:port]

    : 如果未設定協定特定的代理,則設定要使用的代理伺服器。
  • NO_PROXY <comma-separated list of hosts>

    : 不應通過任何代理的主機名清單,如果僅設定為星号

    *

    ,則與所有主機比對。

代理協定字首

  • socks4://

    : 使其等效于

    --socks4

  • socks4a://

    : 使其相當于

    --socks4a

  • socks5://

    --socks5

  • socks5h://

    --socks5-hostname

退出代碼

  • 1

    : 不支援的協定,

    curl

    的這個版本不支援這個協定。
  • 2

    : 初始化失敗。
  • 3

    URL

    格式不正确,文法不正确。
  • 4

    : 執行所需請求所需的功能或選項在生成時未啟用或顯式禁用,要使

    curl

    能夠做到這一點,您可能需要另一個

    libcurl

    建構。
  • 5

    : 無法解析代理,無法解析給定的代理主機。
  • 6

    : 無法解析主機,未解析給定的遠端主機。
  • 7

    : 無法連接配接到主機。
  • 8

    FTP

    伺服器回複,伺服器發送的資料無法解析。
  • 9

    FTP

    通路被拒絕,伺服器拒絕登入或拒絕通路您要通路的特定資源或目錄,通常,您試圖更改到伺服器上不存在的目錄。
  • 11

    : 通過回複,

    curl

    無法分析發送給

    PASS

    請求的回複。
  • 13

    FTP

    奇怪的

    PASV

    回複,

    curl

    無法解析發送到

    PASV

  • 14

    FTP-227

    格式,

    curl

    無法解析伺服器發送的

    227

    行。
  • 15

    FTP

    無法擷取主機,無法解析

    227

    行中的主機

    IP

  • 17

    FTP

    無法設定二進制檔案,無法将傳輸方法更改為二進制。
  • 18

    : 部分檔案,隻傳輸了檔案的一部分。
  • 19

    FTP

    無法下載下傳

    /

    通路給定檔案,

    RETR

    (或類似)指令失敗。
  • 21

    FTP

    報價錯誤,

    quote

    指令從伺服器傳回錯誤。
  • 22

    : 未檢索到

    HTTP

    頁,找不到請求的

    url

    或傳回另一個錯誤,

    HTTP

    錯誤代碼為

    400

    或更高,此傳回代碼僅在使用

    -f, -fail

    時出現。
  • 23

    : 寫入錯誤,

    curl

    無法将資料寫入本地檔案系統或類似檔案系統。
  • 25

    FTP

    無法儲存檔案,伺服器拒絕了用于

    FTP

    上載的

    STOR

    操作。
  • 26

    : 讀取錯誤,各種各樣的閱讀問題。
  • 27

    : 記憶體不足,記憶體配置設定請求失敗。
  • 28

    : 操作逾時,已根據條件達到指定的逾時期限。
  • 30

    FTP

    端口失敗,端口指令失敗,并非所有

    FTP

    伺服器都支援

    PORT

    指令,請嘗試使用

    PASV

    進行傳輸。
  • 31

    FTP

    無法使用

    REST

    REST

    指令失敗,此指令用于恢複

    FTP

  • 33

    HTTP

    範圍錯誤,範圍指令不起作用。
  • 34

    HTTP post

    錯誤,内部

    post

    請求生成錯誤。
  • 35

    SSL

    連接配接錯誤,

    SSL

    握手失敗。
  • 36

    FTP

    錯誤下載下傳恢複,無法繼續先前中止的下載下傳。
  • 37

    FILE

    無法讀取檔案,無法打開檔案,可能是權限問題。
  • 38

    LDAP

    無法綁定,

    LDAP

    綁定操作失敗。
  • 39

    LDAP

    搜尋失敗。
  • 41

    : 未找到函數,找不到所需的

    LDAP

    函數。
  • 42

    : 被回調中止,一個應用程式告訴

    curl

    中止操作。
  • 43

    : 内部錯誤,使用錯誤的參數調用了函數。
  • 45

    : 接口錯誤,無法使用指定的傳出接口。
  • 47

    : 重定向過多,跟随重定向時,

    curl

    達到最大數量。
  • 48

    libcurl

    指定了未知選項,這表示您向

    curl

    傳遞了一個奇怪的選項,該選項被傳遞給

    libcurl

    并被拒絕,仔細閱讀手冊。
  • 49

    telnet

    選項格式錯誤。
  • 51

    : 對等方的

    SSL

    證書或

    SSH MD5

    指紋不正常。
  • 52

    : 伺服器沒有回複任何内容,這被認為是一個錯誤。
  • 53

    : 找不到

    SSL

    加密引擎。
  • 54

    : 無法将

    SSL

    加密引擎設定為預設值。
  • 55

    : 發送網絡資料失敗。
  • 56

    : 接收網絡資料失敗。
  • 58

    : 本地證書有問題。
  • 59

    : 無法使用指定的

    SSL

    密碼。
  • 60

    : 對等證書不能用已知的

    CA

    證書進行身份驗證。
  • 61

    : 無法識别的傳輸編碼。
  • 62

    LDAP URL

    無效。
  • 63

    : 超過最大檔案大小。
  • 64

    : 請求的

    FTP SSL

    級别失敗。
  • 65

    : 發送資料需要倒帶失敗。
  • 66

    : 無法初始化

    SSL

    引擎。
  • 67

    : 使用者名、密碼或類似内容未被接受,

    curl

    無法登入。
  • 68

    TFTP

    伺服器上找不到檔案。
  • 69

    TFTP

    伺服器上的權限問題。
  • 70

    TFTP

    伺服器上的磁盤空間不足。
  • 71

    TFTP

    操作非法。
  • 72

    : 未知的

    TFTP

    傳輸

    ID

  • 73

    : 檔案已存在

    TFTP

  • 74

    : 沒有這樣的使用者

    TFTP

  • 75

    : 字元轉換失敗。
  • 76

    : 需要字元轉換函數。
  • 77

    : 讀取

    SSL CA

    證書(路徑)時出現問題,可能是通路權限問題。
  • 78

    URL

    中引用的資源不存在。
  • 79

    SSH

    會話期間發生未指定的錯誤。
  • 80

    : 無法關閉

    SSL

    連接配接。
  • 82

    : 無法加載

    CRL

    檔案,缺少或格式錯誤,在

    7.19.0

  • 83

    : 發夾機構檢查失敗,在

    7.19.0

  • 84

    FTP PRET

    指令失敗。
  • 85

    RTSP:CSeq

    編号不比對。
  • 86

    RTSP

    會話辨別符不比對。
  • 87

    : 無法解析

    FTP

    檔案清單。
  • 88

    FTP

    區塊回調報告錯誤。
  • 89

    : 沒有可用的連接配接,會話将排隊。
  • XX

    : 更多的錯誤代碼将出現在這裡,在未來的版本,現有的是永遠不會改變的。

示例

對網站發起一個

HTTP

請求。

curl www.baidu.com
           

curl

顯示進度表,以訓示傳輸速率、傳輸的資料量、剩餘時間等。

curl -# -o ftp://ftp.example.com/file.zip
           

指定請求的網絡接口。

curl --interface ppp0 192.168.113.131
           

将檔案下載下傳到本地并命名為

1.zip

curl -o 1.zip ftp://ftp.example.com/file.zip
           

curl

使用位址重定向。

curl -L http://www.google.com
           

此選項限制資料傳輸速率的上限,并将其保持在以位元組為機關的給定值附近。

curl --limit-rate 1000K -O ftp://speedtest.tele2.net/1MB.zip
           

curl

還提供了從使用者認證的

FTP

伺服器下載下傳檔案的選項。

curl -u username:password -O ftp://test.rebex.net/readme.txt
           

顯示詳細資訊,例如連接配接的

ip

位址、請求頭與響應頭等。

curl -v www.baidu.com
           

設定請求頭資訊,此處由于響應資訊過多将其存儲在

baidu.html

curl -v \
-H "Accept-Language: zh-cn" \
-H "Host: www.baidu.com" \
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36" \
-o baidu.html https://www.baidu.com
           

每日一題

https://github.com/WindrunnerMax/EveryDay
           

參考

https://www.computerhope.com/unix/curl.htm
https://www.commandlinux.com/man-page/man1/curl.1.html
https://www.geeksforgeeks.org/curl-command-in-linux-with-examples/