添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

curl命令.md

File metadata and controls

curl命令

curl 是一个命令行工具,用于使用任何受支持的协议 HTTP FTP IMAP POP3 SCP SFTP SMTP TFTP TELNET LDAP FILE 向网络服务器传输数据或从网络服务器传输数据,其被设计成无需用户交互即可工作,因此非常适合在 shell 脚本中使用,该软件提供代理支持、用户身份验证、 FTP 上传、 HTTP posting SSL 连接、 cookie 、文件断点传输、 metalink 等功能。

curl [options] [URL...]
  • -#, --progress-bar : 让 curl 将进度显示为一个简单的进度条,而不是标准的、更具信息性的计量器。
  • -:, --next : 告诉 curl 对以下 URL 和相关选项使用单独的操作,这允许您发送多个 URL 请求,每个请求都有自己的特定选项,例如不同的用户名或自定义请求,在 7.36.0 中添加`。
  • -0, --http1.0 : HTTP ,告诉 curl 使用 HTTP 1.0 版本,而不是内部首选的 HTTP 1.1
  • --http1.1 : HTTP ,告诉 curl 使用 HTTP 版本 1.1 ,这是内部默认版本,在 7.33.0 添加。
  • --http2 : HTTP ,告诉 curl 使用 HTTP 2 发出请求,这需要构建底层 libcurl 来支持它,在 7.33.0 添加。
  • --no-npn : 禁用 NPN TLS 扩展,如果 libcurl 是使用支持 NPN SSL 库构建的,则 NPN 默认启用,支持 HTTP 2 libcurl 使用 NPN https 会话期间与服务器协商对 HTTP 2 的支持,在 7.36.0 添加。
  • --no-alpn : 禁用 ALPN TLS 扩展,如果 libcurl 是用一个支持 ALPN SSL 库构建的,那么 ALPN 默认启用,支持 HTTP 2 libcurl 使用 ALPN https 会话期间与服务器协商对 HTTP 2 的支持,在 7.36.0 添加。
  • -1, --tlsv1 : SSL ,强制 curl 在与远程 TLS 服务器协商时使用 tls1.x 版本,您可以使用选项 --tlsv1.0 --tlsv1.1 --tlsv1.2 来更精确地控制 TLS 版本。
  • -2, --sslv2 : SSL ,当与远程 SSL 服务器协商时,强制 curl 使用 SSL version 2
  • -3, --sslv3 : SSL ,当与远程 SSL 服务器协商时,强制 curl 使用 SSL version 3
  • -4, --ipv4 : 如果 curl 能够将一个地址解析为多个 IP 版本(如果它支持 IPv6 ),则此选项告诉 curl 仅将名称解析为 IPv4 地址。
  • -6, --ipv6 : 如果 curl 能够将一个地址解析为多个 IP 版本(如果它支持 IPv6 ),则此选项告诉 curl 仅将名称解析为 IPv6 地址。
  • -a, --append : FTP/SFTP ,当在 FTP 上传中使用时,这将告诉 curl 追加到目标文件,而不是覆盖它,如果文件不存在,就创建它,注意,这个选项会被一些 SSH 服务器忽略,包括 OpenSSH
  • -A, --user-agent <agent string> : HTTP ,指定要发送到 HTTP 服务器的用户代理字符串,如果这个字段没有设置为 Mozilla/4.0 ,一些做得不好的 cgi 就会失败,要对字符串中的空格进行编码,请用单引号将字符串括起来,当然,这也可以通过 -H,-header 选项进行设置,如果多次使用此选项,将使用最后一个选项。
  • --anyauth : HTTP ,告诉 curl 自己找出身份验证方法,并使用远程站点声称支持的最安全的方法,这是通过首先执行请求并检查响应头来完成的,因此可能会导致额外的网络往返,这是用来代替设置特定的身份验证方法的,您可以使用 --basic --digest --ntlm --negotiate 来实现,请注意,如果从 stdin 上传数据,则不建议使用 --anyauth ,因为它可能需要发送两次数据,然后客户端必须能够倒带,如果从 stdin 上传时需要,上传操作将失败。
  • -b, --cookie <name=data> : HTTP ,将数据作为 cookie 传递到 HTTP 服务器,它应该是以前在 Set Cookie: 行中从服务器接收到的数据,数据格式应为 NAME1=VALUE1; NAME2=VALUE2 ,如果行中没有使用 = 符号,则会将其视为用于读取以前存储的 cookie 行的文件名,如果这些行匹配,则应在此会话中使用,使用这个方法还可以激活 cookieparser ,它也会让 curl 记录传入的 cookie ,如果您将这个方法与 -L,-location 选项结合使用,这可能会很方便,要从中读取 cookie 的文件的文件格式应该是纯 HTTP 头或 Netscape/Mozilla cookie 文件格式,请注意,用 -b, --cookie 指定的文件仅用作输入,文件中不会存储 Cookie ,要存储 cookie ,请使用 -c, --cookiejar 选项,或者甚至可以使用 -D, --dump-header HTTP 头保存到文件中,如果多次使用此选项,将使用最后一个选项。
  • -B, --use-ascii : FTP/LDAP ,启用 ASCII 传输,对于 FTP ,这也可以通过使用以 type=A 结尾的 URL 来实现,对于 win32 系统,此选项使发送到标准输出的数据处于文本模式。
  • --basic : HTTP ,告诉 curl 使用 HTTP 基本身份验证,这是默认值,并且此选项通常是无意义的,除非您使用它来重写先前设置的选项,该选项设置了不同的身份验证方法,例如 --ntlm --digest --negotiate
  • -c, --cookie-jar <file name> : HTTP ,指定在完成操作后要将所有 cookie 写入哪个文件, curl 写入以前从指定文件读取的所有 cookie 以及从远程服务器接收的所有 cookie ,如果没有已知的 cookies ,则不会写入任何文件,文件将使用 Netscape cookie 文件格式写入,如果将文件名设置为单破折号 - ,则 cookie 将写入标准输出,此命令行选项将激活生成 curl 记录并使用 cookie cookie 引擎,另一种激活它的方法是使用 -b, --cookie 选项,如果不能创建或写入 cookiejar ,整个 curl 操作不会失败,甚至不会清楚地报告错误,使用 -v 会显示一个警告,但这是关于这种可能致命的情况的唯一可见反馈,如果多次使用此选项,将使用最后指定的文件名。
  • -C, --continue-at <offset> : 以给定的偏移量继续 / 恢复以前的文件传输,给定的偏移量是将被跳过的确切字节数,从源文件的开头开始计算,然后再将其传输到目标,如果与上载一起使用, curl 将不使用 FTP 服务器命令大小,使用 -C - 告诉 curl 自动找出在哪里 / 如何继续传输,然后它使用给定的输出 / 输入文件来解决这个问题,如果多次使用此选项,将使用最后一个选项。
  • --ciphers <list of ciphers> : SSL ,指定要在连接中使用的密码,密码列表必须指定有效的密码,此为的 SSL 密码列表详细信息 http://www.openssl.org/docs/apps/ciphers.html NSS 密码的实现方式与 OpenSSL GnuTLS 不同, NSS 密码的完整列表位于以下 URL NSSCipherSuite 条目中 http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives ,如果多次使用此选项,将使用最后一个选项。
  • --compressed : HTTP ,使用 curl 支持的算法之一请求压缩响应,并保存未压缩的文档,如果使用此选项并且服务器发送不受支持的编码, curl 将报告错误。
  • --connect-timeout <seconds> : 允许连接到服务器的最长时间(秒),这只会限制连接阶段,一旦 curl 连接了,这个选项就不再有用了,自 7.32.0 以来,此选项接受十进制值,但实际超时的精度将随着指定超时的十进制精度增加而降低,另请参见 -m, -max time 选项,如果多次使用此选项,将使用最后一个选项。
  • --create-dirs : 当与 -o 选项结合使用时, curl 将根据需要创建必要的本地目录层次结构,此选项创建与 -o 选项一起提到的 dir ,而不是其他选项,如果 -o 文件名不使用 dir ,或者它提到的 dir 已经存在,则不会创建 dir ,要在使用 FTP SFTP 时创建远程目录,请尝试 --FTP create dirs
  • --crlf : FTP ,上传时将 LF 转换为 CRLF ,适用于 MVS (OS/390)
  • --crlfile <file> : HTTPS/FTPS ,提供一个使用 PEM 格式的文件,其中包含一个证书吊销列表,该列表可以指定要被视为吊销的对等证书,如果多次使用此选项,将使用最后一个选项,在 7.19.7 增加。
  • -d, --data <data> : HTTP ,将 POST 请求中指定的数据发送到 HTTP 服务器,就像用户填写 HTML 表单并按下 submit 按钮时浏览器所做的那样,这将导致 curl 使用内容类型 application/x-www-form-urlencoded 将数据传递给服务器,与 -F, --form 比较, -d, --data --data ascii 相同,要发布纯二进制的数据,应该改用 --data binary 选项,要对表单字段的值进行 URL 编码,可以使用 --data urlencode ,如果这些选项中的任何一个在同一命令行上被多次使用,则指定的数据段将与分隔的 & 符号合并在一起,因此,使用 -d name=daniel -d skill=lousy 将生成一个类似 name=daniel&skill=lousy post 块,如果数据以 @ 开头,其余的应该是从中读取数据的文件名,如果要从 stdin 读取数据,也可以指定多个文件,例如,从名为 foobar 的文件发布数据将使用 --data@foobar 完成,当 --data 被告知从这样的文件中读取时,回车符和换行符将被去除。
  • -D, --dump-header <file> : 将协议头写入指定的文件,当您想存储 HTTP 站点发送给您的头文件时,使用此选项非常方便,通过使用 -b, -cookie 选项,可以在第二次 curl 调用中读取来自头的 cookie ,但是, -c,-cookie jar 选项是存储 cookie 的更好方法,在 FTP 中使用时, FTP 服务器响应行被认为是 headers ,因此保存在那里,如果多次使用此选项,将使用最后一个选项。
  • --data-ascii <data> : 请参见 -d, --data
  • --data-binary <data> : HTTP ,这将完全按照指定的方式发布数据,无需任何额外处理,如果数据以 @ 开头,其余的应该是文件名,数据的发布方式与 --dataascii 类似,只是保留了换行符和回车符,并且从不进行转换,如果多次使用此选项,则第一个选项后面的选项将附加 -d, -data 中所述的数据。
  • --data-urlencode <data> : HTTP ,这会发布数据,与其他 --data 选项类似,但会执行 URL 编码,在 7.18.0 中添加,为了符合 CGI <data> 部分应以名称开头,后跟分隔符和内容规范,可以使用以下语法之一将 <data> 部分传递给 curl :
  • content : 这将使 curl URL 编码内容并将其传递,请小心,使内容不包含任何 = @ 符号,因为这将使语法与以下其他情况之一匹配。
  • =content : 这将使 curl URL-encode 编码内容并将其传递,前面的 = 符号不包括在数据中。
  • name=content : 这将使 curl URL 编码内容部分并将其继续传递,请注意,名称部分应该已经过 URL 编码。
  • @filename : 这将使卷曲加载来自给定文件(包括任何换行符)的数据,对该数据进行 URL 编码并在 POST 中传递。
  • name@filename : 这将使 curl 从给定的文件(包括任何换行符)加载数据, URL 对该数据进行编码并在 POST 中传递,名称部分附加了一个等号,结果是 name=urlencoded 文件内容,注意,名称应该已经是 URL 编码的。
  • --delegation LEVEL : 设置 LEVEL ,告诉服务器在处理用户凭据时允许委托什么,通常与 GSS/kerberos 一起使用。
  • none : 不允许任何授权。
  • policy : 委托当且仅当 Kerberos 服务票证中设置了 OK-AS-DELEGATE 标志时,这是领域策略的问题。
  • always : 无条件地允许服务器进行委托。
  • --digest : HTTP ,启用 HTTP 摘要身份验证,这是一种身份验证方案,可防止密码以明文形式通过有线发送,将此选项与正常的 -u, -user 选项结合使用,以设置用户名和密码,如果多次使用此选项,则只使用第一个选项。
  • --disable-eprt : FTP ,告诉 curl 在执行活动 FTP 传输时禁用 EPRT LPRT 命令, curl 通常会首先尝试使用 EPRT ,然后在使用 PORT 之前使用 LPRT ,但是有了这个选项,它会立即使用 PORT EPRT LPRT 是原始 FTP 协议的扩展,可能无法在所有服务器上工作,但它们以比传统的 PORT 命令更好的方式实现了更多功能, --eprt 可以用来再次显式地启用 eprt ,并且 --no eprt --disable eprt 的别名,禁用 EPRT 只会更改活动行为,如果要切换到被动模式,则不需要使用 -P, -ftp 端口或强制使用 -ftp pasv
  • --dns-interface <interface> : 告诉 curl 通过 <interface> 发送传出的 DNS 请求,此选项对应于 --interface (不影响 DNS ),提供的字符串必须是接口名称(不是地址),此选项要求 libcurl 是使用支持此操作的解析器后端构建的, c-ares 后端是唯一这样的,在 7.33.0 中添加。
  • --dns-ipv4-addr <ip-address> : 告诉 curl 在发出 ipv4dns 请求时绑定到 <ip address> ,以便 DNS 请求源自此地址,参数应为单个 IPv4 地址,此选项要求 libcurl 是使用支持此操作的解析器后端构建的, c-ares 后端是唯一这样的,在 7.33.0 中添加。
  • --dns-ipv6-addr <ip-address> : 在发出 ipv6dns 请求时,告诉 curl 绑定到 <ip address> ,以便 DNS 请求源自此地址,参数应为单个 IPv6 地址,此选项要求 libcurl 是使用支持此操作的解析器后端构建的, c-ares 后端是唯一这样的,在 7.33.0 中添加。
  • --dns-servers <ip-address,ip-address> : 设置要使用的 DNS 服务器列表,而不是系统默认值, IP 地址列表应以逗号分隔,端口号也可以选择在每个 IP 地址后给出 <Port number> ,此选项要求 libcurl 是使用支持此操作的解析器后端构建的, c-ares 后端是唯一这样的,在 7.33.0 中添加。
  • -e, --referer <URL> : HTTP ,将 referer Page 信息发送到 HTTP 服务器,当然,这也可以用 -H, -header 标志来设置,当与 -L, -location 一起使用时,您可以在 --referer URL 后面附加 ; auto ,使 curl location:header 后面自动设置上一个 URL auto 字符串可以单独使用,即使您没有设置初始 --referer ,如果多次使用此选项,将使用最后一个选项。
  • -E, --cert <certificate[:password]> : SSL ,告诉 curl 在使用 HTTPS FTPS 或其他基于 SSL 的协议获取文件时使用指定的客户端证书文件,如果使用安全传输,证书必须为 PKCS#12 格式,如果使用任何其他引擎,证书必须为 PEM 格式,如果未指定可选密码,将在终端上查询该密码,注意,这个选项假设一个 certificate 是私钥和私钥连接在一起的,请参见 --cert --key 以独立地指定它们。
  • --engine <name> : 选择用于密码操作的 OpenSSL 加密引擎,使用 --engine list 打印构建时支持的引擎的列表,请注意,并非所有 engine 在运行时都可用。
  • --environment : RISC OS ONLY ,使用 -w 选项支持的名称设置一系列环境变量,以便在运行 curl 之后更容易地提取有用的信息。
  • --egd-file <file> : SSL ,指定守护进程套接字的路径名,套接字用于为 SSL 连接的随机引擎播种,另请参见 --random file 选项。
  • --cert-type <type> : SSL ,告诉 curl 提供的证书是什么类型的证书, PEM DER ENG 是公认的类型,如果未指定,则假定为 PEM ,如果多次使用此选项,将使用最后一个选项。
  • --cacert <CA certificate> : SSL ,告诉 curl 使用指定的证书文件来验证对等方,文件可能包含多个 CA 证书,证书必须采用 PEM 格式,通常情况下, curl 是使用默认文件构建的,因此此选项通常用于更改默认文件。
  • --capath <CA certificate directory> : SSL ,告诉 curl 使用指定的证书目录来验证对等方,可以通过使用 : 分隔多条路径,例如 path1:path2:path3 ,证书必须是 PEM 格式的,如果 curl 是基于 OpenSSL 构建的,那么目录必须使用 OpenSSL 提供的 c_rehash 程序进行处理,如果 --cacert 文件包含许多 CA 证书,那么使用 --capath 可以使 OpenSSL 支持的 curl 比使用 --cacert 更有效地建立 SSL 连接。如果设置了此选项,将忽略默认的 capath 值,如果多次使用,将使用最后一个值。
  • -f, --fail : HTTP ,服务器错误时无提示失败,即完全没有输出,这样做主要是为了更好地使脚本等更好地处理失败的尝试,在正常情况下,当 HTTP 服务器无法传递文档时,它会返回一个 HTML 文档,通常会描述原因,此标志将阻止 curl 输出该值并返回错误 22 ,这种方法不是故障安全的,有时会出现不成功的响应代码,特别是在涉及身份验证时,例如响应代码 401 407
  • -F, --form <name=content> : HTTP ,这使得 curl 可以模拟用户按下 submit 按钮的填充表单, curl 根据 rfc2388 使用内容类型 multipart/form 数据发布数据,这样就可以上传二进制文件等,若强制内容部分成为文件,在文件名前面加上 @ 符号,若要仅从文件中获取内容部分,请在文件名前面加上 < 符号, @ < 之间的区别是 @ 使一个文件作为文件上传附加到 post 中,而 < 使一个文本字段从一个文件中获取该文本字段的内容。
  • --ftp-account [data] : FTP ,当 FTP 服务器在提供用户名和密码后请求 account data 时,使用 ACCT 命令发送该数据,在 7.13.0 中添加,如果多次使用此选项,将使用最后一个选项。
  • --ftp-alternative-to-user <command> : FTP ,如果与用户的身份验证和 PASS 命令失败,则发送此命令,当使用客户端证书通过 FTPS 连接到 Tumbleweed 的安全传输服务器时,使用 SITE AUTH 将告诉服务器从证书中检索用户名,在 7.15.5 增加。
  • --ftp-create-dirs : FTP/SFTP ,当 FTP sftp url/ 操作使用服务器上当前不存在的路径时, curl 的标准行为是失败,使用此选项, curl 将尝试创建丢失的目录。
  • --ftp-method [method] : FTP ,控制 curl 应该使用什么方法访问 FTP(S) 服务器上的文件,在 7.15.1 添加,方法参数应该是以下选项之一:
  • multicwd : curl 对给定 URL 中的每个路径部分执行一个 CWD 操作,对于深层层次结构,这意味着有很多命令, RFC1738 就是这么说明的,这是默认但最慢的行为。
  • nocwd : curl 根本不做 CWD curl 将执行 SIZE RETR STOR 等操作,并为所有这些命令提供到服务器的完整路径,这是最快的行为。
  • singlecwd : curl 对完整的目标目录执行一个 CWD ,然后正常地对文件进行操作,就像 multicwd 一样,这比 nocwd 更符合标准,但没有 multicwd 的全部处理。
  • --ftp-pasv : FTP ,数据连接使用被动模式,被动是内部默认行为,但使用此选项可用于覆盖以前的 -P/-ftp 端口选项,在 7.11.0 中添加,如果多次使用此选项,则只使用第一个选项,撤消强制的被动端口确实是不可行的,但是您必须再次强制执行正确的 -P, --ftp 端口,被动模式意味着 curl 将首先尝试 EPSV 命令,然后再尝试 PASV ,除非使用 --disable EPSV
  • --ftp-skip-pasv-ip : FTP ,当 curl 连接数据连接时,告诉 curl 不要使用服务器在响应 curl PASV 命令时建议的 IP 地址,相反, curl 将重用它已经用于控制连接的相同 IP 地址,在 7.14.2 增加,如果使用 PORT EPRT EPSV 代替 PASV ,则此选项无效。
  • --ftp-pret : FTP ,告诉 curl PASV EPSV 之前发送 PRET 命令,某些 FTP 服务器(主要是 drftpd )需要这个非标准的命令来显示目录列表,以及在 PASV 模式下进行更新和下载,在 7.20.x 中添加。
  • --ftp-ssl-ccc : FTP ,使用 CCC (清除命令通道)在验证后关闭 SSL/TLS 层,控制信道通信的其余部分将是未加密的,这允许 NAT 路由器跟踪 FTP 事务,默认模式为被动模式,其他模式请参见 --ftp ssl ccc mode ,在 7.16.1 增加。
  • --ftp-ssl-ccc-mode [active/passive] : FTP ,使用 CCC (清除命令通道)设置 CCC 模式,被动模式不会启动关闭,而是等待服务器执行,并且不会从服务器回复关闭,活动模式启动关机并等待服务器的回复, 7.16.2 增加。
  • --ftp-ssl-control : FTP FTP 登录需要 SSL/TLS ,清除以进行传输,允许安全的身份验证,但非加密的数据传输效率,如果服务器不支持 SSL/TLS ,则传输失败,在 7.16.0 中添加,目前仍然可以使用,但将在将来的版本中删除。
  • --form-string <name=string> : HTTP ,类似于 --form ,只是命名参数的值字符串是按字面意思使用的,值中的前导 @ < 字符以及 ; type= 字符串没有特殊含义,如果字符串值可能意外触发 --form 的' @ '或' < '特性,请优先使用 --form
  • -g, --globoff : 此选项关闭 URL globbing 解析器,设置此选项时,可以指定包含字母 {}[] URL ,而无需 curl 本身对其进行解释,请注意,这些字母不是正常的合法 URL 内容,但它们应该根据 URI 标准进行编码。
  • -G, --get : 使用此选项时,将使用 -d -data -data binary -data urlencode 指定的所有数据在 HTTP GET 请求中使用,而不是在其他情况下使用的 POST 请求,数据将附加到带有 ? URL 中分离器,如果与 -I 结合使用, POST 数据将被附加到带有 HEAD 请求的 URL 中,如果多次使用此选项,则只使用第一个选项,这是因为撤消 GET 没有意义,但是您应该执行您喜欢的替代方法。
  • -H, --header <header> : HTTP ,向服务器发送 HTTP 时请求中包含的额外头,您可以指定任意数量的额外标头,请注意,如果您应该添加一个与 curl 将使用的内部头具有相同名称的自定义头,那么将使用外部设置的头而不是内部头,这使得你可以做比 curl 更复杂的东西,您不应该在不完全清楚自己在做什么的情况下替换内部设置的头文件,通过在冒号的右侧提供一个没有内容的替换来删除内部标题,如 : -H Host: ,如果发送没有值的自定义标头,则其标头必须以分号结尾,例如 -H X-custom-header; 以发送 X-custom-header: curl 将确保您添加 / 替换的每个标题都使用正确的行尾标记发送,因此您不应将其添加为标题内容的一部分 : 不要添加换行符或回车符,它们只会为您带来麻烦,另请参见 -A, --user-agent -e, --referer 选项。
  • --hostpubmd5 <md5> : SCP/SFTP ,传递包含 32 个十六进制数字的字符串,字符串应该是远程主机公钥的 128 MD5 校验和,除非 md5 sums 匹配,否则 curl 将拒绝与主机的连接,在 7.17.1 增加。
  • --ignore-content-length : HTTP ,忽略内容长度标题,这对于运行 Apache1.x 的服务器尤其有用,后者将报告大于 2G 的文件的不正确内容长度。
  • -i, --include : HTTP ,在输出中包括 HTTP 头, HTTP 头包括服务器名称、文档日期、 HTTP 版本等内容。
  • -I, --head : HTTP/FTP/FILE ,仅获取 HTTP HTTP 服务器的特点是响应头,它只用来获取文档的头,当用于 FTP 或文件时, curl 仅显示文件大小和上次修改时间。
  • --interface <name> : 使用指定的接口执行操作,您可以输入接口名、 IP 地址或主机名,例如 : curl —接口 eth0:1 http://www.netscape.com/ 如果多次使用此选项,将使用最后一个选项。
  • -j, --junk-session-cookies : HTTP ,当 curl 被告知从给定文件读取 cookies 时,此选项将使其放弃所有会话 cookies, 这将基本上具有与启动新会话相同的效果,典型的浏览器总是在关闭会话 cookie 时丢弃它们。
  • -J, --remote-header-name : HTTP ,此选项告诉 -O, -remote name 选项使用服务器指定的内容配置文件名,而不是从 URL 提取文件名,在提供的文件名中还没有尝试解码% - 序列,因此此选项可能会为您提供意外的文件名。
  • -k, --insecure : SSL ,这个选项显式地允许 curl 执行不安全的 SSL 连接和传输,所有 SSL 连接都试图通过使用默认安装的 CA 证书捆绑包来确保安全,这使得所有被认为是不安全的连接失败,除非使用 -k, -unsecure
  • -K, --config <config file> : 指定从哪个配置文件读取 curl 参数,配置文件是一个文本文件,可以在其中写入命令行参数,然后使用这些参数,就像它们被写入实际的命令行一样,选项及其参数必须在同一配置文件行中指定,并用空格、冒号或等号分隔,可以选择在配置文件中给出长选项名,而不使用初始双破折号,如果是这样,冒号或等号字符可以用作分隔符,如果使用一个或两个破折号指定选项,则选项与其参数之间不能有冒号或等号字符,如果参数要包含空格,则参数必须用引号括起来,在双引号中,下列转义序列可用: \\ \" \t \n \r \v ,任何其他字母前面的反斜杠将被忽略,如果配置行的第一列是 # 字符,则该行的其余部分将被视为注释,在配置文件中,每个物理行只写一个选项,将文件名指定为 -K, --config -, 使 curl stdin 读取文件。
  • --keepalive-time <seconds> : 此选项设置在发送 keepalive 探测之前连接需要保持空闲的时间以及各个 keepalive 探测之间的时间,它目前在提供 TCP_KEEPIDLE TCP_KEEPINTVL 套接字选项的操作系统上非常有效(指 Linux 、最近的 AIX HP-UX 等),如果使用 --no keepalive, 则此选项无效,(在 7.18.0 中添加)如果多次使用此选项,将使用最后一个选项,如果未指定,则该选项默认为 60 秒。
  • --key <key> : SSL/SSH ,私钥文件名,允许您在此单独的文件中提供私钥,如果多次使用此选项,将使用最后一个选项。
  • --key-type <type> : SSL ,私钥文件类型,指定 --key 提供的私钥是哪种类型,支持 DER PEM ENG, 如果未指定,则假定为 PEM ,如果多次使用此选项,将使用最后一个选项。
  • --krb <level> : FTP ,启用 Kerberos 身份验证和使用,必须输入级别,并且级别应为 clear safe secretary private 之一,如果您使用的级别不是这些级别之一,则将改用 private ,此选项需要使用 kerberos4 支持构建的库,这并不常见,使用 -V, -version 查看卷曲是否支持它,如果多次使用此选项,将使用最后一个选项。
  • -l, --list-only : FTP ,列出 FTP 目录时,此开关强制使用仅名称视图,如果用户希望机器解析 FTP 目录的内容,这尤其有用,因为普通目录视图不使用标准的外观或格式,这样使用时,该选项将导致向服务器发送 NLST 命令,而不是 LIST ,注意: 一些 FTP 服务器在响应 NLST 时只列出文件,它们不包括子目录和符号链接, POP3 POP3 检索特定电子邮件时,此开关强制执行 LIST 命令而不是 RETR ,如果用户希望查看服务器上是否存在特定的消息 id 以及它的大小,那么这一点特别有用,注意: 当与 -X, -request<command> 组合使用时,此选项可用于发送 UIDL 命令,因此用户可以使用电子邮件的唯一标识符而不是其消息 id 来发出请求,在 7.21.5 增加。
  • -L, --location : HTTP/HTTPS ,如果服务器报告请求的页面已移动到其他位置(用 location:header 3XX 响应代码表示),此选项将使 curl 在新位置上重做请求,如果与 -i, --include -i, --head 一起使用,将显示所有请求页面的标题,使用身份验证时, curl 只将其凭据发送到初始主机,如果重定向将 curl 带到另一个主机,它将无法截获用户 + 密码,另请参见 --location trusted ,了解如何更改此设置,您可以使用 --max redirs 选项来限制要遵循的重定向数量,当 curl 遵循重定向并且请求不是纯 GET (例如 POST PUT )时,如果 HTTP 响应是 301 302 303 ,它将使用 GET 执行以下请求,如果响应代码是任何其他 3xx 代码, curl 将使用相同的未修改方法重新发送以下请求,您可以告诉 curl 不要更改 non-GET 请求方法,以便在 30x 响应之后使用专用选项 --post301 -post302 -post303 获取。
  • --libcurl <file> : 将此选项附加到任何普通的 curl 命令行,您将获得一个 libcurl ,它使用 C 源代码编写到文件中,执行与命令行操作相同的操作!如果多次使用此选项,将使用最后给定的文件名, 7.16.1 增加。
  • --limit-rate <speed> : 指定您希望 curl 使用的最大传输速率 - 用于下载和上载,如果您有一个有限的管道,并且希望您的传输不使用整个带宽,则此功能非常有用,使它比其他情况下慢,给定的速度以字节 / 秒为单位,除非附加后缀,加上 k k 将把数字计为千字节, m m 表示兆字节,而 g g 表示千兆字节,例如 : 200K 3m 1G ,给定的速率是整个传输过程中计算的平均速度,这意味着 curl 可能在短脉冲中使用更高的传输速度,但随着时间的推移,它使用的传输速度不会超过给定的速率,如果您还使用 -Y, -speed limit 选项,则该选项将优先,并可能略微削弱速率限制,以帮助保持速度限制逻辑正常工作,如果多次使用此选项,将使用最后一个选项。
  • --local-port <num>[-num] : 设置用于连接的本地端口号的首选数目或范围,请注意,端口号本质上是一种稀缺资源,有时会很忙,因此将此范围设置为太窄可能会导致不必要的连接设置失败,在 7.15.2 增加。
  • --location-trusted : HTTP/HTTPS ,与 -L, --location 类似,但允许向站点可能重定向到的所有主机发送名称 + 密码,如果站点将您重定向到要向其发送身份验证信息的站点(在 HTTP 基本身份验证的情况下是明文),则这可能会或可能不会导致安全漏洞。
  • -m, --max-time <seconds> : 允许整个操作所用的最长时间(秒),这有助于防止批处理作业因网络或链接运行缓慢而挂起数小时,自 7.32.0 以来,此选项接受十进制值,但实际超时的精度将随着指定超时的十进制精度增加而降低,另请参见 --connect timeout 选项,如果多次使用此选项,将使用最后一个选项。
  • --login-options <options> : 指定服务器身份验证期间要使用的登录选项,您可以使用登录选项指定身份验证期间可能使用的特定于协议的选项,目前只有 IMAP POP3 SMTP 支持登录选项,有关登录选项的更多信息,请参阅 RFC 2384 RFC 5092 IETF 草稿 draft-earhart-url-smtp-00.txt (在 7.34.0 中添加),如果多次使用此选项,将使用最后一个选项。
  • --mail-auth <address> : SMTP ,指定单个地址,这将用于指定正在中继到另一个服务器的已提交邮件的身份验证地址(标识),在 7.25.0 中添加。
  • --mail-from <address> : SMTP ,指定发送给定邮件的单一地址,在 7.20.0 中添加。
  • --max-filesize <bytes> : 指定要下载的文件的最大大小(以字节为单位),如果请求的文件大于这个值,传输将不会开始, curl 将返回退出代码 63 ,注意 : 文件大小在下载之前并不总是已知的,对于这样的文件,即使文件传输最终超过这个给定的限制,这个选项也不起作用,这涉及到 FTP HTTP 传输。
  • --mail-rcpt <address> : ( SMTP )指定单个地址、用户名或邮件列表名称,在执行邮件传输时,收件人应指定要将邮件发送到的有效电子邮件地址,(在 7.20.0 中添加)执行地址验证( VRFY 命令)时,应将收件人指定为用户名或用户名和域(根据 RFC5321 3.5 节),(在 7.34.0 中添加)在执行邮件列表扩展( EXPN 命令)时,应该使用邮件列表名称指定收件人,例如 Friends London Office ,在 7.34.0 中添加。
  • --max-redirs <num> : 设置允许的最大重定向次数,如果使用 -L, --location ,这个选项可以用来防止 curl 不断地遵循重定向,默认情况下,限制设置为 50 个重定向,将此选项设置为 -1 以使其无限,如果多次使用此选项,将使用最后一个选项。
  • --metalink : 此选项可以告诉 curl 将给定的 URI 作为 Metalink 文件进行解析和处理(支持版本 3 和版本 4 ( RFC 5854 )),并在出现错误(例如文件或服务器不可用)时使用中列出的镜像进行故障转移,它还将在下载完成后验证文件的哈希值, Metalink 文件本身在内存中下载和处理,而不是存储在本地文件系统中。
  • -n, --netrc : 使 curl 扫描用户主目录中的 .netrc ( netrc on Windows )文件以获取登录名和密码,这通常用于 UNIX 上的 FTP ,如果与 HTTP 一起使用, curl 将启用用户身份验证,有关文件格式的详细信息,请参阅 netrc(4) ftp(1) ,如果文件没有正确的权限, curl 不会报错,环境变量 HOME 用于查找主目录,一个快速且非常简单的示例,说明如何设置 .netrc 以允许 curl 通过 FTP 传输到机器 host.domain.com 网站用户名为 myself 和密码为 secret 的应类似于 : 机器 host.domain.com 网站登录密码密码。
  • -N, --no-buffer : 禁用输出流的缓冲,在正常的工作环境中, curl 将使用一个标准的缓冲输出流,它将以块的形式输出数据,而不一定是在数据到达时,使用此选项将禁用该缓冲,请注意,这是已记录的否定选项名称,因此,可以使用 --buffer 来强制执行缓冲。
  • --netrc-file : 此选项类似于 --netrc ,只是您提供了 curl 应该使用的 netrc 文件的路径(绝对或相对),每次调用只能指定一个 netrc 文件,如果提供了多个 --netrc 文件选项,则只使用最后一个选项,( 7.21.5 增加)此选项会覆盖 --netrc 的任何用法,因为它们是互斥的,如果指定,它还将遵循 --netrc optional
  • --netrc-optional : 与 --netrc 非常相似,但此选项使 .netrc 的用法成为可选的,而不是像 --netrc 选项那样是强制性的。
  • --negotiate : HTTP ,启用协商( SPNEGO )身份验证,如果要为代理身份验证启用协商( SPNEGO ),请使用 --proxy Negotiate ,此选项需要使用 GSS-API SSPI 支持构建的库,使用 -V, -version 查看 curl 是否支持 GSS-API/SSPI SPNEGO ,使用此选项时,还必须提供假 -u, -user 选项以正确激活身份验证代码,发送 -u 就足够了,因为实际上没有使用 -u 选项中的用户名和密码,如果多次使用此选项,则只使用第一个选项。
  • --no-keepalive : 禁用在 TCP 连接上使用 keepalive 消息,因为默认情况下 curl 会启用它们,请注意,这是已记录的否定选项名称,因此,可以使用 --keepalive 来强制执行 keepalive
  • --no-sessionid : SSL ,禁用 curl SSL 会话 ID 缓存的使用,默认情况下,所有传输都使用缓存完成,请注意,尽管尝试重用 SSL 会话 id 不会对任何事情造成伤害,但在野外似乎存在损坏的 SSL 实现,可能需要您禁用它才能成功,(在 7.16.0 中添加)请注意,这是已记录的否定选项名称,因此,您可以使用 --sessionid 来强制执行会话 ID 缓存。
  • --noproxy <no-proxy-list> : 不使用代理(如果指定了代理)的主机的逗号分隔列表,唯一的通配符是一个 * 字符,它匹配所有主机,并有效地禁用代理,此列表中的每个名称都匹配为包含主机名的域或主机名本身,例如,本地网站将匹配本地网站, 7.19.4 中增加。
  • --ntlm : HTTP ,启用 NTLM 身份验证, NTLM 身份验证方法是由 Microsoft 设计的,用于 IIS web 服务器,它是一个专有的协议,由聪明的人逆向设计,并根据他们的努力在 curl 中实现,这种行为不应该被认可,您应该鼓励每个使用 NTLM 的人转而使用公共的和文档化的身份验证方法,比如 Digest ,如果要为代理身份验证启用 NTLM ,请使用 --proxy NTLM ,此选项需要使用 SSL 支持构建的库,使用 -V, -version 查看 curl 是否支持 NTLM ,如果多次使用此选项,则只使用第一个选项。
  • -o, --output <file> : 将输出写入 <file> 而不是标准输出,如果使用 {} [] 获取多个文档,则可以在 <file> 说明符中使用 # 后跟数字,该变量将替换为正在获取的 URL 的当前字符串。
  • -O, --remote-name : 将输出写入名为的本地文件,就像我们得到的远程文件一样,仅使用远程文件的文件部分,路径被切断,用于保存的远程文件名是从给定的 URL 提取的,而不是从其他 URL 提取的,因此,文件将保存在当前工作目录中,如果要将文件保存在其他目录中,请确保在使用 -O, -remote name 标志调用 curl 之前更改当前工作目录,没有对文件名执行 URL 解码,如果名称中有% 20 或其他 URL 编码的部分,它们将以文件名的形式结束,您可以使用此选项的次数与您拥有的 URL 数量相同。
  • --oauth2-bearer : IMAP、POP3、SMTP ,指定 OAUTH 2.0 服务器身份验证的承载令牌,承载令牌与用户名一起使用,用户名可以指定为 --url -u, -user 选项的一部分,承载令牌和用户名根据 rfc6750 格式化,如果多次使用此选项,将使用最后一个选项。
  • --proxy-header <header> : HTTP ,向代理发送 HTTP 时请求中包含的额外头,您可以指定任意数量的额外标头,这是与 -H, -header 等效的选项,但仅适用于代理通信,就像在连接请求中一样,当您希望将单独的头发送到代理时,它将发送到实际的远程主机, curl 将确保您添加 / 替换的每个标题都使用正确的行尾标记发送,因此您不应将其添加为标题内容的一部分 : 不要添加换行符或回车符,它们只会为您带来麻烦,使用此选项指定的头不会包含在 curl 知道不会发送到代理的请求中,此选项可多次用于添加 / 替换 / 删除多个标头,在 7.37.0 中添加。
  • -p, --proxytunnel : 当使用 HTTP 代理( -x, --proxy )时,此选项将导致非 HTTP 协议尝试通过代理进行隧道传输,而不是仅使用它来执行类似 HTTP 的操作,隧道方法是通过 HTTP 代理连接请求来实现的,并且要求代理允许直接连接到 curl 希望通过隧道连接到的远程端口号。
  • -P, --ftp-port <address> : FTP ,在连接 FTP 时反转默认的发起程序 / 侦听程序角色,此开关使 curl 使用活动模式,在实践中, curl 然后告诉服务器连接回客户机指定的地址和端口,而被动模式则要求服务器设置一个 IP 地址和端口以供连接。
  • --pass <phrase> : SSL/SSH ,私钥的密码短语,如果多次使用此选项,将使用最后一个选项。
  • --post301 : HTTP ,告诉 curl 遵守 rfc2616/10.3.2 ,在执行 301 重定向时不要将 POST 请求转换为 GET 请求,非 RFC 行为在 web 浏览器中无处不在,因此 curl 默认情况下进行转换以保持一致性,然而,服务器可能需要在这样的重定向之后保持 POST ,此选项仅在使用 -L, -location (在 7.17.1 中添加)时才有意义。
  • --post302 : HTTP ,告诉 curl 遵守 rfc2616/10.3.2 ,在执行 302 重定向时不要将 POST 请求转换为 GET 请求,非 RFC 行为在 web 浏览器中无处不在,因此 curl 默认情况下进行转换以保持一致性,然而,服务器可能需要在这样的重定向之后保持 POST ,此选项仅在使用 -L, -location (在 7.19.1 中添加)时才有意义。
  • --post303 : HTTP ,告诉 curl 遵守 rfc2616/10.3.2 ,在执行 303 重定向时不要将 POST 请求转换为 GET 请求,非 RFC 行为在 web 浏览器中无处不在,因此 curl 默认情况下进行转换以保持一致性,然而,服务器可能需要在这样的重定向之后保持 POST ,此选项仅在使用 -L, -location (在 7.26.0 中添加)时才有意义。
  • --proto <protocols> : 告诉 curl 使用列出的协议进行初始检索,协议从左到右求值,以逗号分隔,每个协议都是一个协议名或 all ,可以选择以零个或多个修饰符作为前缀。
  • --proto-redir <protocols> : 告诉 curl 在重定向后使用列出的协议,有关协议的表示方式,请参见 --proto ,( 7.20.2 增加)。
  • --proxy-anyauth : 告诉 curl 在与给定代理通信时选择合适的身份验证方法,这可能会导致额外的请求 / 响应往返,( 7.13.2 增加)。
  • --proxy-basic : 告诉 curl 在与给定代理通信时使用 HTTP 基本身份验证,使用 --basic 对远程主机启用 HTTP basic Basic curl 用于代理的默认身份验证方法。
  • --proxy-digest : 告诉 curl 在与给定代理通信时使用 HTTP 摘要身份验证,使用 --digest 对远程主机启用 HTTP 摘要。
  • --proxy-negotiate : 告诉 curl 在与给定代理通信时使用 HTTP 协商( SPNEGO )身份验证,使用 --negotiate 启用与远程主机的 HTTP 协商( SPNEGO ), 7.17.1 增加。
  • --proxy-ntlm : 告诉 curl 在与给定代理通信时使用 httpntlm 身份验证,使用 --ntlm 启用远程主机的 ntlm
  • --proxy1.0 <proxyhost[:port]> : 使用指定的 HTTP 1.0 代理,如果未指定端口号,则假定在端口 1080 处,此选项与 HTTP proxy 选项 -x, --proxy 之间的唯一区别是,尝试通过代理使用 CONNECT 将指定 HTTP 1.0 协议,而不是默认的 HTTP 1.1
  • --pubkey <key> : SSH ,公钥文件名,允许您在此单独的文件中提供公钥,如果多次使用此选项,将使用最后一个选项。
  • -q : 如果用作命令行上的第一个参数,则不会读取和使用 curlrc config 文件,有关默认配置文件搜索路径的详细信息,请参见 -K, --config
  • -Q, --quote <command> : FTP/SFTP ,向远程 FTP SFTP 服务器发送任意命令, Quote 命令在传输发生之前发送(确切地说,是在 FTP 传输中的初始 PWD 命令之后),若要使命令在成功传输后执行,请在其前面加一个短划线 - ,要使命令在 curl 更改工作目录后发送,就在传输命令之前,在命令前面加上 + (这仅适用于 FTP ),您可以指定任意数量的命令,如果服务器返回其中一个命令失败,则整个操作将中止,必须按照 RFC 959 的定义将语法正确的 FTP 命令发送到 FTP 服务器,或将下面列出的命令之一发送到 SFTP 服务器,此选项可以多次使用,在与 FTP 服务器通信时,在命令前面加一个星号 * ,使 curl 即使失败也能继续,因为默认情况下, curl 会在第一次失败时停止, SFTP 是一种二进制协议,与 FTP 不同, curl 在将 SFTP quote 命令发送到服务器之前会自己解释它们,文件名可以用 shell 样式引用以嵌入空格或特殊字符。
  • -r, --range <range> : HTTP/FTP/SFTP/FILE ,从 HTTP/1.1 FTP SFTP 服务器或本地文件检索字节范围(即部分文档),可以通过多种方式指定范围。
  • -R, --remote-time : 使用时,这将使 curl 尝试找出远程文件的时间戳,如果该时间戳可用,则使本地文件获得相同的时间戳。
  • --random-file <file> : SSL ,指定包含随机数据的文件的路径名,数据用于为 SSL 连接的随机引擎播种,另请参见 --egd 文件选项。
  • --raw : HTTP ,使用时,它会禁用所有内容或传输编码的内部 HTTP 解码,而是让它们原封不动地传递, 7.16.2 增加。
  • --remote-name-all : 此选项将更改所有给定 URL 的默认操作,使其处理方式与每个 URL 使用 -O -remote name 一样,因此,如果要在使用 --remote name all 之后对特定 URL 禁用该选项,则必须使用 -o- --no remote name ,在 7.19.0 中添加。
  • --resolve <host:port:address> : 为特定主机和端口对提供自定义地址,使用此方法,可以使 curl 请求使用指定的地址,并防止使用通常解析的地址,将其视为命令行上提供的一种 /etc/hosts 替代方案,端口号应该是用于主机将用于的特定协议的编号,这意味着,如果要为同一主机提供不同端口的地址,则需要多个条目,可以多次使用此选项添加许多要解析的主机名,在 7.21.3 增加。
  • --retry <num> : 如果 curl 尝试执行传输时返回暂时性错误,它将在放弃之前重试此次数,将数字设置为 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/