curl命令
curl
是一个命令行工具,用于使用任何受支持的协议HTTP
、FTP
、IMAP
、POP3
、SCP
、SFTP
、SMTP
、TFTP
、TELNET
、LDAP
或FILE
向网络服务器传输数据或从网络服务器传输数据,其被设计成无需用户交互即可工作,因此非常适合在shell
脚本中使用,该软件提供代理支持、用户身份验证、FTP
上传、HTTP posting
、SSL
连接、cookie
、文件断点传输、metalink
等功能。
语法
代码语言:javascript复制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
尝试执行传输时返回暂时性错误,它将在放弃之前重试此次数,将数字设置为0
将使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
解码,这允许您通过使用@
传入特殊字符,如@
,或用:
传入冒号,可以使用与代理环境变量完全相同的方式指定代理主机,包括协议前缀(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
指定请求的网络接口。
代码语言:javascript复制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
此选项限制数据传输速率的上限,并将其保持在以字节为单位的给定值附近。
代码语言:javascript复制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
每日一题
代码语言:javascript复制https://github.com/WindrunnerMax/EveryDay
参考
代码语言:javascript复制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/