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/