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/