温馨提示:
本文所述内容具有依赖性,可能因软硬条件不同而与预期有所差异,故请以实际为准,仅供参考。
什么叫万金油工具,那就是非常好用,不论是网页调试,还是文件传输,只要是网络相关的几乎都可以胜任!不信?那我们一起来看看。
工具介绍
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
输出格式中存在的变量将由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》
Mac OS X 10_14_5Chrome 75.0.3770.80来自 江西 的大神
这命令确实好用,下载,测试都用得上