# curl命令 `curl`是一个命令行工具,用于使用任何受支持的协议`HTTP`、`FTP`、`IMAP`、`POP3`、`SCP`、`SFTP`、`SMTP`、`TFTP`、`TELNET`、`LDAP`或`FILE`向网络服务器传输数据或从网络服务器传输数据,其被设计成无需用户交互即可工作,因此非常适合在`shell`脚本中使用,该软件提供代理支持、用户身份验证、`FTP`上传、`HTTP posting`、`SSL`连接、`cookie`、文件断点传输、`metalink`等功能。 ## 语法 ```shell 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 `: `HTTP`,指定要发送到`HTTP`服务器的用户代理字符串,如果这个字段没有设置为`Mozilla/4.0`,一些做得不好的`cgi`就会失败,要对字符串中的空格进行编码,请用单引号将字符串括起来,当然,这也可以通过`-H,-header`选项进行设置,如果多次使用此选项,将使用最后一个选项。 * `--anyauth`: `HTTP`,告诉`curl`自己找出身份验证方法,并使用远程站点声称支持的最安全的方法,这是通过首先执行请求并检查响应头来完成的,因此可能会导致额外的网络往返,这是用来代替设置特定的身份验证方法的,您可以使用`--basic`、`--digest`、`--ntlm`和`--negotiate`来实现,请注意,如果从`stdin`上传数据,则不建议使用`--anyauth`,因为它可能需要发送两次数据,然后客户端必须能够倒带,如果从`stdin`上传时需要,上传操作将失败。 * `-b, --cookie `: `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 `: `HTTP`,指定在完成操作后要将所有`cookie`写入哪个文件,`curl`写入以前从指定文件读取的所有`cookie`以及从远程服务器接收的所有`cookie`,如果没有已知的`cookies`,则不会写入任何文件,文件将使用`Netscape cookie`文件格式写入,如果将文件名设置为单破折号`-`,则`cookie`将写入标准输出,此命令行选项将激活生成`curl`记录并使用`cookie`的`cookie`引擎,另一种激活它的方法是使用`-b, --cookie`选项,如果不能创建或写入`cookiejar`,整个`curl`操作不会失败,甚至不会清楚地报告错误,使用`-v`会显示一个警告,但这是关于这种可能致命的情况的唯一可见反馈,如果多次使用此选项,将使用最后指定的文件名。 * `-C, --continue-at `: 以给定的偏移量继续`/`恢复以前的文件传输,给定的偏移量是将被跳过的确切字节数,从源文件的开头开始计算,然后再将其传输到目标,如果与上载一起使用,`curl`将不使用`FTP`服务器命令大小,使用`-C -`告诉`curl`自动找出在哪里`/`如何继续传输,然后它使用给定的输出`/`输入文件来解决这个问题,如果多次使用此选项,将使用最后一个选项。 * `--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 `: 允许连接到服务器的最长时间(秒),这只会限制连接阶段,一旦`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 `: `HTTPS/FTPS`,提供一个使用`PEM`格式的文件,其中包含一个证书吊销列表,该列表可以指定要被视为吊销的对等证书,如果多次使用此选项,将使用最后一个选项,在`7.19.7`增加。 * `-d, --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 `: 将协议头写入指定的文件,当您想存储`HTTP`站点发送给您的头文件时,使用此选项非常方便,通过使用`-b, -cookie`选项,可以在第二次`curl`调用中读取来自头的`cookie`,但是,`-c,-cookie jar`选项是存储`cookie`的更好方法,在`FTP`中使用时,`FTP`服务器响应行被认为是`headers`,因此保存在那里,如果多次使用此选项,将使用最后一个选项。 * `--data-ascii `: 请参见`-d, --data`。 * `--data-binary `: `HTTP`,这将完全按照指定的方式发布数据,无需任何额外处理,如果数据以`@`开头,其余的应该是文件名,数据的发布方式与`--dataascii`类似,只是保留了换行符和回车符,并且从不进行转换,如果多次使用此选项,则第一个选项后面的选项将附加`-d, -data`中所述的数据。 * `--data-urlencode `: `HTTP`,这会发布数据,与其他`--data`选项类似,但会执行`URL`编码,在`7.18.0`中添加,为了符合`CGI`,``部分应以名称开头,后跟分隔符和内容规范,可以使用以下语法之一将``部分传递给`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 `: 告诉`curl`通过``发送传出的`DNS`请求,此选项对应于`--interface`(不影响`DNS`),提供的字符串必须是接口名称(不是地址),此选项要求`libcurl`是使用支持此操作的解析器后端构建的,`c-ares`后端是唯一这样的,在`7.33.0`中添加。 * `--dns-ipv4-addr `: 告诉`curl`在发出`ipv4dns`请求时绑定到``,以便`DNS`请求源自此地址,参数应为单个`IPv4`地址,此选项要求`libcurl`是使用支持此操作的解析器后端构建的,`c-ares`后端是唯一这样的,在`7.33.0`中添加。 * `--dns-ipv6-addr `: 在发出`ipv6dns`请求时,告诉`curl`绑定到``,以便`DNS`请求源自此地址,参数应为单个`IPv6`地址,此选项要求`libcurl`是使用支持此操作的解析器后端构建的,`c-ares`后端是唯一这样的,在`7.33.0`中添加。 * `--dns-servers `: 设置要使用的`DNS`服务器列表,而不是系统默认值,`IP`地址列表应以逗号分隔,端口号也可以选择在每个`IP`地址后给出``,此选项要求`libcurl`是使用支持此操作的解析器后端构建的,`c-ares`后端是唯一这样的,在`7.33.0`中添加。 * `-e, --referer `: `HTTP`,将`referer Page`信息发送到`HTTP`服务器,当然,这也可以用`-H, -header`标志来设置,当与`-L, -location`一起使用时,您可以在`--referer URL`后面附加`; auto`,使`curl`在`location:header`后面自动设置上一个`URL`,`auto`字符串可以单独使用,即使您没有设置初始`--referer`,如果多次使用此选项,将使用最后一个选项。 * `-E, --cert `: `SSL`,告诉`curl`在使用`HTTPS`、`FTPS`或其他基于`SSL`的协议获取文件时使用指定的客户端证书文件,如果使用安全传输,证书必须为`PKCS#12`格式,如果使用任何其他引擎,证书必须为`PEM`格式,如果未指定可选密码,将在终端上查询该密码,注意,这个选项假设一个`certificate`是私钥和私钥连接在一起的,请参见`--cert`和`--key`以独立地指定它们。 * `--engine `: 选择用于密码操作的`OpenSSL`加密引擎,使用`--engine list`打印构建时支持的引擎的列表,请注意,并非所有`engine`在运行时都可用。 * `--environment`: `RISC OS ONLY`,使用`-w`选项支持的名称设置一系列环境变量,以便在运行`curl`之后更容易地提取有用的信息。 * `--egd-file `: `SSL`,指定守护进程套接字的路径名,套接字用于为`SSL`连接的随机引擎播种,另请参见`--random file`选项。 * `--cert-type `: `SSL`,告诉`curl`提供的证书是什么类型的证书,`PEM`、`DER`和`ENG`是公认的类型,如果未指定,则假定为`PEM`,如果多次使用此选项,将使用最后一个选项。 * `--cacert `: `SSL`,告诉`curl`使用指定的证书文件来验证对等方,文件可能包含多个`CA`证书,证书必须采用`PEM`格式,通常情况下,`curl`是使用默认文件构建的,因此此选项通常用于更改默认文件。 * `--capath `: `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 `: `HTTP`,这使得`curl`可以模拟用户按下`submit`按钮的填充表单,`curl`根据`rfc2388`使用内容类型`multipart/form`数据发布数据,这样就可以上传二进制文件等,若强制内容部分成为文件,在文件名前面加上`@`符号,若要仅从文件中获取内容部分,请在文件名前面加上`<`符号,`@`和`<`之间的区别是`@`使一个文件作为文件上传附加到`post`中,而`<`使一个文本字段从一个文件中获取该文本字段的内容。 * `--ftp-account [data]`: `FTP`,当`FTP`服务器在提供用户名和密码后请求`account data`时,使用`ACCT`命令发送该数据,在`7.13.0`中添加,如果多次使用此选项,将使用最后一个选项。 * `--ftp-alternative-to-user `: `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 `: `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
`: `HTTP`,向服务器发送`HTTP`时请求中包含的额外头,您可以指定任意数量的额外标头,请注意,如果您应该添加一个与`curl`将使用的内部头具有相同名称的自定义头,那么将使用外部设置的头而不是内部头,这使得你可以做比`curl`更复杂的东西,您不应该在不完全清楚自己在做什么的情况下替换内部设置的头文件,通过在冒号的右侧提供一个没有内容的替换来删除内部标题,如`: -H Host:`,如果发送没有值的自定义标头,则其标头必须以分号结尾,例如`-H X-custom-header;`以发送`X-custom-header:`,`curl`将确保您添加`/`替换的每个标题都使用正确的行尾标记发送,因此您不应将其添加为标题内容的一部分`: `不要添加换行符或回车符,它们只会为您带来麻烦,另请参见`-A, --user-agent`和`-e, --referer`选项。 * `--hostpubmd5 `: `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 `: 使用指定的接口执行操作,您可以输入接口名、`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 `: 指定从哪个配置文件读取`curl`参数,配置文件是一个文本文件,可以在其中写入命令行参数,然后使用这些参数,就像它们被写入实际的命令行一样,选项及其参数必须在同一配置文件行中指定,并用空格、冒号或等号分隔,可以选择在配置文件中给出长选项名,而不使用初始双破折号,如果是这样,冒号或等号字符可以用作分隔符,如果使用一个或两个破折号指定选项,则选项与其参数之间不能有冒号或等号字符,如果参数要包含空格,则参数必须用引号括起来,在双引号中,下列转义序列可用: `\\`、`\"`、`\t`、`\n`、`\r`、`\v`,任何其他字母前面的反斜杠将被忽略,如果配置行的第一列是`#`字符,则该行的其余部分将被视为注释,在配置文件中,每个物理行只写一个选项,将文件名指定为`-K, --config`为`-,`使`curl`从`stdin`读取文件。 * `--keepalive-time `: 此选项设置在发送`keepalive`探测之前连接需要保持空闲的时间以及各个`keepalive`探测之间的时间,它目前在提供`TCP_KEEPIDLE`和`TCP_KEEPINTVL`套接字选项的操作系统上非常有效(指`Linux`、最近的`AIX`、`HP-UX`等),如果使用`--no keepalive, `则此选项无效,(在`7.18.0`中添加)如果多次使用此选项,将使用最后一个选项,如果未指定,则该选项默认为`60`秒。 * `--key `: `SSL/SSH`,私钥文件名,允许您在此单独的文件中提供私钥,如果多次使用此选项,将使用最后一个选项。 * `--key-type `: `SSL`,私钥文件类型,指定`--key`提供的私钥是哪种类型,支持`DER`、`PEM`和`ENG, `如果未指定,则假定为`PEM`,如果多次使用此选项,将使用最后一个选项。 * `--krb `: `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`组合使用时,此选项可用于发送`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 `: 将此选项附加到任何普通的`curl`命令行,您将获得一个`libcurl`,它使用`C`源代码编写到文件中,执行与命令行操作相同的操作!如果多次使用此选项,将使用最后给定的文件名,`7.16.1`增加。 * `--limit-rate `: 指定您希望`curl`使用的最大传输速率`-`用于下载和上载,如果您有一个有限的管道,并且希望您的传输不使用整个带宽,则此功能非常有用,使它比其他情况下慢,给定的速度以字节`/`秒为单位,除非附加后缀,加上`k`或`k`将把数字计为千字节,`m`或`m`表示兆字节,而`g`或`g`表示千兆字节,例如`: 200K`、`3m`和`1G`,给定的速率是整个传输过程中计算的平均速度,这意味着`curl`可能在短脉冲中使用更高的传输速度,但随着时间的推移,它使用的传输速度不会超过给定的速率,如果您还使用`-Y, -speed limit`选项,则该选项将优先,并可能略微削弱速率限制,以帮助保持速度限制逻辑正常工作,如果多次使用此选项,将使用最后一个选项。 * `--local-port [-num]`: 设置用于连接的本地端口号的首选数目或范围,请注意,端口号本质上是一种稀缺资源,有时会很忙,因此将此范围设置为太窄可能会导致不必要的连接设置失败,在`7.15.2`增加。 * `--location-trusted`: `HTTP/HTTPS`,与`-L, --location`类似,但允许向站点可能重定向到的所有主机发送名称`+`密码,如果站点将您重定向到要向其发送身份验证信息的站点(在`HTTP`基本身份验证的情况下是明文),则这可能会或可能不会导致安全漏洞。 * `-m, --max-time `: 允许整个操作所用的最长时间(秒),这有助于防止批处理作业因网络或链接运行缓慢而挂起数小时,自`7.32.0`以来,此选项接受十进制值,但实际超时的精度将随着指定超时的十进制精度增加而降低,另请参见`--connect timeout`选项,如果多次使用此选项,将使用最后一个选项。 * `--login-options `: 指定服务器身份验证期间要使用的登录选项,您可以使用登录选项指定身份验证期间可能使用的特定于协议的选项,目前只有`IMAP`、`POP3`和`SMTP`支持登录选项,有关登录选项的更多信息,请参阅`RFC 2384`、`RFC 5092`和`IETF`草稿`draft-earhart-url-smtp-00.txt`(在`7.34.0`中添加),如果多次使用此选项,将使用最后一个选项。 * `--mail-auth
`: `SMTP`,指定单个地址,这将用于指定正在中继到另一个服务器的已提交邮件的身份验证地址(标识),在`7.25.0`中添加。 * `--mail-from
`: `SMTP`,指定发送给定邮件的单一地址,在`7.20.0`中添加。 * `--max-filesize `: 指定要下载的文件的最大大小(以字节为单位),如果请求的文件大于这个值,传输将不会开始,`curl`将返回退出代码`63`,注意`: `文件大小在下载之前并不总是已知的,对于这样的文件,即使文件传输最终超过这个给定的限制,这个选项也不起作用,这涉及到`FTP`和`HTTP`传输。 * `--mail-rcpt
`: (`SMTP`)指定单个地址、用户名或邮件列表名称,在执行邮件传输时,收件人应指定要将邮件发送到的有效电子邮件地址,(在`7.20.0`中添加)执行地址验证(`VRFY`命令)时,应将收件人指定为用户名或用户名和域(根据`RFC5321`第`3.5`节),(在`7.34.0`中添加)在执行邮件列表扩展(`EXPN`命令)时,应该使用邮件列表名称指定收件人,例如`Friends`或`London Office`,在`7.34.0`中添加。 * `--max-redirs `: 设置允许的最大重定向次数,如果使用`-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 `: 不使用代理(如果指定了代理)的主机的逗号分隔列表,唯一的通配符是一个`*`字符,它匹配所有主机,并有效地禁用代理,此列表中的每个名称都匹配为包含主机名的域或主机名本身,例如,本地网站将匹配本地网站,`7.19.4`中增加。 * `--ntlm`: `HTTP`,启用`NTLM`身份验证,`NTLM`身份验证方法是由`Microsoft`设计的,用于`IIS web`服务器,它是一个专有的协议,由聪明的人逆向设计,并根据他们的努力在`curl`中实现,这种行为不应该被认可,您应该鼓励每个使用`NTLM`的人转而使用公共的和文档化的身份验证方法,比如`Digest`,如果要为代理身份验证启用`NTLM`,请使用`--proxy NTLM`,此选项需要使用`SSL`支持构建的库,使用`-V, -version`查看`curl`是否支持`NTLM`,如果多次使用此选项,则只使用第一个选项。 * `-o, --output `: 将输出写入``而不是标准输出,如果使用`{}`或`[]`获取多个文档,则可以在``说明符中使用`#`后跟数字,该变量将替换为正在获取的`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
`: `HTTP`,向代理发送`HTTP`时请求中包含的额外头,您可以指定任意数量的额外标头,这是与`-H, -header`等效的选项,但仅适用于代理通信,就像在连接请求中一样,当您希望将单独的头发送到代理时,它将发送到实际的远程主机,`curl`将确保您添加`/`替换的每个标题都使用正确的行尾标记发送,因此您不应将其添加为标题内容的一部分`: `不要添加换行符或回车符,它们只会为您带来麻烦,使用此选项指定的头不会包含在`curl`知道不会发送到代理的请求中,此选项可多次用于添加`/`替换`/`删除多个标头,在`7.37.0`中添加。 * `-p, --proxytunnel`: 当使用`HTTP`代理(`-x, --proxy`)时,此选项将导致非`HTTP`协议尝试通过代理进行隧道传输,而不是仅使用它来执行类似`HTTP`的操作,隧道方法是通过`HTTP`代理连接请求来实现的,并且要求代理允许直接连接到`curl`希望通过隧道连接到的远程端口号。 * `-P, --ftp-port
`: `FTP`,在连接`FTP`时反转默认的发起程序`/`侦听程序角色,此开关使`curl`使用活动模式,在实践中,`curl`然后告诉服务器连接回客户机指定的地址和端口,而被动模式则要求服务器设置一个`IP`地址和端口以供连接。 * `--pass `: `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 `: 告诉`curl`使用列出的协议进行初始检索,协议从左到右求值,以逗号分隔,每个协议都是一个协议名或`all`,可以选择以零个或多个修饰符作为前缀。 * `--proto-redir `: 告诉`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 `: 使用指定的`HTTP 1.0`代理,如果未指定端口号,则假定在端口`1080`处,此选项与`HTTP proxy`选项`-x, --proxy`之间的唯一区别是,尝试通过代理使用`CONNECT`将指定`HTTP 1.0`协议,而不是默认的`HTTP 1.1`。 * `--pubkey `: `SSH`,公钥文件名,允许您在此单独的文件中提供公钥,如果多次使用此选项,将使用最后一个选项。 * `-q`: 如果用作命令行上的第一个参数,则不会读取和使用`curlrc config`文件,有关默认配置文件搜索路径的详细信息,请参见`-K, --config`。 * `-Q, --quote `: `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 `: `HTTP/FTP/SFTP/FILE`,从`HTTP/1.1`、`FTP`或`SFTP`服务器或本地文件检索字节范围(即部分文档),可以通过多种方式指定范围。 * `-R, --remote-time`: 使用时,这将使`curl`尝试找出远程文件的时间戳,如果该时间戳可用,则使本地文件获得相同的时间戳。 * `--random-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 `: 为特定主机和端口对提供自定义地址,使用此方法,可以使`curl`请求使用指定的地址,并防止使用通常解析的地址,将其视为命令行上提供的一种`/etc/hosts`替代方案,端口号应该是用于主机将用于的特定协议的编号,这意味着,如果要为同一主机提供不同端口的地址,则需要多个条目,可以多次使用此选项添加许多要解析的主机名,在`7.21.3`增加。 * `--retry `: 如果`curl`尝试执行传输时返回暂时性错误,它将在放弃之前重试此次数,将数字设置为`0`将使`curl`不重试(这是默认值),瞬时错误表示`: `超时、`ftp4xx`响应代码或`http5xx`响应代码,当`curl`将要重试传输时,它将首先等待一秒钟,然后对于所有即将进行的重试,它将加倍等待时间,直到达到`10`分钟,这将是其余重试之间的延迟,通过使用`--retry delay`可以禁用这个指数退避算法,另请参见`--retry max time`以限制允许重试的总时间,(`7.12.3`增加)如果多次使用此选项,将使用最后一个选项。 * `--retry-delay `: 当传输因暂时性错误而失败时,在每次重试之前使`curl`休眠此时间量(它会更改重试之间的默认退避时间算法),只有同时使用`--retry`时,此选项才有意义,将此延迟设置为零将使`curl`使用默认回退时间,(`7.12.3`增加)如果多次使用此选项,将使用最后一个选项。 * `--retry-max-time `: 重试计时器在第一次传输尝试之前重置,只要计时器没有达到这个给定的限制,重试就会照常进行(请参阅`--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 `: 使用指定的`SOCKS4`代理,如果未指定端口号,则假定在端口`1080`处,(`7.15.2`增加)此选项将覆盖以前使用的任何`-x, --proxy`,因为它们是互斥的,从`7.21.7`开始,此选项是多余的,因为您可以使用`socks4://`协议前缀指定具有`-x, --proxy`的`socks4`代理,如果多次使用此选项,将使用最后一个选项。 * `--socks4a `: 使用指定的`SOCKS4a`代理,如果未指定端口号,则假定在端口`1080`处,(在`7.18.0`中添加)此选项将覆盖以前使用的任何`-x, --proxy`,因为它们是互斥的,从`7.21.7`开始,此选项是多余的,因为您可以使用`socks4a://`协议前缀指定具有`-x, -proxy`的`socks4a`代理,如果多次使用此选项,将使用最后一个选项。 * `--socks5-hostname `: 使用指定的`SOCKS5`代理(并让代理解析主机名),如果未指定端口号,则假定在端口`1080`处,(在`7.18.0`中添加)此选项将覆盖以前使用的任何`-x, --proxy`,因为它们是互斥的,从`7.21.7`开始,此选项是多余的,因为您可以使用`socks5h://`协议前缀指定带有`-x, -proxy`的`socks5`主机名代理,如果多次使用此选项,将使用最后一个选项,(此选项以前被错误地记录并用作`--socks`,但没有附加数字)。 * `--socks5 `: 使用指定的`SOCKS5`代理`-`但在本地解析主机名,如果未指定端口号,则假定在端口`1080`处,此选项将覆盖以前使用的任何`-x, --proxy`,因为它们是互斥的,从`7.21.7`开始,此选项是多余的,因为您可以使用`socks5://`协议前缀指定带有`-x, -proxy`的`socks5`代理,如果多次使用此选项,将使用最后一个选项,(此选项以前被错误地记录并用作`--socks`,但没有附加数字),此选项(以及`--socks4`)不适用于`IPV6`、`FTPS`或`LDAP`。 * `--socks5-gssapi-service `: `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 `: 将对`stderr`的所有写入重定向到指定的文件,如果文件名是一个普通的`-`,则改为写入标准输出,如果多次使用此选项,将使用最后一个选项。 * `-t, --telnet-option `: 将选项传递给`telnet`协议,支持的选项包括`: TTYPE=`设置终端类型,`XDISPLOC=`设置`X`显示位置,`NEW_ENV=`设置环境变量。 * `-T, --upload-file `: 这会将指定的本地文件传输到远程`URL`,如果指定的`URL`中没有文件部分,`curl`将附加本地文件名,请注意,您必须在最后一个目录上使用尾随`/`来真正证明`curl`没有文件名,否则`curl`会认为您的最后一个目录名是要使用的远程文件名,这很可能会导致上载操作失败,如果在`HTTP`(`S`)服务器上使用,则将使用`PUT`命令,使用文件名`-`来使用`stdin`而不是给定的文件,或者,可以指定文件名`.`(单个句点)而不是`-`,以便在非阻塞模式下使用`stdin`,以便在上载`stdin`时读取服务器输出。 * `--tcp-nodelay`: 打开`TCP_NODELAY`选项,有关此选项的详细信息,请参阅` curl_easy_setopt`手册页,在`7.11.2`增加。 * `--tftp-blksize `: `TFTP`,设置`TFTP BLKSIZE`选项(必须大于`512`),这是`curl`在向`TFTP`服务器传输数据或从`TFTP`服务器传输数据时尝试使用的块大小,默认情况下,将使用`512`字节,如果多次使用此选项,将使用最后一个选项,在`7.20.0`中添加。 * `--tlsauthtype `: 设置`TLS`身份验证类型,目前,`TLS-SRP`(`RFC 5054`)唯一支持的选项是`SRP`,如果指定了`--tlsuser`和`--tlspassword`,但未指定`--tlsauthtype`,则此选项默认为`SRP`,在`7.21.4`增加。 * `--tlspassword `: 设置密码以用于用`--tlsauthtype`指定的`TLS`身份验证方法,要求同时设置`--tlsuser`,在`7.21.4`增加。 * `--tlsuser `: 设置用户名以便与用`--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 `: 启用所有传入和传出数据(包括描述性信息)到给定输出文件的完整跟踪转储,使用`-`作为文件名将输出发送到`stdout`,此选项覆盖以前使用的`-v, -verbose`或`-trace ascii`,如果多次使用此选项,将使用最后一个选项。 * `--trace-ascii `: 启用所有传入和传出数据(包括描述性信息)到给定输出文件的完整跟踪转储,使用`-`作为文件名将输出发送到`stdout`,这与`--trace`非常相似,但是省略了十六进制部分,只显示转储的`ASCII`部分,它使较小的输出,可能更容易阅读未经训练的人,此选项覆盖以前使用的`-v`、`-verbose`或`-trace`,如果多次使用此选项,将使用最后一个选项。 * `--trace-time`: 为`curl`显示的每个跟踪或详细行预先准备一个时间戳,在`7.14.0`中添加。 * `-u, --user `: 指定用于服务器身份验证的用户名和密码,重写`-n`、`-netrc`和`--netrc`可选,如果只指定用户名,`curl`将提示输入密码,用户名和密码在第一个冒号上分开,这样就不可能在用户名中使用带有此选项的冒号,密码仍然可以,将`Kerberos V5`与基于`Windows`的服务器一起使用时,应在用户名中包含`Windows`域名,以便服务器成功获取`Kerberos`票证,如果不这样做,那么初始身份验证握手可能会失败,当使用`NTLM`时,可以简单地将用户名指定为用户名,而不指定域。 * `-U, --proxy-user `: 指定用于代理身份验证的用户名和密码,如果您使用启用了`Windows SSPI`的`curl`二进制文件并进行协商或`NTLM`身份验证,那么您可以通过指定一个冒号来告诉`curl`从您的环境中选择用户名和密码,该冒号带有以下选项:`-U`,如果多次使用此选项,将使用最后一个选项。 * `--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 `: 定义操作完成并成功后在标准输出上显示的内容,格式是一个字符串,可以包含纯文本和任意数量的变量,字符串可以指定为`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 `: `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