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
尝试执行传输时返回暂时性错误,它将在放弃之前重试此次数,将数字设置为
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
解码,这允许您通过使用
%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/