cURL:一款神奇的 Linux 万金油工具详细使用教程

小助手读文章 00:00 / 00:00

温馨提示:
本文所述内容具有依赖性,可能因软硬条件不同而与预期有所差异,故请以实际为准,仅供参考。

什么叫万金油工具,那就是非常好用,不论是网页调试,还是文件传输,只要是网络相关的几乎都可以胜任!不信?那我们一起来看看。

工具介绍

cURL 是一个利用 URL 语法在命令行下工作的文件传输工具,支持文件上传和下载,所以是综合传输工具,但按传统,习惯称 cURL 为下载工具,cURL还包含了用于程序开发的 libcurl。

cURL 支持的通信协议有 FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP 和 RTSP,还支持 SSL 认证、HTTP POST、HTTP PUT、FTP 上传、HTTP form based upload、proxies、HTTP/2、cookies、用户名+密码认证(Basic / Plain / Digest / CRAM-MD5 / NTLM / Negotiate and Kerberos)、file transfer resume、proxy tunneling 等等。

常用参数

[root@fzun ~]# curl --help
Usage: curl [options...] <url>
Options: (H) means HTTP/HTTPS only, (F) means FTP only (H) 表示仅适用 HTTP/HTTPS ,(F) 表示仅适用于 FTP
 -A, --user-agent    STRING        User-Agent to send to server (H) 设置用户代理发送给服务器
 -b, --cookie    STRING/FILE        String or file to read cookies from (H)  设置 Cookie 字符串或文件读取位置
 -c, --cookie-jar    FILE        Write cookies to this file after operation (H) 操作结束后把 Cookie 写入到这个文件中
 -C, --continue-at    OFFSET        Resumed transfer offset 断点续转
 -D, --dump-header    FILE        Write the headers to this file  把 Header 信息写入到该文件中
 -e, --referer        Referer URL (H) 来源网址
 -f, --fail        Fail silently (no output at all) on HTTP errors (H) 连接失败时不显示 HTTP 错误
 -o, --output    FILE        Write output to <file> instead of stdout 把输出写到该文件中
 -O, --remote-name        Write output to a file named as the remote file 把输出写到该文件中,保留远程文件的文件名
 -r, --range    RANGE        Retrieve only the bytes within a range  检索来自 HTTP/1.1 或 FTP 服务器字节范围
 -s, --silent        Silent mode. Don't output anything 安静模式,不输出(回显)任何东西
 -T, --upload-file    FILE        Transfer FILE to destination 上传文件
 -u, --user    USER[:PASSWORD]        Server user and password 设置访问服务器的用户和密码
 -w, --write-out    FORMAT        What to output after completion 完成后输出什么
 -x, --proxy    [PROTOCOL://]HOST[:PORT]        Use proxy on given port 使用代理访问
 -#, --progress-bar        Display transfer progress as a progress bar 用进度条显示当前的传送状态
 -V, --version        Show version number and quit 显示版本号并退出
 -h, --help        This help text 显示帮助
 --url        URL        URL to work with 指定所使用的 URL
 -S, --show-error        Show error. With -s, make curl show errors when they occur 显示错误. 在选项 -s 中,当 curl 出现错误时将显示
 -I, --head        Show document info only 仅显示响应文档头

应用实例

网页相关

保存网页

[root@fzun ~]# curl https://vircloud.net >> vircloud.net.html
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   173  100   173    0     0    317      0 --:--:-- --:--:-- --:--:--   318

[root@fzun ~]# curl https://vircloud.net -o vircloud.net.html
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   173  100   173    0     0    317      0 --:--:-- --:--:-- --:--:--   318

查看响应码

[root@fzun ~]# curl -o /dev/null -s -w %{http_code} vircloud.net
400

查看错误信息

[root@fzun ~]# curl -f https://vircloud.net
curl: (22) The requested URL returned error: 400 Bad Request

查看响应头信息

[root@fzun ~]# curl -I https://vircloud.net
HTTP/1.1 200 OK
Date: Fri, 21 Jun 2019 03:17:22 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
X-Pingback: https://vircloud.net/action/xmlrpc
Set-Cookie: 1ace4129ed475fea40c32ab2c48ab0c2_armxmod_online=U5; path=/
Strict-Transport-Security: max-age=15552000; includeSubdomains; preload
X-Xss-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Server: vcloud
CF-Ray: Singapore-Aliyun

[root@fzun ~]# curl -D cookie.1 https://vircloud.net
......
[root@fzun ~]# cat cookie.1 
HTTP/1.1 200 OK
Date: Fri, 21 Jun 2019 06:49:42 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
X-Pingback: https://vircloud.net/action/xmlrpc
Set-Cookie: 1ace4129ed475fea40c32ab2c48ab0c2_armxmod_online=U13; path=/
Strict-Transport-Security: max-age=15552000; includeSubdomains; preload
X-Xss-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Server: vcloud
CF-Ray: Singapore-Aliyun

查看网页加载过程、响应码及耗时

[root@fzun ~]# curl -vso /dev/null -w "Connect: %{time_connect} \n TTFB: %{time_starttransfer} \n Total time: %{time_total} \n"  https://www.vircloud.net
* About to connect() to www.vircloud.net port 443 (#0)
*   Trying 1.0.0.1...
* Connected to www.vircloud.net (1.0.0.1) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* SSL connection using TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
* Server certificate:
*     subject: CN=*.vircloud.net
*     start date: Oct 24 00:00:00 2018 GMT
*     expire date: Oct 23 12:00:00 2020 GMT
*     common name: *.vircloud.net
*     issuer: CN=RapidSSL RSA CA 2018,OU=www.digicert.com,O=DigiCert Inc,C=US
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: www.vircloud.net
> Accept: */*
> 
< HTTP/1.1 400 Bad Request
< Date: Fri, 21 Jun 2019 02:54:45 GMT
< Content-Type: text/html; charset=utf-8
< Content-Length: 173
< Connection: close
< Server: vcloud
< 
{ [data not shown]
* Closing connection 0
 Connect: 1.607 
 TTFB: 2.083 
 Total time: 2.083 
完成传输后,在stdout上显示curl显示信息。格式是一个字符串,可能包含混有任意数量变量的纯文本。格式可以指定为文字“字符串”,或者您可以使用curl从带有“@filename”的文件中读取格式,并告诉curl从您编写“@ - ”的stdin读取格式。

输出格式中存在的变量将由curl认为合适的值或文本替换,如下所述。所有变量都指定为%{variable_name}并输出正常%,您只需将它们写为%%。您可以使用 n,带 r的回车符和带 t的制表符空格输出换行符。

输出将写入标准输出,但可以使用%{stderr}将其切换为标准错误。

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

可用的变量是:

content_type所请求文档的Content-Type,如果有的话。

filename_effective curl写出的最终文件名。只有在告知curl使用-O, - remote-name或-o, - output选项写入文件时,这才有意义。它与-J, - remote-header-name选项结合使用最为有用。(在7.26.0中添加)

ftp_entry_path登录到远程FTP服务器时,初始路径curl结束。(在7.15.4中添加)

http_code在上次检索的HTTP(S)或FTP(s)传输中找到的数字响应代码。在7.18.2中,添加了别名response_code以显示相同的信息。

http_connect在最后一个响应(从代理)到curl CONNECT请求中找到的数字代码。(在7.12.4中添加)

http_version有效使用的http版本。(在7.50.0中添加)

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

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

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

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

proxy_ssl_verify_result请求的HTTPS代理的SSL对等证书验证的结果。0表示验证成功。(在7.52.0中添加)

redirect_url当没有-L的HTTP请求, - 位置跟随重定向(或当满足--max-redir)时,此变量将显示重定向将进入的实际URL 。(在7.18.2中添加)

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

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

scheme有效使用的URL方案(有时称为协议)(在7.52.0中添加)

size_download已下载的总字节数。

size_header下载标头的总字节数。

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

size_upload已上载的总字节数。

speed_download完整下载所测量的卷曲平均下载速度。每秒字节数。

speed_upload针对完整上载测量的卷曲平均上传速度。每秒字节数。

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

stderr从这一点开始,-w, - write-out输出将被写入标准错误。(在7.63.0中添加)

stdout从这一点开始,-w, - write-out输出将被写入标准输出。这是默认设置,但可以在切换到stderr后用于切换回来。(在7.63.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_pretransfer以及服务器计算结果所需的时间。

time_total完整操作持续的总时间(以秒为单位)。

url_effective最后获取的URL。如果你告诉curl遵循location:headers,这是最有意义的。

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

指定 CDN 节点 IP 响应

[root@fzun ~]# curl -I -H 'Host: www.vircloud.net' https://1.0.0.1
HTTP/1.1 200 OK
Date: Fri, 21 Jun 2019 03:19:53 GMT
Content-Type: text/html
Content-Length: 8001
Connection: keep-alive
Vary: Accept-Encoding
Last-Modified: Thu, 09 May 2019 04:07:16 GMT
Vary: Accept-Encoding
ETag: "5cd3a774-1f41"
Strict-Transport-Security: max-age=15552000; includeSubdomains; preload
X-Xss-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Server: vcloud
Expires: Thu, 31 Dec 2037 23:55:55 GMT
Cache-Control: max-age=315360000
CF-Cache-Status: HIT
CF-Ray: LosAngeles-CloudCone
Accept-Ranges: bytes

文件相关

上传文件(FTP/WebDav 等)

[root@fzun ~]# curl -u 账号:密码 -T test.txt https://nanao.teracloud.jp/dav/test/  
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>201 Created</title>
</head><body>
<h1>Created</h1>
<p>Resource /dav/test/test.txt has been created.</p>
</body></html>

示例链接是真实存在的,参考《大容量、高速日本网盘 - TeraCLOUD》。

下载文件

单个文件
[root@fzun ~]# curl https://nanao.teracloud.jp/dav/test/test.txt -o test2.txt // 注: -o 以指定名保存
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 15157  100 15157    0     0  43046      0 --:--:-- --:--:-- --:--:-- 42937
多个文件名规律文件
[root@fzun ~]# curl https://nanao.teracloud.jp/dav/test/[1,2,3,4].txt -O   // 注:-O 大写,以远程文件名保存
[root@fzun ~]# curl -u 账号:密码 https://nanao.teracloud.jp/dav/{test,test2}/[1,2,3,4].txt -o #1_#2.txt  // 注:以 test_1.txt 格式保存,避免被覆盖
分块下载大文件
[root@fzun ~]# curl --range 0-200000000 https://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso -o CentOS-7-x86_64-Minimal-1810.iso.part1
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  190M  100  190M    0     0   961k      0  0:03:23  0:03:23 --:--:-- 1138k
[root@fzun ~]# curl --range 200000001-400000000 https://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso -o CentOS-7-x86_64-Minimal-1810.iso.part2
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  190M  100  190M    0     0   958k      0  0:03:23  0:03:23 --:--:--  889k
[root@fzun ~]# curl -r 400000001-600000000 https://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso -o CentOS-7-x86_64-Minimal-1810.iso.part3
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  190M  100  190M    0     0  1083k      0  0:03:00  0:03:00 --:--:-- 1154k
[root@fzun ~]# curl -r 600000001-800000000 https://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso -o CentOS-7-x86_64-Minimal-1810.iso.part4
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  190M  100  190M    0     0  7183k      0  0:00:27  0:00:27 --:--:-- 6764k
[root@fzun ~]# curl --range 800000001-1000000000 https://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso -o CentOS-7-x86_64-Minimal-1810.iso.part5
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  155M  100  155M    0     0  8401k      0  0:00:18  0:00:18 --:--:-- 8612k
[root@fzun ~]# cat CentOS-7-x86_64-Minimal-1810.iso.part? > CentOS-7-x86_64-Minimal-1810.iso
[root@fzun ~]# md5sum CentOS-7-x86_64-Minimal-1810.iso
bd43d41e01c2a46b3cb23eb9139dce4b  CentOS-7-x86_64-Minimal-1810.iso

本例中针对约 918M 的 CentOS Mini 版本按约 200M 进行分段下载(可能需要服务器支持),最后合并为一个完整的文件。

需要注意的是分段单位是字节(Bytes,1MB = 1024 KB = 1048576 B),每个分段前后不要重复或缺失字节,建议合并后用 md5sum 验证一个 MD5。

下载 FTP 文件
[root@fzun ~]# curl -O ftp://vircloud.net/web/web_ori.rar -u 账号:密码
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:06 --:--:--     0

[root@fzun ~]# curl -O ftp://账号:密码@vircloud.net/web/web_ori.rar
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:02 --:--:--     0

删除文件

[root@fzun ~]# curl https://nanao.teracloud.jp/dav/test/test.txt -X DELETE
//删除命令无回显

断点续传

[root@fzun ~]# curl https://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso -O
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  1  918M    1 16.7M    0     0  6571k      0  0:02:23  0:00:02  0:02:21 6571k^C
[root@fzun ~]# curl -C - https://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso -O 
** Resuming transfer from byte position 24444928
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  3  894M    3 33.4M    0     0  8467k      0  0:01:48  0:00:04  0:01:44 8466k^C

注意 -C 紧跟着的 -

进度条相关

显示进度条

[root@fzun ~]# curl -# --range 800000001-1000000000 https://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso -o CentOS-7-x86_64-Minimal-1810.iso.part5
######################################################################## 100.0%

不显示进度条

[root@fzun ~]# curl -s --range 800000001-1000000000 https://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso -o CentOS-7-x86_64-Minimal-1810.iso.part5
//无任何回显

Cookie 相关

保存响应 Cookie

[root@fzun ~]# curl -I -c cookie https://vircloud.net
HTTP/1.1 200 OK
Date: Fri, 21 Jun 2019 06:45:04 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
X-Pingback: https://vircloud.net/action/xmlrpc
Set-Cookie: 1ace4129ed475fea40c32ab2c48ab0c2_armxmod_online=U18; path=/
Strict-Transport-Security: max-age=15552000; includeSubdomains; preload
X-Xss-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Server: vcloud
CF-Ray: Singapore-Aliyun

[root@fzun ~]# cat cookie 
# Netscape HTTP Cookie File
# http://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

vircloud.net    FALSE    /    FALSE    0    1ace4129ed475fea40c32ab2c48ab0c2_armxmod_online    U18

请求附带 Cookie

[root@fzun ~]# curl -I -b cookie https://vircloud.net
HTTP/1.1 200 OK
Date: Fri, 21 Jun 2019 06:55:24 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
X-Pingback: https://vircloud.net/action/xmlrpc
Strict-Transport-Security: max-age=15552000; includeSubdomains; preload
X-Xss-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Server: vcloud
CF-Ray: Singapore-Aliyun

可以看到第一次响应的 Set-Cookie 头消失了。

额外信息

指定代理访问

[root@fzun ~]# curl -I -x http://IP:端口 https://vircloud.net
HTTP/1.1 200 Connection Established

HTTP/1.1 400 Bad Request
Date: Fri, 21 Jun 2019 06:41:01 GMT
Content-Type: text/html
Content-Length: 173
Connection: close
Server: vcloud

伪造浏览器信息

[root@fzun ~]# curl -I https://vircloud.net -A 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36'
HTTP/1.1 200 OK
Date: Fri, 21 Jun 2019 06:57:32 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
X-Pingback: https://vircloud.net/action/xmlrpc
Set-Cookie: 1ace4129ed475fea40c32ab2c48ab0c2_armxmod_online=U16; path=/
Strict-Transport-Security: max-age=15552000; includeSubdomains; preload
X-Xss-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Server: vcloud
CF-Ray: Singapore-Aliyun

本例中服务器看到的将是 Chrome 浏览器在访问。

伪造来源网页(referer)

[root@fzun ~]# curl -I https://vircloud.net -e 'https://vircloud.net'
HTTP/1.1 200 OK
Date: Fri, 21 Jun 2019 06:59:33 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
X-Pingback: https://vircloud.net/action/xmlrpc
Set-Cookie: 1ace4129ed475fea40c32ab2c48ab0c2_armxmod_online=U6; path=/
Strict-Transport-Security: max-age=15552000; includeSubdomains; preload
X-Xss-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Server: vcloud
CF-Ray: Singapore-Aliyun

本例中服务器看到的访问请求来源页是 https://vircloud.net

其他参数

[root@fzun ~]# curl --help
Usage: curl [options...] <url>
Options: (H) means HTTP/HTTPS only, (F) means FTP only
 --anyauth        Pick "any" authentication method (H) 可以使用“任何”身份验证方法
 -a, --append        Append to target file when uploading (F/SFTP) 上传文件时,附加到目标文件
 --basic        Use HTTP Basic Authentication (H) 使用 HTTP 基本验证
 --cacert    FILE        CA certificate to verify peer against (SSL) 指定 CA 证书 (SSL)
 --capath    DIR        CA directory to verify peer against (SSL) CA 目录
 -E, --cert    CERT[:PASSWD]        Client certificate file and password (SSL) 客户端证书文件和密码 (SSL)
 --cert-type    TYPE        Certificate file type (DER/PEM/ENG) (SSL) 证书文件类型 (DER/PEM/ENG) (SSL)
 --ciphers    LIST        SSL ciphers to use (SSL) SSL 密码
 --compressed        Request compressed response (using deflate or gzip) 指定请求响应的压缩格式
 -K, --config    FILE        Specify which config file to read 指定的配置文件读取
 --connect-timeout    SECONDS        Maximum time allowed for connection 连接超时
 --create-dirs        Create necessary local directory hierarchy 建立本地目录的目录层次结构
 --crlf        Convert LF to CRLF in upload 上传时把 LF 转变成 CRLF(换行符格式)
 --crlfile    FILE        Get a CRL list in PEM format from the given file 从指定的文件获得 PEM 格式的 CRL 列表
 -d, --data    DATA        HTTP POST data (H) HTTP POST 数据 (H)
 --data-ascii    DATA        HTTP POST ASCII data (H) 编码 HTTP POST 数据 (H)
 --data-binary    DATA        HTTP POST binary data (H) 编码 HTTP POST 数据 (H)
 --data-urlencode    DATA        HTTP POST data url encoded (H) 编码 HTTP POST 数据 (H)
 --delegation        STRING GSS-API delegation permission 委托权限
 --digest        Use HTTP Digest Authentication (H) 使用数字身份验证 (H)
 --disable-eprt        Inhibit using EPRT or LPRT (F) 禁止使用 EPRT 或 LPRT (F)
 --disable-epsv        Inhibit using EPSV (F)禁止使用 EPSV (F)
 --egd-file    FILE        EGD socket path for random data (SSL) 为随机数据设置 EGD socket 路径(SSL)
 --engine    ENGINGE        Crypto engine (SSL). "--engine list" for list 加密引擎 (SSL). "--engine list" 指定列表
 -F, --form    CONTENT        Specify HTTP multipart POST data (H) 模拟 HTTP 表单数据提交(multipart POST) (H)
 --form-string    STRING        Specify HTTP multipart POST data (H) 模拟 HTTP 表单数据提交 (H)
 --ftp-account    DATA        Account data string (F) 帐户数据提交 (F) 
 --ftp-alternative-to-user    COMMAND        String to replace "USER [name]" (F) 指定替换 "USER [name]" 的字符串 (F)
 --ftp-create-dirs        Create the remote dirs if not present (F) 如果不存在则创建远程目录 (F)
 --ftp-method    [MULTICWD/NOCWD/SINGLECWD]        Control CWD usage (F) 控制 CWD (F)
 --ftp-pasv        Use PASV/EPSV instead of PORT (F) 使用 PASV/EPSV 替换 PORT (F) 
 -P, --ftp-port    ADR        Use PORT with given address instead of PASV (F) 使用指定 PORT 及地址替换 PASV (F)
 --ftp-skip-pasv-ip        Skip the IP address for PASV (F) 跳过 PASV 的 IP 地址 (F)
 --ftp-pret        Send PRET before PASV (for drftpd) (F) 在 PASV 之前发送 PRET (drftpd) (F)
 --ftp-ssl-ccc        Send CCC after authenticating (F) 在认证之后发送 CCC (F)
 --ftp-ssl-ccc-mode        ACTIVE/PASSIVE  Set CCC mode (F) 设置 CCC 模式 (F)
 --ftp-ssl-control        Require SSL/TLS for ftp login, clear for transfer (F) 登录时需要 SSL/TLS (F)
 -G, --get        Send the -d data with a HTTP GET (H) 使用 HTTP GET 方法发送 -d 数据 (H)
 -g, --globoff        Disable URL sequences and ranges using {} and [] 禁用的 URL 队列 及范围使用 {} 和 []
 -H, --header    LINE        Custom header to pass to server (H) 要发送到服务端的自定义请求头 (H)
 --hostpubmd5    MD5        Hex encoded MD5 string of the host public key. (SSH) 十六进制编码主机公钥的 MD5 字符串
 -0, --http1.0        Use HTTP 1.0 (H) 使用 HTTP 1.0 (H)
 --ignore-content-length        Ignore the HTTP Content-Length header 忽略 HTTP Content-Length 头
 -i, --include        Include protocol headers in the output (H/F) 在输出中包含协议头 (H/F)
 -k, --insecure        Allow connections to SSL sites without certs (H) 允许连接到 SSL 站点,而不使用证书 (H)
 --interface    INTERFACE        Specify network interface/address to use 指定网络接口/地址
 -4, --ipv4        Resolve name to IPv4 address 将域名解析为 IPv4 地址
 -6, --ipv6        Resolve name to IPv6 address 将域名解析为 IPv6 地址
 -j, --junk-session-cookies        Ignore session cookies read from file (H) 读取文件中但忽略会话cookie (H)
 --keepalive-time    SECONDS        Interval between keepalive probes keepalive 包间隔
 --key    KEY        Private key file name (SSL/SSH) 私钥文件名 (SSL/SSH)
 --key-type    TYPE        Private key file type (DER/PEM/ENG) (SSL) 私钥文件类型 (DER/PEM/ENG) (SSL)
 --krb    LEVEL        Enable Kerberos with specified security level (F) 启用指定安全级别的 Kerberos (F)
 --libcurl    FILE        Dump libcurl equivalent code of this command line 命令的 libcurl 等价代码
 --limit-rate    RATE        Limit transfer speed to this rate 限制传输速度
 -l, --list-only        List only names of an FTP directory (F) 只列出 FTP 目录的名称 (F)
 --local-port        RANGE    Force use of these local port numbers 强制使用的本地端口号
 -L, --location    Follow redirects (H) 跟踪重定向 (H)
 --location-trusted like --location and send auth to other hosts (H) 类似 --location 并发送验证信息到其它主机 (H)
 -M, --manual        Display the full manual 显示全手动
 --mail-from    FROM        Mail from this address 从这个地址发送邮件
 --mail-rcpt    TO        Mail to this receiver(s) 发送邮件到这个接收人(s)
 --mail-auth    AUTH        Originator address of the original email 原始电子邮件的起始地址
 --max-filesize    BYTES        Maximum file size to download (H/F) 下载的最大文件大小 (H/F)
 --max-redirs    NUM         Maximum number of redirects allowed (H) 最大重定向数 (H)
 -m, --max-time    SECONDS        Maximum time allowed for the transfer 允许的最长传输时间
 --metalink        Process given URLs as metalink XML file 处理指定的 URL 上的 XML 文件
 --negotiate        Use HTTP Negotiate Authentication (H) 使用 HTTP Negotiate 认证 (H)
 -n, --netrc        Must read .netrc for user name and password 必须从 .netrc 文件读取用户名和密码
 --netrc-optional        Use either .netrc or URL; overrides -n 使用 .netrc 或 URL; 将重写 -n 参数
 --netrc-file    FILE        Set up the netrc filename to use 设置要使用的 netrc 文件名
 -N, --no-buffer        Disable buffering of the output stream 禁用输出流的缓存
 --no-keepalive        Disable keepalive use on the connection 禁用 connection 的 keepalive
 --no-sessionid        Disable SSL session-ID reusing (SSL) 禁止重复使用 SSL session-ID (SSL)
 --noproxy        List of hosts which do not use proxy 不使用代理的主机列表
 --ntlm        Use HTTP NTLM authentication (H) 使用 HTTP NTLM 认证 (H)
 --pass    PASS        Pass phrase for the private key (SSL/SSH) 传递给私钥的短语 (SSL/SSH)
 --post301        Do not switch to GET after following a 301 redirect (H) 在 301 重定向后不要切换为 GET 请求 (H)
 --post302        Do not switch to GET after following a 302 redirect (H) 在 302 重定向后不要切换为 GET 请求 (H)
 --post303        Do not switch to GET after following a 303 redirect (H) 在 303 重定向后不要切换为 GET 请求 (H)
 --proto    PROTOCOLS        Enable/disable specified protocols 启用/禁用 指定的协议
 --proto-redir    PROTOCOLS        Enable/disable specified protocols on redirect 在重定向上 启用/禁用 指定的协议
 --proxy-anyauth        Pick "any" proxy authentication method (H) 在代理上使用 "any" 认证方法 (H)
 --proxy-basic        Use Basic authentication on the proxy (H) 在代理上使用 Basic 认证 (H)
 --proxy-digest        Use Digest authentication on the proxy (H) 在代理上使用 Digest 认证 (H)
 --proxy-negotiate        Use Negotiate authentication on the proxy (H) 在代理上使用 Negotiate 认证 (H)
 --proxy-ntlm         Use NTLM authentication on the proxy (H) 在代理上使用 NTLM 认证 (H)
 -U, --proxy-user    USER[:PASSWORD]        Proxy user and password 代理用户名及密码
 --proxy1.0 HOST[:PORT]        Use HTTP/1.0 proxy on given port 在指定的端口上使用 HTTP/1.0 代理
 -p, --proxytunnel        Operate through a HTTP proxy tunnel (using CONNECT) 使用 HTTP 代理 (用于 CONNECT)
 --pubkey KEY        Public key file name (SSH) 指定公钥文件 (SSH)
 -Q, --quote    CMD        Send command(s) to server before transfer (F/SFTP) 在传输开始前向服务器发送命令 (F/SFTP)
 --random-file    FILE        File for reading random data from (SSL) 读取随机数据的文件 (SSL)
 --raw        Do HTTP "raw", without any transfer decoding (H) 使用原始 HTTP 传输,而不使用编码 (H)
 -J, --remote-header-name        Use the header-provided filename (H) 从远程文件读取头信息 (H)
 --remote-name-all        Use the remote file name for all URLs 使用所有 URL 的远程文件名
 -R, --remote-time        Set the remote file's time on the local output 将远程文件的时间设置在本地输出上
 -X, --request    COMMAND        Specify request command to use 使用指定的请求命令
 --resolve HOST:PORT:ADDRESS        Force resolve of HOST:PORT to ADDRESS 将 HOST:PORT 强制解析到 ADDRESS
 --retry    NUM        Retry request NUM times if transient problems occur 出现问题时的重试次数
 --retry-delay    SECONDS        When retrying, wait this many seconds between each 重试时的延时时长
 --retry-max-time    SECONDS        Retry only within this period 仅在指定时间段内重试
 --socks4    HOST[:PORT]        SOCKS4 proxy on given host + port 在指定的 host + port 上使用 SOCKS4 代理
 --socks4a    HOST[:PORT]        SOCKS4a proxy on given host + port 在指定的 host + port 上使用 SOCKSa 代理
 --socks5    HOST[:PORT]        SOCKS5 proxy on given host + port 在指定的 host + port 上使用 SOCKS5 代理
 --socks5-basic  Enable username/password auth for SOCKS5 proxies SOCKS5 使用 用户名/密码 认证
 --socks5-gssapi Enable GSS-API auth for SOCKS5 proxies SOCKS5 使用 GSS-API 认证
 --socks5-hostname    HOST[:PORT]        SOCKS5 proxy, pass host name to proxy SOCKS5 代理,指定用户名、密码
 --socks5-gssapi-service    NAME        SOCKS5 proxy service name for gssapi 为 gssapi 使用 SOCKS5 代理服务名称
 --socks5-gssapi-nec        Compatibility with NEC SOCKS5 server 与 NEC Socks5 服务器兼容
 -Y, --speed-limit    RATE        Stop transfers below speed-limit for 'speed-time' secs 在指定限速时间之后停止传输
 -y, --speed-time    SECONDS        Time for trig speed-limit abort. Defaults to 30 指定时间之后触发限速,默认 30
 --ssl        Try SSL/TLS (FTP, IMAP, POP3, SMTP) 尝试 SSL/TLS (FTP, IMAP, POP3, SMTP)
 --ssl-reqd  Require SSL/TLS (FTP, IMAP, POP3, SMTP) 需要 SSL/TLS (FTP, IMAP, POP3, SMTP)
 -2, --sslv2        Use SSLv2 (SSL) 使用 SSLv2 (SSL)
 -3, --sslv3        Use SSLv3 (SSL) 使用 SSLv3 (SSL)
 --ssl-allow-beast        Allow security flaw to improve interop (SSL) 允许的安全漏洞,提高互操作性(SSL)
 --stderr FILE        Where to redirect stderr. - means stdout 重定向 stderr 的文件位置. - means stdout
 --tcp-nodelay        Use the TCP_NODELAY option 使用 TCP_NODELAY 选项
 -t, --telnet-option    OPT=VAL        Set telnet option 设置 telnet 选项
 --tftp-blksize    VALUE        Set TFTP BLKSIZE option (must be >512) 设备 TFTP BLKSIZE 选项 (必须 >512)
 -z, --time-cond    TIME        Transfer based on a time condition 基于时间条件的传输
 -1, --tlsv1        Use => TLSv1 (SSL) 使用 => TLSv1 (SSL)
 --tlsv1.0        Use TLSv1.0 (SSL) 使用 TLSv1.0 (SSL)
 --tlsv1.1        Use TLSv1.1 (SSL) 使用 TLSv1.1 (SSL)
 --tlsv1.2        Use TLSv1.2 (SSL) 使用 TLSv1.2 (SSL)
 --trace FILE        Write a debug trace to the given file 将 debug 信息写入指定的文件
 --trace-ascii    FILE        Like --trace but without the hex output 类似 --trace 但使用16进度输出
 --trace-time        Add time stamps to trace/verbose output 向 trace/verbose 输出添加时间戳
 --tr-encoding        Request compressed transfer encoding (H) 请求压缩传输编码 (H)
 -B, --use-ascii        Use ASCII/text transfer 使用 ASCII/text 传输
 --tlsuser    USER        TLS username TLS 用户名
 --tlspassword    STRING        TLS password TLS 密码
 --tlsauthtype    STRING        TLS authentication type (default SRP) TLS 认证类型 (默认 SRP)
 --unix-socke    FILE        Connect through this UNIX domain socket 通过这个 UNIX socket 域连接
 -v, --verbose        Make the operation more talkative 显示详细操作信息
 --xattr        Store metadata in extended file attributes 将元数据存储在扩展文件属性中
 -q        If used as the first parameter disables .curlrc .curlrc 如果作为第一个参数无效

参考文章:

1、《curl 命令参数翻译
2、《Linux 指令详解 curl 文件传输
3、《curl.1 the man page


ArmxMod for Typecho
个性化、自适应、功能强大的响应式主题

推广

 继续浏览关于 linux教程运维curl工具命令 的文章

 本文最后更新于 2019/06/30 15:27:07,可能因经年累月而与现状有所差异

 引用转载请注明: VirCloud's Blog > 运维 > cURL:一款神奇的 Linux 万金油工具详细使用教程

精选评论

  1. 心灵博客
    心灵博客 回复

    Mac OS X 10_14_5Chrome 75.0.3770.80来自 江西 的大神

    这命令确实好用,下载,测试都用得上