shell命令学习

## CURL命令学习
  
一、命令描述:使用curl命令可以帮助我们在终端使用计算机网络中应用层的一些协议,比如DICT、FILE、FTP、FTPS、GOPHER、HTTP、HTTPS、IMAP、IMAPS、LDAP、 LDAPS、 POP3、POP3S、 RTMP、 RTSP、 SCP、 SFTP、 SMTP、 SMTPS、 TELNET and TFTP。使用该命令时,终端将处于无法与外部交互,阻塞在命令执行阶段。curl命令可以帮助我们实现一些简单的操作,例如文件传输与恢复、使用get 或 post方法获取网页文件并输出在终端、用户身份认证、ssl连接等等。

二、语法规则:curl [options] [URL…] 其中URL的编写规则:
(1)直接填写URL

// curl默认命令为get方法
curl www.baidu.com

终端会将文件以流的方式输出在屏幕终端输出的是HTML文件源码
我们可以使用管道命令"|"筛选出我们想要的内容

(2)使用大括号一次性输入多个URL

// 使用大括号一次性输入多个URL
curl www.{baidu,baidu}.com
//注:其中每个URL之间用逗号隔开

依此输出所有有效的HTML文件
输出

(3)也可以使用中括号输入URL的遍历序列[1-100]

// 使用中括号输入URL的遍历序列
ftp://ftp.numericals.com/file[1-100].txt
ftp://ftp.numericals.com/file[001-100].txt     //带有前导0
ftp://ftp.letters.com/file[a-z].txt

注意:嵌套的中括号大括号输出URL的方式不用许使用,但可以相邻使用

// 不允许嵌套使用
![请添加图片描述](https://img-blog.csdnimg.cn/ce138579b81c4c9bb0f1a7524e51682c.png)
 		//是不被允许的使用方式
curl http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html

嵌套使用:嵌套使用错误

相邻使用:
URL解析正确

(4)可以为范围指定步进计数器,以便每N个数字或字母获取一个步进计数器:

// 使用中括号输入URL的遍历序列
curl http://www.numericals.com/file[1-100:10].txt	//步进为10
curl http://www.letters.com/file[a-z:2].txt		//步进为每两个字母

使用时注意:如果您指定的URL没有protocol://前缀,curl将尝试猜测您可能需要的协议。然后它将默认为HTTP,但尝试基于HTTP的其他协议常用的主机名前缀。例如,对于以“ftp”开头的主机名,curl将假定您想说ftp。

curl将尽最大努力使用您传递给它的内容作为URL。它并没有试图通过任何方式验证它是否是一个语法正确的URL,而是非常自由地接受它所接受的内容。

curl将尝试重新使用连接进行多个文件传输,以便从同一服务器获取多个文件不会进行多次连接/握手。这提高了速度。当然,这只在单个命令行上指定的文件上完成,不能在单独的curl调用之间使用。

三、可选指令:(可使用网页搜索获得想要了解的指令)
-#, --progress-bar
使curl将进度显示为一个简单的进度条,而不是标准的、更具信息性的仪表。

-0, --http1.0
(HTTP)强制curl使用HTTP 1.0而不是内部首选的HTTP 1.1发出请求。

-1, --tlsv1
(SSL)强制curl在与远程TLS服务器协商时使用TLS版本1.x。您可以使用选项–tlsv1.0、-tlsv1.1、-tlsv1.2和–tlsv1.3来控制TLS版本更精确(如果使用中的SSL后端支持这样的控制级别)。

-2, --sslv2
(SSL)强制curl在与远程SSL服务器协商时使用SSL版本2。

-3, --sslv3
(SSL)强制curl在与远程SSL服务器协商时使用SSL版本3。

-4, --ipv4
如果curl能够将一个地址解析为多个IP版本(如果它支持IPv6,则是这样),则此选项告诉curl仅将名称解析为IPv4地址。

-6, --ipv6
如果curl能够将一个地址解析为多个IP版本(如果它支持IPv6,则是这样),则此选项告诉curl仅将名称解析为IPv6地址。

-a, --append
(FTP/SFTP)当用于上传时,这将告诉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 <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,–cookie-jar选项,或者甚至可以使用-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。如果没有已知的cookie,则不会写入任何文件。该文件将使用Netscape cookie文件格式写入。如果将文件名设置为单破折号“-”,cookies将写入标准输出。此命令行选项将激活制作curl记录和使用cookie的cookie引擎。激活它的另一种方法是使用-b,–cookie选项。如果不能创建或写入cookie jar,那么整个curl操作将不会失败,甚至不会清楚地报告错误。使用-v将显示警告,但这是关于这种可能致命情况的唯一可见反馈。

如果多次使用此选项,将使用最后指定的文件名。

-C, --continue-at
以给定偏移量继续/恢复上一次文件传输。
给定偏移量是将被跳过的确切字节数,从源文件的开头开始计算,然后再传输到目标文件。如果与上载一起使用,curl将不使用FTP服务器命令大小。使用“-C-”告诉curl自动找出在哪里/如何恢复传输。然后它使用给定的输出/输入文件来解决这个问题。

如果多次使用此选项,将使用最后一个选项。

–ciphers
SSL)指定要在连接中使用的密码。密码列表必须指定有效的密码。请阅读此URL上的SSL密码列表详细信息:http://www.openssl.org/docs/apps/ciphers.html

NSS密码的实现方式与OpenSSL和GnuTLS不同。NSS密码的完整列表位于以下URLNSSCipherSuite条目中:http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives

如果多次使用此选项,将使用最后一个选项。

–compressed
HTTP)使用curl支持的算法之一请求压缩响应,并保存未压缩的文档。如果使用此选项并且服务器发送不支持的编码,curl将报告错误。

–connect-timeout
允许连接到服务器的最长时间(秒)。这只会限制连接阶段,一旦curl连接,此选项就不再有用。
另请参见-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格式的文件,其中包含一个证书吊销列表,该列表可以指定要被视为吊销的对等证书。

如果多次使用此选项,将使用最后一个选项。

-d, --data
(HTTP)将POST请求中的指定数据发送到HTTP服务器,其方式与浏览器在用户填写HTML表单并按下提交按钮时的方式相同。这将导致curl使用内容类型application/x-www-form-urlencoded将数据传递给服务器。与-F、-form相比。

-d, --data is the same as --data-ascii.
要发布纯二进制的数据,应该使用–data binary选项。要对表单字段的值进行URL编码,可以使用–data urlencode。如果在同一命令行上多次使用这些选项中的任何一个,则指定的数据段将与分隔的&-符号合并在一起。因此,使用“-d name=daniel-d skill=loosy”将生成一个类似于“name=daniel&skill=loosy”的帖子块。
如果数据以@开头,其余的应该是读取数据的文件名,或者-如果要从stdin读取数据。文件的内容必须已经是URL编码的。还可以指定多个文件。因此,从名为“foobar”的文件发布数据将使用–data@foobar完成。

-D, --dump-header
将协议头写入指定的文件。

当您想要存储HTTP站点发送给您的头时,使用此选项非常方便。然后,通过使用-b,–cookie选项,可以在第二次curl调用中读取来自头部的cookie!但是,-c,-cookie jar选项是存储cookie的更好方法。在FTP中使用时,FTP服务器响应行被视为“头”,因此保存在那里。
如果多次使用此选项,将使用最后一个选项。

–data-ascii
见-d,–数据。

–data-binary
(HTTP)这将完全按照指定的方式发布数据,无需任何额外处理。如果数据以@开头,那么其余的应该是文件名。数据的发布方式与–Data ascii类似,只是保留了换行符,并且从未进行过转换。如果多次使用此选项,则第一个选项后面的选项将按照-d,–data中的说明追加数据。

–data-urlencode
(HTTP)该选项发布数据,与其他–data选项类似,只是执行URL编码。(在7.18.0中添加)

为了兼容CGI,部分应该以名称开头,后跟分隔符和内容规范。可以使用以下语法之一将部分传递给curl:

content
这将使curl URL对内容进行编码并将其传递。只是要小心,使内容不包含任何=或@符号,因为这将使语法匹配下面的其他情况之一!

=content
这将使curl URL对内容进行编码并将其传递。前面的=符号不包括在数据中。

name=content
这将使curl URL对内容部分进行编码并传递。请注意,名称部分应该已经是URL编码的。

@filename
这将使curl从给定的文件(包括任何换行符)加载数据,URL对该数据进行编码并在POST中传递。

name@filename
这将使curl从给定的文件(包括任何换行符)加载数据,URL对该数据进行编码并在POST中传递。名称部分附加了一个等号,结果是name=urlencoded文件内容。请注意,名称应该已经是URL编码的。

–delegation LEVEL
设置级别以告知服务器在涉及用户凭据时允许委派的内容。与GSS/kerberos一起使用。

–digest
(HTTP)启用HTTP摘要身份验证。这是一种身份验证方案,可防止密码以明文形式通过网络发送。将此选项与正常的-u,–user选项结合使用,以设置用户名和密码。有关相关选项,请参见–ntlm、–negotiate和–anyauth。

如果多次使用此选项,则仅使用第一个选项。
–disable-eprt
(FTP)告诉curl在进行活动FTP传输时禁用EPRT和LPRT命令的使用。Curl通常会首先尝试使用EPRT,然后在使用PORT之前尝试使用LPRT,但有了这个选项,它会立即使用PORT。EPRT和LPRT是原始FTP协议的扩展,可能无法在所有服务器上工作,但与传统的PORT命令相比,它们以更好的方式实现了更多的功能。

–eprt
可用于再次显式启用EPRT,并且–no EPRT是–disable EPRT的别名。如果服务器是IPv6主机,则此选项将无效,因为此时需要EPRT。禁用EPRT只会更改活动行为。如果要切换到被动模式,则不需要使用-P、-ftp端口或强制使用-ftp pasv。

–disable-epsv
(FTP)告诉curl在进行被动FTP传输时禁用EPSV命令的使用。Curl通常会在PASV之前首先尝试使用EPSV,但使用此选项时,它不会尝试使用EPSV。

–epsv
可以用于再次显式启用EPSV,并且–no EPSV是–disable EPSV的别名。如果服务器是IPv6主机,则此选项将无效,因为此时需要EPSV。禁用EPSV只会更改被动行为。如果要切换到活动模式,则需要使用-P,–ftp端口。

-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的协议的文件时使用指定的客户端证书文件。证书必须采用PEM格式。如果未指定可选密码,将在终端上查询该密码。请注意,此选项假定“证书”文件是私钥和私钥连接的!请参见–cert和–key以单独指定它们。

如果curl是根据NSS SSL库构建的,则此选项可以告诉curl要在NSS数据库中使用的证书昵称,该数据库由环境变量SSL_DIR(或默认情况下为/etc/pki/nssdb)定义。如果NSS PEM PKCS#11模块(libnsspem.so)可用,则可以加载PEM文件。如果要使用当前目录中的文件,请在其前面加“/”前缀,以避免与昵称混淆。如果昵称包含“:”,则需要以“\”为前缀,这样它就不会被识别为密码分隔符。如果昵称包含“\”,则需要将其转义为“\”,以便不将其识别为转义字符。
如果多次使用此选项,将使用最后一个选项。

–engine< name>
选择用于密码操作的OpenSSL加密引擎。使用–engine list打印构建时支持的引擎列表。请注意,并非所有(或无)发动机在运行时都可用。

–environment
选择用于密码操作的OpenSSL加密引擎。使用–engine list打印构建时支持的引擎列表。请注意,并非所有(或无)发动机在运行时都可用。
–egd-file < file>
(SSL)指定熵收集守护程序套接字的路径名。套接字用于为SSL连接的随机引擎种子。另请参见–random文件选项。
–cert-type< type>
(SSL)告诉curl提供的证书是什么类型的证书。PEM、DER和ENG是公认的类型。如果未指定,则假定为PEM。

如果多次使用此选项,将使用最后一个选项。

–cacert < CA certificate>
(SSL)告诉curl使用指定的证书文件来验证对等方。该文件可能包含多个CA证书。证书必须采用PEM格式。通常情况下,构建curl是为了为此使用默认文件,因此此选项通常用于更改该默认文件。
curl识别名为“curl\u CA\u BUNDLE”的环境变量(如果已设置),并使用给定路径作为CA证书束的路径。此选项覆盖该变量。

windows版本的curl将自动在curl.exe所在的同一目录、当前工作目录或路径上的任何文件夹中查找名为“curl CA bundle.crt”的CA证书文件。

如果curl是针对NSS SSL库构建的,则需要NSS PEM PKCS#11模块(libnsspem.so)才能使此选项正常工作。

–capath < CA certificate directory>
(SSL)告诉curl使用指定的证书目录来验证对等方。通过使用“:”分隔多个路径,可以提供多个路径(例如“路径1:路径2:路径3”)。证书必须采用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模拟用户按下提交按钮的填充表单。这导致curl根据RFC 2388使用内容类型multipart/formdata发布数据。这允许上载二进制文件等,以强制“内容”部分成为文件,并在文件名前面加上@符号。要仅从文件中获取内容部分,请在文件名前面加上符号<。@和<之间的区别在于@使文件作为文件上传附加到帖子中,而<使文本字段成为文本字段,并仅从文件中获取该文本字段的内容。

例如,要将密码文件发送到服务器,其中“password”是输入/etc/passwd的表单字段的名称:

          curl -F password=@/etc/passwd www.mypasswords.com

要从stdin而不是文件中读取内容,请使用-作为文件名。这适用于@和<构造。

您还可以通过使用“Type=”告诉curl要使用什么内容类型,方式类似于:

          curl -F "web=@index.html;type=text/html" url.com
          curl -F "name=daniel;type=text/foo" url.com

您还可以通过设置filename=,显式更改文件上载部分的name字段,如下所示:

          curl -F "file=@localfile;filename=nameinpost" url.com

如果文件名/路径包含“,”或“;”,必须用双引号引用,如:

          curl -F "file=@\"localfile\";filename=\"nameinpost\"" url.com
          curl -F 'file=@"localfile";filename="nameinpost"' url.com

请注意,如果文件名/路径用双引号引起来,则文件名中的任何双引号或反斜杠都必须用反斜杠转义。

–ftp-account [data]
(FTP)当FTP服务器在提供用户名和密码后请求“帐户数据”时,使用ACCT命令发送该数据。
如果多次使用此选项,将使用最后一个选项。

–ftp-alternative-to-user < command>
(FTP)如果用户身份验证失败,并且PASS命令失败,则发送此命令。使用客户端证书通过FTPS连接到Tumbleweed的安全传输服务器时,使用“SITE AUTH”将通知服务器从证书中检索用户名。

–ftp-create-dirs
(FTP/SFTP)当FTP或SFTP URL/操作使用服务器上当前不存在的路径时,curl的标准行为是失败。使用此选项,curl将尝试创建丢失的目录。

–ftp-method [method]
(FTP)控制curl应使用何种方法访问FTP(S)服务器上的文件。方法参数应为以下备选方案之一:

	multicwd
		curl对给定URL中的每个路径部分执行单个CWD操作。
		对于深层层次结构,这意味着有很多命令。RFC1738就是这么说的。这是默认但最慢的行为。nocwd curl根本不做CWD。
		curl将执行SIZE、RETR、STOR等操作,并为所有这些命令提供到服务器的完整路径。这是最快的行为。

	singlecwd
    	curl对完整的目标目录执行一个CWD,然后“正常”对文件进行操作(就像multicwd的情况一样)。
    	这比“nocwd”更符合标准,但没有“multicwd”的全部惩罚。

–ftp-pasv
(FTP)数据连接使用被动模式。被动是内部默认行为,但使用此选项可用于覆盖以前的-P/-ftp端口选项。
如果多次使用此选项,则仅使用第一个选项。撤销强制被动语态确实是不可行的,但是你必须执行正确的-P

–ftp-port again.
被动模式意味着curl将首先尝试EPSV命令,然后尝试PASV,除非使用–disable EPSV。

–ftp-skip-pasv-ip
(FTP)当curl连接数据连接时,告诉curl不要使用服务器在响应curl的PASV命令时建议的IP地址。相反,curl将重用它已经用于控制连接的相同IP地址。
如果使用端口、EPRT或EPSV代替PASV,则此选项无效。

–ftp-pret
(FTP)告诉curl在PASV(和EPSV)之前发送PRET命令。某些FTP服务器(主要是drftpd)需要此非标准命令来显示目录列表以及在PASV模式下进行升级和下载。

–ftp-ssl-ccc
(FTP)使用CCC(清除命令通道)在验证后关闭SSL/TLS层。控制通道通信的其余部分将不加密。这允许NAT路由器跟踪FTP事务。默认模式为被动模式。其他模式请参见–ftp ssl ccc模式。(在7.16.1中添加)

–ftp-ssl-ccc-mode [active/passive]
(FTP)使用CCC(清除命令通道)设置CCC模式。被动模式不会启动关机,而是等待服务器执行,并且不会从服务器回复关机。活动模式启动关机并等待服务器的回复。

–ftp-ssl-control
(FTP)FTP登录需要SSL/TLS,清除以进行传输。允许安全身份验证,但非加密数据传输效率高。如果服务器不支持SSL/TLS,则传输失败。(在7.16.0中添加)仍然可以使用,但将在未来版本中删除。

–form-string <name=string>
(HTTP)与–form类似,只是命名参数的值字符串是按字面意思使用的。前导“@”和“<”字符,以及“;值中的type='字符串没有特殊含义。如果字符串值可能会意外触发–form的“@”或“<”功能,请优先使用–form。

-g, --globoff
此选项关闭“URL全局语法分析器”。设置此选项时,可以指定包含字母{}[]的URL,而无需curl本身对其进行解释。请注意,这些字母不是正常的合法URL内容,但它们应该根据URI标准进行编码。

-G, --get
使用此选项时,将使使用-d、-data或-data二进制指定的所有数据在HTTP GET请求中使用,而不是在其他情况下使用的POST请求。数据将附加到带有“?”分隔符的URL。
如果与-I结合使用,POST数据将被附加到带有HEAD请求的URL中。
如果多次使用此选项,则仅使用第一个选项。这是因为撤销GET没有意义,但是您应该强制执行您喜欢的替代方法。

-H, --header < header>
(HTTP)获取网页时要使用的额外标头。您可以指定任意数量的额外标头。请注意,如果您应该添加一个与curl将使用的一个内部标题同名的自定义标题,那么将使用外部设置的标题而不是内部标题。这使得你可以制作比卷发更复杂的东西。您不应该在完全不知道自己在做什么的情况下替换内部设置的标题。通过在冒号右侧提供不包含内容的替换,删除内部标题,如:-H“Host:”。如果发送没有值的自定义标头,则其标头必须以分号终止,例如-H“X-custom-header;”以发送“X-custom-header:”。
curl将确保您添加/替换的每个标题都使用正确的行尾标记发送,因此您不应将其作为标题内容的一部分添加:不要添加换行符或回车符,它们只会给您带来麻烦。
See also the -A, --user-agent and -e, --referer options.
此选项可多次用于添加/替换/删除多个标题

–hostpubmd5 < md5>
(SCP/SFTP)传递包含32个十六进制数字的字符串。字符串应该是远程主机公钥的128位MD5校验和,除非MD5校验和匹配,否则curl将拒绝与主机的连接。

–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 --interface eth0:1 http://www.netscape.com/

如果多次使用此选项,将使用最后一个选项。

-j, --junk-session-cookies
(HTTP)当curl被告知从给定文件读取cookie时,此选项将使其放弃所有“会话cookie”。这将基本上具有与启动新会话相同的效果。典型的浏览器在关闭时总是丢弃会话cookie。

-J, --remote-header-name
(HTTP)此选项告诉-O,–remote name选项使用服务器指定的内容处置文件名,而不是从URL提取文件名。

-k, --insecure
(SSL)此选项明确允许curl执行“不安全”的SSL连接和传输。通过使用默认安装的CA证书捆绑包,尝试确保所有SSL连接的安全。这会使所有被视为“不安全”的连接失败,除非使用-k,–unsecure。
有关更多详细信息,请参阅此联机资源:http://curl.haxx.se/docs/sslcerts.html

-K, --config < config file>
指定从哪个配置文件读取curl参数。配置文件是一个文本文件,可以在其中写入命令行参数,然后将使用这些参数,就像它们是在实际的命令行上写入的一样。必须在同一配置文件行上指定选项及其参数,并用空格、冒号、等号或其任意组合分隔(但是,首选分隔符为等号)。如果参数包含空格,则必须将参数括在引号内。在双引号中,以下转义序列可用:\ \、\”、\t、\n、\r和\v。忽略任何其他字母前面的反斜杠。如果配置行的第一列是“\”字符,则该行的其余部分将被视为注释。在配置文件中,每一物理行只写一个选项。

将文件名指定为-K,–config为“-”,使curl从stdin读取文件。

请注意,为了能够在配置文件中指定URL,您需要使用–URL选项来指定它,而不是简单地在自己的行中写入URL。因此,它看起来可能类似于:

          url = "http://curl.haxx.se/docs/"

可以选择在配置文件中给出长选项名称,而不使用初始双破折号。
当调用curl时,它总是(除非使用了-q)检查默认配置文件,并在找到时使用它。默认配置文件将在以下文件中进行检查。
按此顺序排列:
(1) curl试图找到“home dir”:它首先检查curl_home,然后检查home环境变量。如果做不到这一点,它将在类UNIX系统上使用getpwuid()(这将返回系统中当前用户的home dir)。在Windows上,它然后检查APPDATA变量,或者作为最后手段检查“%USERPROFILE%\Application Data”。

(2)在windows上,如果home目录中没有_curlrc文件,它会在放置curl可执行文件的同一目录中检查一个文件。在类似UNIX的系统上,它将尝试从确定的主目录加载.curlrc。

          # --- Example file ---
          # this is a comment
          url = "curl.haxx.se"
          output = "curlhere.html"
          user-agent = "superagent/1.0"

          # and fetch another URL too
          url = "curl.haxx.se/docs/manpage.html"
          -O
          referer = "http://nowhereatall.com/"
          # --- End of example file ---

此选项可多次用于加载多个配置文件。

–keepalive-time < seconds>
此选项设置发送keepalive探测之前连接需要保持空闲的时间以及各个keepalive探测之间的时间。它目前在提供TCP_KEEPIDLE和TCP_KEEPINTVL套接字选项(指Linux、最新的AIX、HP-UX等)的操作系统上有效。如果使用–nokeepalive,则此选项无效。
如果多次使用此选项,将使用最后一个选项。如果未指定,该选项默认为60秒。

–key
(SSL/SSH)私钥文件名。允许您在此单独的文件中提供私钥。对于SSH,如果未指定,curl将按顺序尝试以下候选项: ‘~/.ssh/id_rsa’, ‘~/.ssh/id_dsa’, ‘./id_rsa’, ‘./id_dsa’.

如果多次使用此选项,将使用最后一个选项。

–key-type
(SSL)私钥文件类型。指定您的–key提供的私钥的类型。支持DER、PEM和ENG。如果未指定,则假定为PEM。

如果多次使用此选项,将使用最后一个选项。

–krb < level>
(FTP)启用Kerberos身份验证和使用。必须输入该级别,并且该级别应为“清晰”、“安全”、“机密”或“私人”级别之一。如果您使用的级别不是这些级别之一,则将使用“private”。
此选项需要使用kerberos4或GSSAPI(GSS)支持构建库。这并不常见。使用-V,-version查看curl是否支持它。

如果多次使用此选项,将使用最后一个选项。

-l, --list-only
(FTP)列出FTP目录时,此开关强制使用仅限名称的视图。如果您想对FTP目录的内容进行机器解析,这尤其有用,因为普通目录视图不使用标准外观或格式。

此选项导致发送FTP NLST命令。一些FTP服务器在响应NLST时只列出文件;它们不包括子目录和符号链接。

-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将使用相同的未修改方法重新发送以下请求。

–libcurl < file>
将此选项附加到任何普通的curl命令行,您将获得一个libcurl,它使用C源代码编写到文件中,执行与命令行操作相同的操作!
如果多次使用此选项,将使用最后给定的文件名。(在7.16.1中添加)

–limit-rate < speed>

指定要使用的最大传输速率。如果您的管道有限,并且希望传输不占用整个带宽,则此功能非常有用。

给定的速度以字节/秒为单位,除非附加后缀。加上“k”或“k”将把数字计算为千字节,“m”或“m”表示兆字节,“g”或“g”表示千兆字节。示例:200K、3m和1G。

给定速率是整个传输过程中计算的平均速度。这意味着旋度可能在短脉冲中使用更高的传输速度,但随着时间的推移,它使用的传输速度不会超过给定的速率。

如果您还使用-Y,-speed limit选项,则该选项将优先,并可能略微削弱速率限制,以帮助保持限速逻辑工作。
如果多次使用此选项,将使用最后一个选项。

–local-port < num>[-num]
设置用于连接的首选本地端口号或范围。请注意,端口号本质上是一种稀缺资源,有时会很忙,因此将此范围设置得太窄可能会导致不必要的连接设置失败。

–location-trusted
(HTTP/HTTPS)类似于-L,–location,但将允许向站点可能重定向到的所有主机发送名称+密码。如果站点将您重定向到要向其发送身份验证信息的站点(在HTTP基本身份验证的情况下为明文),则这可能会或可能不会导致安全漏洞。

-m, --max-time < seconds>
允许整个操作进行的最长时间(秒)。这有助于防止批处理作业因网络或链接运行缓慢而挂起数小时。另请参见–connect timeout选项。
如果多次使用此选项,将使用最后一个选项。

–mail-auth < address>
(SMTP)指定一个地址。这将用于指定正在中继到另一台服务器的已提交邮件的身份验证地址(标识)。

–mail-from < address>
(SMTP)指定一个发送给定邮件的地址。

–max-filesize < bytes>
指定要下载的文件的最大大小(以字节为单位)。如果请求的文件大于此值,传输将不会开始,curl将返回退出代码63。
注意:文件大小在下载之前并不总是已知的,对于此类文件,即使文件传输最终超过此给定限制,此选项也无效。这涉及FTP和HTTP传输。

–mail-rcpt < address>
(SMTP)指定给定邮件应发送到的单个地址。此选项可多次用于指定多个收件人。

–max-redirs < num>

设置允许的最大重定向次数。如果使用-L,–location,则可以使用此选项防止curl“荒谬地”跟随重定向。
默认情况下,限制设置为50个重定向。将此选项设置为-1以使其无限。
如果多次使用此选项,将使用最后一个选项。

–metalink

此选项可以告诉curl将给定的URI作为Metalink文件进行解析和处理(支持版本3和版本4(RFC 5854))并在出现错误(例如文件或服务器不可用)时使用中列出的镜像进行故障切换。下载完成后,它还将验证文件的哈希值。Metalink文件本身在内存中下载和处理,而不是存储在本地文件系统中。
使用远程Metalink文件的示例:

          curl --metalink http://www.example.com/example.metalink

要在本地文件系统中使用Metalink文件,请使用文件协议(file://):

          curl --metalink file://example.metalink

请注意,如果禁用了文件协议,则在撰写本文时无法使用本地Metalink文件。还要注意,如果–metalink和–include一起使用,则会忽略–include。这是因为在响应中包含头将破坏Metalink解析器,如果头包含在Metalink文件中描述的文件中,则哈希检查将失败。

-n, --netrc

使curl扫描用户主目录中的.netrc(\u netrc on Windows)文件以查找登录名和密码。这通常用于UNIX上的FTP。如果与HTTP一起使用,curl将启用用户身份验证。有关文件格式的详细信息,请参阅netrc(4)或ftp(1)。如果该文件没有正确的权限,Curl不会抱怨(它不应该是世界或组可读的)。环境变量“HOME”用于查找主目录。
关于如何设置.netrc以允许curl使用用户名“我自己”和密码“secret”通过FTP发送到machine host.domain.com的一个快速且非常简单的示例应类似于:machine host.domain.com login my password secret

-N, --no-buffer

禁用输出流的缓冲。在正常工作情况下,curl将使用标准的缓冲输出流,其效果是它将以块的形式输出数据,而不一定是在数据到达时。使用此选项将禁用该缓冲。
请注意,这是记录的否定选项名称。因此,您可以使用–buffer来强制执行缓冲。
–netrc-file

此选项类似于–netrc,只是提供了Curl应该使用的netrc文件的路径(绝对路径或相对路径)。每次调用只能指定一个netrc文件。如果提供了多个–netrc文件选项,则只使用最后一个选项。
此选项将覆盖对–netrc的任何使用,因为它们是互斥的。如果指定,它还将遵循–netrc可选。

–netrc-optional
与–netrc非常相似,但此选项使.netrc的使用成为可选的,而不像–netrc选项那样是强制性的。

–negotiate
(HTTP)启用GSS协商身份验证。GSS协商方法由Microsoft设计,并在其web应用程序中使用。它主要用于支持Kerberos5身份验证,但也可与其他身份验证方法一起使用。有关更多信息,请参阅IETF草案draft-brezak-spnego-http-04.txt。

如果要为代理身份验证启用协商,请使用–proxy Negotiate。
此选项需要使用GSSAPI支持构建的库。这并不常见。使用-V,-version查看您的版本是否支持GSS协商。
使用此选项时,还必须提供一个假-u,-user选项以正确激活身份验证代码。发送“-u:”就足够了,因为实际上没有使用-u选项中的用户名和密码。
如果多次使用此选项,则仅使用第一个选项。
–no-keepalive
在TCP连接上禁用keepalive消息的使用,因为默认情况下curl会启用它们。

请注意,这是记录的否定选项名称。因此,可以使用–keepalive强制执行keepalive。

–no-sessionid
(SSL)禁用curl对SSL会话ID缓存的使用。默认情况下,所有传输都使用缓存完成。请注意,尽管尝试重用SSL会话ID不会损害任何东西,但在野外似乎存在损坏的SSL实现,可能需要您禁用它才能成功。
此选项类似于–netrc,只是提供了Curl应该使用的netrc文件的路径(绝对路径或相对路径)。每次调用只能指定一个netrc文件。如果提供了多个–netrc文件选项,则只使用最后一个选项。
此选项将覆盖对–netrc的任何使用,因为它们是互斥的。如果指定,它还将遵循–netrc可选。

请注意,这是记录的否定选项名称。因此,可以使用–sessionid强制执行会话ID缓存。

–noproxy < no-proxy-list>
不使用代理(如果指定了代理)的主机的逗号分隔列表。唯一的通配符是一个*字符,它匹配所有主机,并有效地禁用代理。此列表中的每个名称都匹配为包含主机名的域或主机名本身。例如,local.com将匹配local.com、local.com:80和www.local.com,但不匹配www.notlocal.com。

–ntlm (HTTP)
启用NTLM身份验证。NTLM身份验证方法由Microsoft设计,并由IIS web服务器使用。它是一个专有协议,由聪明的人逆向设计,并根据他们的努力在curl中实现。这种行为不应该被认可,您应该鼓励所有使用NTLM的人转而使用公共的、有文档记录的身份验证方法,比如Digest。

如果要为代理身份验证启用NTLM,请使用–proxy NTLM。

此选项需要使用SSL支持构建的库。使用-V,-version查看curl是否支持NTLM。

如果多次使用此选项,则仅使用第一个选项。

-o, --output < file>
将输出写入而不是标准输出。如果使用{}或[]获取多个文档,则可以在说明符中使用“#”后跟数字。该变量将替换为正在获取的URL的当前字符串。例如:

          	curl http://{one,two}.site.com -o "file_#1.txt"

或者使用以下几个变量:

            curl http://{site,host}.host[1-5].com -o "#1_#2"

您可以使用此选项的次数与您拥有的URL数量相同。

另请参见–create dirs选项以动态创建本地目录。将输出指定为“-”(单破折号)将强制输出到标准输出。

-O, --remote-name
将输出写入名为的本地文件,就像我们得到的远程文件一样。(仅使用远程文件的文件部分,路径被切断。)

用于保存的远程文件名是从给定的URL提取的,而不是从其他URL提取的。

因此,该文件将保存在当前工作目录中。如果要将文件保存在其他目录中,请确保在使用-O,-remote name标志调用curl之前更改当前工作目录!

您可以使用此选项的次数与您拥有的URL数量相同。

-p, --proxytunnel
当使用HTTP代理(-x,–proxy)时,此选项将导致非HTTP协议尝试通过代理进行隧道传输,而不仅仅是使用代理执行类似HTTP的操作。隧道方法是通过HTTP代理连接请求实现的,要求代理允许直接连接到curl希望通过隧道连接到的远程端口号。

-P, --ftp-port


(FTP)在连接FTP时反转默认的启动器/侦听器角色。此开关使curl使用活动模式。实际上,curl会告诉服务器连接回客户机指定的地址和端口,而被动模式会要求服务器设置一个IP地址和端口,以便连接<地址>应为以下地址之一:

          interface
                 i.e “eth0”指定要使用的接口IP地址(仅限Unix)

          IP address
                 i.e “192.168.10.1”来指定确切的IP地址

          host name
                 i.e “my.host.domain”来指定计算机

          -     使curl选择已用于控制连接的相同IP地址

如果多次使用此选项,将使用最后一个选项。使用–ftp pasv禁用端口的使用。通过使用–Disable EPRT禁用尝试使用EPRT命令而不是PORT。EPRT实际上是端口++。

从7.19.5开始,您可以在地址右侧附加“:[start]-[end]”,告诉curl要使用的TCP端口范围。这意味着您要指定一个端口范围,从一个较小的数字到一个较大的数字。单个数字也可以,但请注意,由于端口可能不可用,因此会增加故障风险。

–pass < phrase>
(SSL/SSH)私钥的密码短语

如果多次使用此选项,将使用最后一个选项。

–post301
(HTTP)告诉curl遵守RFC 2616/10.3.2,在执行301重定向时不要将POST请求转换为GET请求。非RFC行为在web浏览器中无处不在,因此curl默认情况下会进行转换以保持一致性。但是,服务器可能需要一个POST在这样的重定向之后保持POST。
此选项仅在使用-L,-location(在7.17.1中添加)时才有意义

–post302
(HTTP)告诉curl遵守RFC2616/10.3.2,在执行302重定向时不要将POST请求转换为GET请求。非RFC行为在web浏览器中无处不在,因此curl默认情况下会进行转换以保持一致性。但是,服务器可能需要一个POST在这样的重定向之后保持POST。
此选项仅在使用-L,-location(在7.19.1中添加)时才有意义

–post303
(HTTP)告诉curl遵守RFC 2616/10.3.2,在执行303重定向时不要将POST请求转换为GET请求。非RFC行为在web浏览器中无处不在,因此curl默认情况下会进行转换以保持一致性。但是,服务器可能需要一个POST在这样的重定向之后保持POST。
此选项仅在使用-L,–location(在7.26.0中添加)时才有意义

–proto < protocols>
告诉curl使用列出的协议进行初始检索。协议从左到右求值,以逗号分隔,每个协议都是一个协议名或“all”,可选地以零个或多个修饰符作为前缀。可用的修改器有:

          + 除了已允许的协议之外,还允许此协议(如果未使用修改器,则为默认值)。

          -  拒绝此协议,将其从已允许的协议列表中删除。

          =  仅允许此协议(忽略已允许的列表),但稍后将通过逗号分隔列表中的后续条目进行修改。

例如:

		  --proto -ftps  
		  				 使用默认协议,但禁用ftps

          --proto -all,https,+http
                         仅启用http和https

          --proto =http,https
                         还仅启用http://www.google.com/sea….tin round+rock+texas

未知协议会产生警告。这使得脚本能够安全地依赖于禁用潜在危险的协议,而不依赖于对构建在curl中的协议的支持来避免错误。

此选项可以多次使用,在这种情况下,效果与将协议连接到选项的一个实例中相同。

–proto-redir < protocols>
告诉curl在重定向后使用列出的协议。有关协议的表示方式,请参见–proto。

–proxy-anyauth
告诉curl在与给定代理通信时选择合适的身份验证方法。这可能会导致额外的请求/响应往返。

–proxy-basic
告诉curl在与给定代理通信时使用HTTP基本身份验证。使用–basic在远程主机上启用HTTP basic。Basic是curl用于代理的默认身份验证方法。

–proxy-digest
告诉curl在与给定代理通信时使用HTTP摘要身份验证。使用–digest启用远程主机的HTTP摘要。

–proxy-negotiate
告诉curl在与给定代理通信时使用HTTP协商身份验证。使用–negotiate启用与远程主机的HTTP协商。

–proxy-ntlm
告诉curl在与给定代理通信时使用HTTP NTLM身份验证。使用–ntlm启用远程主机的ntlm。

–proxy1.0 <proxyhost[:port]>
告诉curl在与给定代理通信时使用HTTP NTLM身份验证。使用–ntlm启用远程主机的ntlm。

此选项与HTTP代理选项(-x,–proxy)之间的唯一区别在于,尝试通过代理使用CONNECT将指定HTTP 1.0协议,而不是默认的HTTP 1.1。

–pubkey < key>
(SSH)公钥文件名。允许您在此单独的文件中提供公钥。
如果多次使用此选项,将使用最后一个选项。
(从7.39.0开始,curl尝试从私钥文件自动提取公钥,因此通常不需要传递此选项。请注意,此公钥提取要求libcurl链接到libssh2 1.2.8或更高版本的副本,该副本本身链接到OpenSSL。)

-q
如果用作命令行上的第一个参数,则不会读取和使用curlrc配置文件。有关默认配置文件搜索路径的详细信息,请参阅-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样式,以嵌入空格或特殊字符。以下是所有受支持的SFTP quote命令的列表:

          chgrp group file
                 chgrp命令将文件操作数指定的文件的组ID设置为组操作数指定的组ID。组操作数是十进制数
                 integer group ID.

          chmod mode file
                chmod命令修改指定文件的文件模式位。模式操作数是一个八进制整数模式数。

          chown user file
               chown命令将由文件操作数命名的文件的所有者设置为用户操作数指定的用户ID。用户操作数是十进制整数
                 user ID.

          ln source_file target_file
                 ln和symlink命令在指向源文件位置的目标文件位置创建符号链接。

          mkdir directory_name
                 mkdir命令创建由directory\u name操作数命名的目录。
                 
          pwd    
          		 pwd命令返回当前工作目录的绝对路径名。
          		 
          rename source target
                 rename命令将源操作数命名的文件或目录重命名为目标操作数命名的目标路径。

          rm file
                 rm命令删除由文件操作数指定的文件。

          rmdir directory
                 rmdir命令删除由目录操作数指定的目录项,前提是该目录项为空。

          symlink source_file target_file
                 见ln。

-r, --range
(HTTP/FTP/SFTP/FILE)从HTTP/1.1、FTP或SFTP服务器或本地文件检索字节范围(即部分文档)。可以通过多种方式指定范围。

          0-499     指定前500个字节

          500-999   指定第二个500字节

          -500      指定最后500个字节

          9500-     指定偏移量9500和向前的字节数

          0-0,-1    仅指定第一个和最后一个字节(*)(H)

          500-700,600-799
                    从偏移量500(H)指定300字节

          100-199,500-599
                    指定两个单独的100字节范围(*)(H)

   		 (*)=请注意,这将导致服务器以多部分响应进行响应!

“开始-停止”范围语法的“开始”和“停止”字段中只有数字字符(0-9)有效。如果在该范围内指定了非数字字符,则服务器的响应将不指定,具体取决于服务器的配置。

您还应该知道,许多HTTP/1.1服务器没有启用此功能,因此当您尝试获取一个范围时,您将获取整个文档。

FTP和SFTP范围下载仅支持简单的“开始-停止”语法(可选省略其中一个数字)。FTP的使用取决于扩展FTP命令的大小。
如果多次使用此选项,将使用最后一个选项。

-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/主机替代方案。端口号应为主机将用于的特定协议的编号。这意味着,如果要为同一主机但不同的端口提供地址,则需要多个条目。

此选项可多次用于添加许多要解析的主机名。

–retry < num>

如果在curl尝试执行传输时返回一个暂时性错误,它将在放弃之前重试此次数。将数字设置为0将使curl不重试(这是默认值)。瞬时错误表示超时、FTP 4xx响应代码或HTTP 5xx响应代码。
当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
静默或安静模式。不显示进度表或错误消息。使卷曲静音。

-S, --show-error
当与-s一起使用时,如果失败,它会使curl显示错误消息。

–ssl (FTP, POP3, IMAP, SMTP)
尝试使用SSL/TLS进行连接。如果服务器不支持SSL/TLS,则恢复为非安全连接。有关所需的不同加密级别,请参见–ftp ssl控制和–ssl请求。(在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安全性,使用此标志您将要求完全解除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-basic
告诉curl在连接到SOCKS5代理时使用用户名/密码身份验证。默认情况下启用用户名/密码身份验证。使用–socks5 gssapi强制GSS-API对socks5代理进行身份验证。(在7.55.0中添加)

–socks5-gssapi
告诉curl在连接到SOCKS5代理时使用GSS-API身份验证。默认情况下启用GSS-API身份验证(如果使用GSS-API支持编译curl)。使用–socks5 basic强制对socks5代理进行用户名/密码验证。(在7.55.0中添加)

–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
socks服务器的默认服务名称为rcmd/server fqdn。此选项允许您更改它。

示例:–socks5代理名称–socks5 gssapi服务sockd将使用sockd/代理名称–socks5代理名称–socks5 gssapi服务sockd/真实名称将在代理名称与主体名称不匹配的情况下使用sockd/真实名称。(在7.19.4中添加)。

–socks5-gssapi-nec
作为gssapi协商的一部分,协商保护模式。RFC 1961在第4.3/4.4节中说,它应该受到保护,但NEC参考实施没有。选项–socks5 gssapi nec允许保护模式协商的无保护交换。(在7.19.4中添加)。

–stderr
将对stderr的所有写入重定向到指定的文件。如果文件名是普通的“-”,则改为写入标准输出。
如果多次使用此选项,将使用最后一个选项。

-t, --telnet-option <OPT=val>
将选项传递给telnet协议。支持的选项包括:

          TTYPE=<term> Sets the terminal type.

          XDISPLOC=<X display> Sets the X display location.

          NEW_ENV=<var,val> Sets an environment variable.

-T, --upload-file

这会将指定的本地文件传输到远程URL。如果指定的URL中没有文件部分,Curl将附加本地文件名。请注意,您必须在最后一个目录上使用尾随/来向Curl证明没有文件名,否则Curl会认为您的最后一个目录名是要使用的远程文件名。这很可能会导致上载操作失败。如果在HTTP(S)服务器上使用此命令,则将使用PUT命令。
使用文件名“-”(单破折号)来使用stdin而不是给定的文件。或者,可以指定文件名“.”(单个句点)而不是“-”,以便在非阻塞模式下使用stdin,以便在上载stdin时读取服务器输出。
您可以在命令行上为每个URL指定一个-T。每个-T+URL对指定要上载的内容和上载到哪里。curl还支持-T参数的“globbing”,这意味着您可以使用URL中支持的相同URL globbing样式将多个文件上载到单个URL,如下所示:

          curl -T "{file1,file2}" http://www.uploadtothissite.com

          curl -T "img[1-1000].png" ftp://ftp.picturemania.com/upload/

–tcp-nodelay
启用TCP_节点延迟选项。有关此选项的详细信息,请参阅curl_easy_setopt(3)手册页。(在7.11.2中添加)

–tftp-blksize < value>
(TFTP)设置TFTP BLKSIZE选项(必须大于512)。这是curl在向TFTP服务器传输数据或从TFTP服务器传输数据时尝试使用的块大小。默认情况下,将使用512字节。

如果多次使用此选项,将使用最后一个选项。

–tlsauthtype < authtype>
设置TLS身份验证类型。目前,唯一受支持的选项是TLS-SRP(RFC 5054)的“SRP”。如果指定了–tlsuser和–tlspassword,但未指定–tlsauthtype,则此选项默认为“SRP”。此选项仅在底层libcurl使用TLS-SRP支持构建时有效,而TLS-SRP支持需要OpenSSL或GnuTLS支持TLS-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中添加)

   --tlsv1.3
         (SSL)强制curl在与远程TLS服务器协商时使用TLS版本1.3。(在7.52.0中添加)

   --tls-max <VERSION>
         (SSL)版本定义了支持的最大TLS版本。最低可接受版本由tlsv1.0、tlsv1.1、tlsv1.2或tlsv1.3设定。

          default
                 最多使用推荐的TLS版本。

          1.0    最多使用TLSv1.0。

          1.1    最多使用TLSv1.1。

          1.2    最多使用TLSv1.2。

          1.3    最多使用TLSv1.3。

另请参见–tlsv1.0和–tlsv1.1和–tlsv1.2和–tlsv1.3。在7.54.0中添加。

–tr-encoding
(HTTP)使用curl支持的算法之一请求压缩传输编码响应,并在接收数据时解压缩数据。

–trace < file>

启用对给定输出文件的所有传入和传出数据(包括描述性信息)的完整跟踪转储。使用“-”作为文件名将输出发送到标准输出。此选项覆盖以前使用的-v、-verbose或-trace ascii。

如果多次使用此选项,将使用最后一个选项。

–trace-ascii < file>
启用对给定输出文件的所有传入和传出数据(包括描述性信息)的完整跟踪转储。使用“-”作为文件名将输出发送到标准输出。

这与–trace非常相似,但省略了十六进制部分,只显示转储的ASCII部分。它使输出更小,对于未经训练的人来说可能更容易阅读。此选项覆盖以前使用的-v、-verbose或-trace。

如果多次使用此选项,将使用最后一个选项。

–trace-time
为curl显示的每个跟踪或详细行预先添加时间戳。(在7.14.0中添加)

–unix-socket < path>
(HTTP)通过此UNIX域套接字连接,而不是使用网络。(在7.40.0中添加)

-u, --user < user:password>
指定用于服务器身份验证的用户名和密码。重写-n、-netrc和–netrc可选。
如果只输入用户名(不输入冒号),curl将提示输入密码。
如果使用启用SSPI的curl二进制文件并执行NTLM身份验证,则可以通过使用以下选项指定单个冒号来强制curl从环境中获取用户名和密码:“-u:”。
如果多次使用此选项,将使用最后一个选项。

-U, --proxy-user < user:password>
指定用于代理身份验证的用户名和密码。
如果使用启用SSPI的curl二进制文件并执行NTLM身份验证,则可以通过使用以下选项指定单个冒号来强制curl从环境中获取用户名和密码:“-U:”。
如果多次使用此选项,将使用最后一个选项。

–url < URL>
指定要获取的URL。当您希望在配置文件中指定URL时,此选项非常方便。
此选项可以使用任意次数。要控制此URL的写入位置,请使用-o,–output或-o,–remote-name选项。

-v, --verbose
使抓取更加冗长。主要用于调试。以“>”开头的行表示curl发送的“头数据”;“<”表示curl接收的在正常情况下隐藏的“头数据”;以“*”开头的行表示curl提供的附加信息。请注意,如果您只希望在输出中使用HTTP头,-i,-include可能是您要寻找的选项。
如果你认为这个选项仍然不能给你足够的细节,考虑使用-Trace/TraceAsCII。
此选项覆盖以前使用的–trace ascii或–trace。

-w, --write-out
定义操作完成并成功后在标准输出上显示的内容。格式是一个字符串,可以包含纯文本和任意数量的变量。
字符串可以指定为“string”,要从特定文件中读取,请将其指定为“@filename”,并告诉curl从stdin中读取格式,然后写入“@-”。

输出格式中的变量将被curl认为合适的值或文本替换,如下所述。所有变量都指定为%{vari‐able_name},要输出一个正常的%值,只需将它们写为%%。可以使用换行符\n、回车符\r和制表符\t输出换行符。

注意:%-符号是win32环境中的一个特殊符号,在使用此选项时,所有出现的%必须加倍。

          可用变量包括:

          content_type   请求文档的内容类型(如果有)。
          
          filename_effective
                        curl写入的最终文件名。
                        只有当curl被告知使用--remote name或--output选项写入文件时,这才有意义。它与--remote header name选项结合使用最为有用。(在7.25.1中添加)
                        
          ftp_entry_path 登录到远程FTP服务器时,初始路径为。(在7.15.4中添加)

          http_code      在上次检索的HTTP或FTP传输中找到的数字响应代码。在7.18.2中,添加了别名响应代码以显示相同的信息。
          
          http_connect   在对curl CONNECT请求的最后一次响应(来自代理)中找到的数字代码。(在7.12.4中添加)

          local_ip       最近完成的连接的本地端的IP地址-可以是IPv4或IPv6(在7.29.0中添加)

          local_port     最近完成的连接的本地端口号(在7.29.0中添加)

          num_connects   最近传输中进行的新连接数。(在7.12.3中添加)

          num_redirects  请求中遵循的重定向数。(在7.12.3中添加)

          redirect_url   当HTTP请求在没有-L的情况下发出以遵循重定向时,此变量将显示重定向将带您到的实际URL。(在7.18.2中添加)

          remote_ip      最近完成的连接的远程IP地址-可以是IPv4或IPv6(在7.29.0中添加)

          remote_port    最近完成的连接的远程端口号(在7.29.0中添加)

          size_download  下载的总字节数。

          size_header    下载的标头的总字节数。

          size_request   HTTP请求中发送的字节总数。

          size_upload    上载的总字节数。

          speed_download 为完整下载测量的平均下载速度。每秒字节数。
          
          speed_upload  为完整上载测量的平均上载速度。每秒字节数。

          ssl_verify_result 请求的SSL对等证书验证的结果。0表示验证成功。(在7.19.0中添加)

          time_appconnect 从启动到完成与远程主机的SSL/SSH/etc连接/握手所用的时间(以秒为单位)。(在7.19.0中添加)

          time_connect   从开始到完成与远程主机(或代理)的TCP连接所用的时间(以秒为单位)。

          time_namelookup  从开始到名称解析完成所用的时间(以秒为单位)。

          time_pretransfer  从开始到文件传输即将开始所用的时间(以秒为单位)。这包括特定于所涉及的特定协议的所有传输前命令和协商。

          time_redirect   在启动最终事务之前,所有重定向步骤(包括名称查找、连接、预传输和传输)所用的时间(以秒为单位)。time_redirect显示多个重定向的完整执行时间。(在7.12.3中添加)

          time_starttransfer  从开始到第一个字节即将传输所用的时间(以秒为单位)。这包括预传输时间以及服务器计算结果所需的时间。

          time_total     完整操作持续的总时间(秒)。时间将以毫秒分辨率显示。

          url_effective  上次获取的URL。如果您告诉curl遵循location:headers,那么这是最有意义的。

如果多次使用此选项,将使用最后一个选项。

-x, --proxy <[protocol://][user:password@]proxyhost[:port]>
使用指定的HTTP代理。如果未指定端口号,则假定端口号为1080。
此选项将覆盖将代理设置为使用的现有环境变量。如果有环境变量设置代理,则可以将代理设置为“”以覆盖它。

通过HTTP代理执行的所有操作都将透明地转换为HTTP。这意味着某些特定于协议的操作可能不可用。如果您可以通过代理进行隧道传输(如使用-p、-proxytunnel选项),则情况并非如此。
代理字符串中可能提供的用户和密码由curl进行URL解码。这允许您使用%40传入特殊字符,如@,或使用%3a传入冒号。
可以使用与代理环境变量完全相同的方式指定代理主机,包括协议前缀(http://)和嵌入式用户+密码。

从7.21.7开始,可以使用protocol://前缀指定代理字符串,以指定替代代理协议。使用socks4://、socks4a://、socks5://或socks5h://请求使用特定的SOCKS版本。未指定协议,http://和所有其他协议将被视为http代理。
如果多次使用此选项,将使用最后一个选项。

-X, --request < command>

(HTTP)指定与HTTP服务器通信时要使用的自定义请求方法。将使用指定的请求,而不是使用其他方法(默认为GET)。有关详细信息和解释,请阅读HTTP 1.1规范。常见的附加HTTP请求包括PUT和DELETE,但WebDAV等相关技术提供了PROPFIND、COPY、MOVE等功能。
通常你不需要这个选项。各种GET、HEAD、POST和PUT请求都是通过使用专用的命令行选项来调用的。

此选项仅更改HTTP请求中使用的实际单词,不会改变curl的行为方式。因此,例如,如果您想要发出正确的HEAD请求,那么使用-X HEAD将是不够的。您需要使用-I,–head选项。
(FTP)指定使用FTP执行文件列表时要使用的自定义FTP命令,而不是列表。
如果多次使用此选项,将使用最后一个选项。

–xattr
将输出保存到文件时,此选项告诉curl将某些文件元数据存储在扩展文件属性中。目前,URL存储在xdg.origin.URL属性中,对于HTTP,内容类型存储在mime_type属性中。如果文件系统不支持扩展属性,将发出警告。

-y, --speed-time < time>

如果在速度时间段内下载速度低于每秒速度限制字节数,则下载将中止。如果使用速度时间,默认速度限制将为1,除非使用-Y设置。
此选项控制传输,因此不会影响慢速连接等。如果您担心此问题,请尝试–connect timeout选项。
如果多次使用此选项,将使用最后一个选项。

-Y, --speed-limit < speed>
如果下载速度低于此给定速度(以字节/秒为单位)达数秒,则会中止下载。速度时间设置为-y,如果未设置,则为30。
如果多次使用此选项,将使用最后一个选项。

-z, --time-cond < date expression>|

(HTTP/FTP)请求在给定时间和日期之后修改的文件,或在该时间之前修改的文件。可以是各种日期字符串,或者如果它与任何内部字符串不匹配,则将其作为文件名,并尝试从获取修改日期(mtime)。

以破折号(-)开始日期表达式,使其请求比给定日期/时间早的文档,默认为比指定日期/时间新的文档。
如果多次使用此选项,将使用最后一个选项。

-h, --help
使用帮助。

-M, --manual
手册显示巨大的帮助文本。

-V, --version
显示有关curl及其使用的libcurl版本的信息。
第一行包括curl、libcurl和其他与可执行文件链接的第三方库的完整版本。
第二行(以“Protocols:”开头)显示libcurl报告要支持的所有协议。
第三行(以“Features:”开头)显示libcurl报告要提供的特定功能。可用功能包括:

          IPv6   您可以将IPv6与此一起使用。
          
          krb4   支持FTP的Krb4。

          SSL    支持HTTPS和FTP。

          libz   支持通过HTTP自动解压缩压缩文件。

          NTLM   支持NTLM身份验证。

          GSS-Negotiate   支持FTP协商身份验证和krb5。

          Debug  这个curl使用一个用Debug构建的libcurl。这只为curl开发人员提供了更多的错误跟踪和内存调试等功能!

          AsynchDNS   此curl使用异步名称解析。

          SPNEGO 支持SPNEGO协商身份验证。

          Largefile   此curl支持传输大文件,即大于2GB的文件。

          IDN   此curl支持IDN-国际域名。
          
          SSPI   支持SSPI。如果使用NTLM并设置空用户名,curl将使用当前用户和密码进行身份验证。

          TLS-SRP   TLS支持SRP(安全远程密码)身份验证。

          Metalink   此curl支持Metalink(版本3和版本4(RFC 5854)),后者描述镜像和散列。
         			 如果出现错误,curl将使用镜像进行故障转移(例如文件或服务器不可用)。

四、退出代码
在错误条件下可能会出现一系列不同的错误代码及其相应的错误消息。在撰写本文时,退出代码为:

   1      Unsupported protocol. 此curl版本不支持此协议。
   
   2      Failed to initialize.

   3      URL malformed. 语法不正确。

   4      A feature or option that was needed to perform the desired request was not enabled or was explicitly disabled at build-time. 要使curl能够做到这一点,您可能需要另一个libcurl版本!

   5      Couldn't resolve proxy. 无法解析给定的代理主机。

   6      Couldn't resolve host. 未解析给定的远程主机。

   7      Failed to connect to host.

   8      FTP weird server reply.服务器发送的数据无法解析。

   9      FTP access denied. 服务器拒绝登录或拒绝访问您要访问的特定资源或目录。大多数情况下,您试图更改到服务器上不存在的目录。

   11     FTP weird PASS reply. Curl无法分析发送到PASS请求的答复。

   13     FTP weird PASV reply, Curl无法分析发送到PASV请求的答复。

   14     FTP weird 227 format. Curl无法分析服务器发送的227行。

   15     FTP can't get host. 无法解析227行中的主机IP。

   17     FTP couldn't set binary. 无法将传输方法更改为二进制。

   18     Partial file. 仅传输了文件的一部分。

   19     FTP couldn't download/access the given file, the RETR (or similar) command failed.

   21     FTP quote error. quote命令从服务器返回错误。

   22     HTTP page not retrieved. 找不到请求的url或返回另一个错误,HTTP错误代码为400或更高。此返回码仅在使用-f,--fail时出现。
   23     Write error. Curl无法将数据写入本地文件系统或类似文件系统。

   25     FTP couldn't STOR file. 服务器拒绝了用于FTP上载的STOR操作。

   26     Read error. 各种阅读问题。

   27     Out of memory. 内存分配请求失败。
   
   28     Operation timeout. 已根据条件达到指定的超时时间。

   30     FTP PORT failed. 端口命令失败。并非所有FTP服务器都支持端口命令,请尝试使用PASV进行传输!

   31     FTP couldn't use REST. REST命令失败。此命令用于恢复FTP传输。

   33     HTTP range error. 范围“命令”不起作用。

   34     HTTP post error. 内部请求后生成错误。

   35     SSL connect error. SSL握手失败。

   36     FTP bad download resume. 无法继续先前中止的下载。

   37     FILE couldn't read file. 无法打开该文件。权限?

   38     LDAP cannot bind.LDAP绑定操作失败。

   39     LDAP search failed.

   41     Function not found. 找不到所需的LDAP函数。

   42     Aborted by callback. 一个应用程序告诉curl中止操作。

   43     Internal error. 使用错误的参数调用了函数。

   45     Interface error. 无法使用指定的传出接口。

   47     Too many redirects. 当执行重定向时,curl达到最大值。

   48     Unknown option specified to libcurl. 这表明您向curl传递了一个奇怪的选项,该选项被传递给libcurl并被拒绝。仔细阅读手册!

   49     Malformed telnet option.

   51     The peer's SSL certificate or SSH MD5 fingerprint was not OK.

   52     The server didn't reply anything, which here is considered an error.

   53     SSL crypto engine not found.

   54     Cannot set SSL crypto engine as default.

   55     Failed sending network data.

   56     Failure in receiving network data.

   58     Problem with the local certificate.

   59     Couldn't use specified SSL cipher.
   
   60     Peer certificate cannot be authenticated with known CA certificates.

   61     Unrecognized transfer encoding.

   62     Invalid LDAP URL.

   63     Maximum file size exceeded.

   64     Requested FTP SSL level failed.

   65     Sending the data requires a rewind that failed.

   66     Failed to initialise SSL Engine.

   67     The user name, password, or similar was not accepted and curl failed to log in.

   68     File not found on TFTP server.

   69     Permission problem on TFTP server.

   70     Out of disk space on TFTP server.

   71     Illegal TFTP operation.

   72     Unknown TFTP transfer ID.

   73     File already exists (TFTP).

   74     No such user (TFTP).

   75     Character conversion failed.

   76     Character conversion functions required.

   77     Problem with reading the SSL CA cert (path? access rights?).

   78     The resource referenced in the URL does not exist.

   79     An unspecified error occurred during the SSH session.

   80     Failed to shut down the SSL connection.

   82     Could not load CRL file, missing or wrong format (added in 7.19.0).

   83     Issuer check failed (added in 7.19.0).

   84     The FTP PRET command failed

   85     RTSP: mismatch of CSeq numbers
   
   86     RTSP: mismatch of Session Identifiers

   87     unable to parse FTP file list

   88     FTP chunk callback reported error

   XX     More error codes will appear here in future releases. The existing ones are meant to never change.

本文引自Linux手册

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值