随便写写的啦,这是个简单的使用而已…(●ˇ∀ˇ●)

curl简单的使用


curl 简介:

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


curl 常用参数:

参数 描述
-I/–head 只显示传输文档,经常用于测试连接本身
-o/–output 把输出写到该文件中,必须输入保存文件名
-O/–remote-name 把输出写到该文件中,保留远程文件的文件名
-F/–form 模拟表单提交
-s/–silent 静默模式,不输出任何东西
-S/–show-error 显示错误,在选项 -s 中,当 curl 出现错误时将显示
-L/–location 跟踪重定向
-f/–fail 不输出错误
-n/–netrc 从netrc文件中读取用户名和密码
–netrc-optional 使用 .netrc 或者 URL来覆盖-n
–ntlm 使用 HTTP NTLM 身份验证
-N/–no-buffer 禁用缓冲输出
-p/–proxytunnel 使用HTTP代理
–proxy-anyauth 选择任一代理身份验证方法
–proxy-basic 在代理上使用基本身份验证
–proxy-digest 在代理上使用数字身份验证
–proxy-ntlm 在代理上使用ntlm身份验证
-P/–ftp-port 使用端口地址,而不是使用PASV
-M/–manual 显示全手动
-Q/–quote 文件传输前,发送命令到服务器
-r/–range 检索来自HTTP/1.1或FTP服务器字节范围
–range-file 读取(SSL)的随机文件
-R/–remote-time 在本地生成文件时,保留远程文件时间
–retry 传输出现问题时,重试的次数
–retry-delay 传输出现问题时,设置重试间隔时间
–retry-max-time 传输出现问题时,设置最大重试时间
–socks4 用socks4代理给定主机和端口
–socks5 用socks5代理给定主机和端口
-t/–telnet-option Telnet选项设置
–trace 对指定文件进行debug
–trace-ascii Like 跟踪但没有hex输出
–trace-time 跟踪/ 详细输出时,添加时间戳
-T/–upload-file 上传文件
-u/–user 设置服务器的用户和密码
-U/–proxy-user 设置代理用户名和密码
-V/–version 显示版本信息
-w/–write-out [format] 什么输出完成后
-x/–proxy 在给定的端口上使用HTTP代理
-X/–request 指定什么命令
-y/–speed-time 放弃限速所要的时间。默认为30
-Y/–speed-limit 停止传输速度的限制,速度时间’秒
-z/–time-cond 传送时间设置
-0/–http1.0 使用HTTP 1.0
-1/–tlsv1 使用TLSv1(SSL)
-2/–sslv2 使用SSLv2的(SSL)
-3/–sslv3 使用的SSLv3(SSL)
–3p-quote like -Q for the source URL for 3rd party transfer
–3p-url 使用url,进行第三方传送
–3p-user 使用用户名和密码,进行第三方传送
-4/–ipv4 使用IP4
-6/–ipv6 使用IP6
-#/–progress-bar 用进度条显示当前的传送状态

常用参数分类:

# 调试类
-v, --verbose                          输出信息
-q, --disable                          在第一个参数位置设置后 .curlrc 的设置直接失效,这个参数会影响到 -K, --config -A, --user-agent -e, --referer
-K, --config FILE                      指定配置文件
-L, --location                         跟踪重定向 (H)

# CLI显示设置
-s, --silent                           Silent模式。不输出任务内容
-S, --show-error                       显示错误. 在选项 -s 中,当 curl 出现错误时将显示
-f, --fail                             不显示 连接失败时HTTP错误信息
-i, --include                          显示 response的header (H/F)
-I, --head                             仅显示 响应文档头
-l, --list-only                        只列出FTP目录的名称 (F)
-\#, --progress-bar                     以进度条 显示传输进度

# 数据传输类
-X, --request [GET|POST|PUT|DELETE|]  使用指定的 http method 例如 -X POST
-H, --header <header>                  设定 request里的header 例如 -H "Content-Type: application/json"
-e, --referer                          设定 referer (H)
-d, --data <data>                      设定 http body 默认使用 content-type application/x-www-form-urlencoded (H)
    --data-raw <data>                  ASCII 编码 HTTP POST 数据 (H)
    --data-binary <data>               binary 编码 HTTP POST 数据 (H)
    --data-urlencode <data>            url 编码 HTTP POST 数据 (H)
-G, --get                              使用 HTTP GET 方法发送 -d 数据 (H)
-F, --form <name=string>               模拟 HTTP 表单数据提交 multipart POST (H)
    --form-string <name=string>        模拟 HTTP 表单数据提交 (H)
-u, --user <user:password>             使用帐户,密码 例如 admin:password
-b, --cookie <data>                    cookie 文件 (H)
-j, --junk-session-cookies             读取文件中但忽略会话cookie (H)
-A, --user-agent                       user-agent设置 (H)

# 传输设置
-C, --continue-at OFFSET               断点续转
-x, --proxy [PROTOCOL://]HOST[:PORT]   在指定的端口上使用代理
-U, --proxy-user USER[:PASSWORD]       代理用户名及密码

# 文件操作
-T, --upload-file <file>               上传文件
-a, --append                           添加要上传的文件 (F/SFTP)

# 输出设置
-o, --output <file>                    将输出写入文件,而非 stdout
-O, --remote-name                      将输出写入远程文件
-D, --dump-header <file>               将头信息写入指定的文件
-c, --cookie-jar <file>                操作结束后,要写入 Cookies 的文件位置

curl 简单的命令:

  • 请求一个URL
curl --url "http://127.0.0.1/a.php"
curl --url "ftp://127.0.0.1:6600/test.txt"
curl --url "dict://127.0.0.1:4449"
curl --url "gopher://127.0.0.1:4449/_POST"
curl --url "file:///etc/issue"
  • 带认证的请求
curl --url "http://DQ:123@127.0.0.1/a.php"
curl --url "ftp://DQ:123@127.0.0.1:4449/test.txt"
curl --user "DQ:123" --url "http://127.0.0.1/a.php"
curl --user "DQ:123" --url "ftp://127.0.0.1:4449/test.txt"
curl -u "DQ:123" --url "http://127.0.0.1/a.php"
  • 自定义请求标头
curl --url "http://127.0.0.1/a.php" -H "user-agent:DQV5"
curl --url "http://127.0.0.1/a.php" -H "user-agent:DQV5" -H "cookie:a=b;c=d"
  • 关于cookie
curl --url "http://127.0.0.1/a.php" -b "PHPSESSID:xxxxxxx" # 手动设置cookie
curl --url "http://127.0.0.1/a.php" -b "cookies.txt" # 使用cookie文件作为cookie
curl --url "http://127.0.0.1/a.php" -c "cookies2.txt" # 将服务器设的cookie保存到本地cookies2.txt文件
  • 发送请求参数
curl --url "http://127.0.0.1/a.php" -d "a=b" -d "c=d" # POST 方式
curl --url "http://127.0.0.1/a.php" --data-urlencode "a= b" # POST 方式,会对请求内容进行编码
curl --url "http://127.0.0.1/a.php" -G -d "a=b" # GET 方式
curl --url "http://127.0.0.1/a.php" -G --data-urlencode "a= b" # GET 方式,会对请求内容进行编码
  • 模拟表单
curl --url "http://127.0.0.1/a.php" -F "a=b" -F "c=d" # 表单提交 POST 方式
curl --url "http://127.0.0.1/a.php" -F "a=b" -G # 空表单提交 POST 方式,GET有a=b的参数
curl --url "http://127.0.0.1/a.php" -F "file=@test.txt" # 表单上传test.txt文件,字段为file
curl --url "http://127.0.0.1/a.php" -F "file=@test.txt;type=image/gif;filename=test.gif" # 表单上传test.txt文件,字段为file,类型为image/gif,文件名为test.gif
curl --url "http://127.0.0.1/a.php" -F "file=@test.txt;type=image/gif;filename=test.gif" -F "submit=true" # 表单上传test.txt文件,字段为file,类型为image/gif,文件名为test.gif;并传入submit=true的参数
  • 跟随重定向
curl --url "http://127.0.0.1/302a.php" -L
curl --url "http://127.0.0.1/302a.php" -L -d "a=b"
curl --url "http://127.0.0.1/a.php" -F "file=@test.txt" # 表单上传test.txt文件,字段为file
  • 将服务器的回应保存成文件
curl --url "http://127.0.0.1/file.txt" -o "/tmp/file.txt" # 简单的将file.txt保存
curl --url "http://127.0.0.1/file2.txt" -O # 简单保存为file2.txt
curl --url "http://127.0.0.1/file.txt" -o "/tmp/file.txt" -# # 简单的将file.txt保存,显示进度条
curl --url "http://127.0.0.1/file.txt" -o "/tmp/file.txt" -s # 简单的将file.txt保存,静默模式

curl --url "http://127.0.0.1/file.txt" -r 0-1023 -o "/tmp/file1.txt" 
curl --url "http://127.0.0.1/file.txt" -r 1024-2047 -o "/tmp/file2.txt"  # 分段保存为file1.txt和file2.txt,每次大小为1kb

curl --user "DQ:123" --url "ftp://47.101.132.223:6600/test.txt" -o "test.txt"
curl --user "DQ:123" --url "ftp://47.101.132.223:6600/test.txt" -O # 使用ftp简单下载文件

curl --url "http://127.0.0.72:1000/img02.jpg" -C [起始偏移量(byte)(s)] -o "file.jpg"
curl --url "http://127.0.0.72:1000/img02.jpg" -C [起始偏移量(byte)(s)] -O
curl --url "http://127.0.0.72:1000/img02.jpg" -C - -O # 简单的断点续传
  • 简单上传文件
curl -T "file.txt" --user "DQ:123" --url "ftp://47.101.132.223:6600/" # ftp上传
curl -T "{file1.txt,file2.txt}" --user "DQ:123" --url "ftp://47.101.132.223:6600/" # ftp上传多个文件
curl -T - --user "DQ:123" --url "ftp://47.101.132.223:6600/new.txt" # 从标准输入获取内容保存到ftp服务器指定文件中
curl -T "file.txt" --user "DQ:123" --url "http://127.0.0.72:1000/get.php" # PUT 上传
  • 通过代理
curl --proxy "socks5://127.0.0.1:6665" --proxy-user "DQ:123" --url "http://127.0.0.72:1000/get.php" # socks5 代理
curl -x "socks5://127.0.0.1:6665" --proxy-user "DQ:123" --url "http://127.0.0.72:1000/get.php" # socks5 代理
curl -x "127.0.0.1:6665" --proxy-user "DQ:123" --url "http://127.0.0.72:1000/get.php" # http 代理
curl -x "socks4://127.0.0.1:6666" --proxy-user "DQ:123" --url "http://127.0.0.72:1000/get.php" # socks4 代理
  • 自定义用户代理
curl --url "http://127.0.0.72:1000/get.php" -A "DQ"
curl --url "http://127.0.0.72:1000/get.php" --user-agent "DQ"
  • 模拟限速
curl --url "http://127.0.0.1/a.php" --rate-limit 1000B 
  • 设置referer
curl --url "http://127.0.0.1/a.php" -e "https://google.com"

curl 常用组合:

# 发送GET请求
curl --url "http://127.0.0.72:1000/get.php" 
curl --url "http://127.0.0.72:1000/get.php" -G -d "a=b" -H "user-agent:DQ"
curl --url "http://127.0.0.72:1000/get.php" -G -d "a=b" -A "DQ" -b "PHPSESSID:xxxxx"
curl --url "http://127.0.0.72:1000/get.php" -G --data-urlencode "a= !{}b" -A "DQ" -b "PHPSESSID:xxxxx"
curl --url "http://127.0.0.72:1000/get.php" -G --data-urlencode "a= !{}b" -A "DQ" -b "PHPSESSID:xxxxx" -L
curl --user "DQ:123" --url "http://127.0.0.72:1000/get.php" -G --data-urlencode "a= !{}b" -A "DQ" -b "PHPSESSID:xxxxx"

# 发送POST请求
curl --url "http://127.0.0.72:1000/get.php" -H "Content-Type:application/x-www-form-urlencoded"
curl --url "http://127.0.0.72:1000/get.php" -X POST
curl --url "http://127.0.0.72:1000/get.php" -d "a=b"
curl --url "http://127.0.0.72:1000/get.php" --data-urlencode "a= b"
curl --url "http://127.0.0.72:1000/get.php" --form "a=b"
curl --url "http://127.0.0.72:1000/get.php" --data-urlencode "a= b" -A "DQ" -b "PHPSESSID:xxxxx" -L
curl --user "DQ:123" --url "http://127.0.0.72:1000/get.php" --data-urlencode "a= b" -A "DQ" -b "PHPSESSID:xxxxx" -L

# 文件上传
curl --url "http://127.0.0.72:1000/get.php" --form "file=@file.txt"
curl --url "http://127.0.0.72:1000/get.php" --form "img=@file.gif;type=image/gif;filename=a.gif" --form "submit=true"
curl --user "DQ:123" --url "http://127.0.0.72:1000/get.php" --form "img=@file.gif;type=image/gif;filename=a.gif" --form "submit=true" -b "PHPSESSID:XXXXX" -A "DQ"
curl --user "DQ:123" --url "http://127.0.0.72:1000/get.php" --form "img=@file.gif;type=image/gif;filename=a.gif" --form "submit=true" -b "PHPSESSID:XXXXX" -A "DQ" -L -e "https://google.com"
curl --user "DQ:123" --url "http://127.0.0.72:1000/get.php" -X PUT -T "file.txt"
curl --user "DQ:123" --url "ftp://47.101.132.223:6600/" -T "file.txt" 
curl --user "DQ:123" --url "ftp://47.101.132.223:6600/" -T "{file1.txt,file2.txt}" 
curl --url "ftp://47.101.132.223:6600/new.txt" -T - --user "DQ:123" # 从标准输入获取内容到ftp服务器文件中

# 文件传输
curl --url "http://127.0.0.72:1000/get.php" -o "file.txt"
curl --url "http://127.0.0.72:1000/data.txt" -O 
curl --url "http://127.0.0.72:1000/img.jpg" -r 0-1023 -o "img01.jpg"
curl --user "DQ:123" --url "http://127.0.0.72:1000/img.jpg" -r 1024-2047 -o "img01.jpg"  
curl --user "DQ:123" --url "http://127.0.0.72:1000/get.php" -o "file.txt" --form "user=admin" --form "action=download" -b "PHPSESSID:xxxxxx" -A "DQ" -L
curl --user "DQ:123" --url "http://127.0.0.72:1000/data.txt" -C - -O
curl --url "ftp://47.101.132.223:6600/test.txt" -o "test.txt"
curl --user "DQ:123" --url  "ftp://47.101.132.223:6600/test.txt" -o "test.txt"

# 使用代理
curl -x "socks5://127.0.0.1:2333"--url "http://127.0.0.72:1000/get.php" 
curl -x "socks4://127.0.0.1:2334"--url "http://127.0.0.72:1000/get.php" 
curl -x "http://127.0.0.1:2335"--url "http://127.0.0.72:1000/get.php" 
curl -x "socks5://127.0.0.1:2333" --proxy-user "DQ:123"--url "http://127.0.0.72:1000/get.php"
curl --proxy "socks4://127.0.0.1:2334"--proxy-user "DQ:123" --user "DQ:123" --url "http://127.0.0.72:1000/get.php" 
curl --proxy "socks5://127.0.0.1:2333" --proxy-user "DQ:123" --user "DQ:123" --url "ftp://47.101.132.223:6600/test.txt" -o "file.txt"

# 其他杂项
curl --url "http://127.0.0.72:1000/get.php" -i # 显示响应的所有内容
curl --url "http://127.0.0.72:1000/get.php" -I # 显示响应的头部
curl --user "DQ:123" --url "ftp://47.101.132.223:6600/" --list-only # 仅列出ftp所有文件
curl --url "http://127.0.0.72:1000/get.php" --trace - # 跟踪整个请求过程
curl --url "http://127.0.0.72:1000/get.php" -v # 显示整个请求过程的信息
curl --user "DQ:123" --url "http://127.0.0.72:1000/get.php" -L -e "https://google.com" # 显示整个请求过程的信息
curl --user "DQ:123" --url "http://127.0.0.72:1000/get.php" -D "output.txt" # 将响应头结果输入到output.txt文件

curl 语法及选项:

在以下选项中,(H) 表示仅适用 HTTP/HTTPS ,(F) 表示仅适用于 FTP
    --anyauth      选择 "any" 认证方法 (H)
-a, --append        添加要上传的文件 (F/SFTP)
    --basic        使用HTTP基础认证(Basic Authentication)(H)
    --cacert FILE  CA 证书,用于每次请求认证 (SSL)
    --capath DIR    CA 证书目录 (SSL)
-E, --cert CERT[:PASSWD] 客户端证书文件及密码 (SSL)
    --cert-type TYPE 证书文件类型 (DER/PEM/ENG) (SSL)
    --ciphers LIST  SSL 秘钥 (SSL)
    --compressed    请求压缩 (使用 deflate 或 gzip)
-K, --config FILE  指定配置文件
    --connect-timeout SECONDS  连接超时设置
-C, --continue-at OFFSET  断点续转
-b, --cookie STRING/FILE  Cookies字符串或读取Cookies的文件位置 (H)
-c, --cookie-jar FILE  操作结束后,要写入 Cookies 的文件位置 (H)
    --create-dirs  创建必要的本地目录层次结构
    --crlf          在上传时将 LF 转写为 CRLF
    --crlfile FILE  从指定的文件获得PEM格式CRL列表
-d, --data DATA    HTTP POST 数据 (H)
    --data-ascii DATA  ASCII 编码 HTTP POST 数据 (H)
    --data-binary DATA  binary 编码 HTTP POST 数据 (H)
    --data-urlencode DATA  url 编码 HTTP POST 数据 (H)
    --delegation STRING GSS-API 委托权限
    --digest        使用数字身份验证 (H)
    --disable-eprt  禁止使用 EPRT 或 LPRT (F)
    --disable-epsv  禁止使用 EPSV (F)
-D, --dump-header FILE  将头信息写入指定的文件
    --egd-file FILE  为随机数据设置EGD socket路径(SSL)
    --engine ENGINGE  加密引擎 (SSL). "--engine list" 指定列表
-f, --fail          连接失败时不显示HTTP错误信息 (H)
-F, --form CONTENT  模拟 HTTP 表单数据提交(multipart POST) (H)
    --form-string STRING  模拟 HTTP 表单数据提交 (H)
    --ftp-account DATA  帐户数据提交 (F)
    --ftp-alternative-to-user COMMAND  指定替换 "USER [name]" 的字符串 (F)
    --ftp-create-dirs  如果不存在则创建远程目录 (F)
    --ftp-method [MULTICWD/NOCWD/SINGLECWD] 控制 CWD (F)
    --ftp-pasv      使用 PASV/EPSV 替换 PORT (F)
-P, --ftp-port ADR  使用指定 PORT 及地址替换 PASV (F)
    --ftp-skip-pasv-ip 跳过 PASV 的IP地址 (F)
    --ftp-pret      在 PASV 之前发送 PRET (drftpd) (F)
    --ftp-ssl-ccc  在认证之后发送 CCC (F)
    --ftp-ssl-ccc-mode ACTIVE/PASSIVE  设置 CCC 模式 (F)
    --ftp-ssl-control ftp 登录时需要 SSL/TLS (F)
-G, --get          使用 HTTP GET 方法发送 -d 数据  (H)
-g, --globoff      禁用的 URL 队列 及范围使用 {}[]
-H, --header LINE  要发送到服务端的自定义请求头 (H)
-I, --head          仅显示响应文档头
-h, --help          显示帮助
-0, --http1.0      使用 HTTP 1.0 (H)
    --ignore-content-length  忽略 HTTP Content-Length 头
-i, --include      在输出中包含协议头 (H/F)
-k, --insecure      允许连接到 SSL 站点,而不使用证书 (H)
    --interface INTERFACE  指定网络接口/地址
-4, --ipv4          将域名解析为 IPv4 地址
-6, --ipv6          将域名解析为 IPv6 地址
-j, --junk-session-cookies 读取文件中但忽略会话cookie (H)
    --keepalive-time SECONDS  keepalive 包间隔
    --key KEY      私钥文件名 (SSL/SSH)
    --key-type TYPE 私钥文件类型 (DER/PEM/ENG) (SSL)
    --krb LEVEL    启用指定安全级别的 Kerberos (F)
    --libcurl FILE  命令的libcurl等价代码
    --limit-rate RATE  限制传输速度
-l, --list-only    只列出FTP目录的名称 (F)
    --local-port RANGE  强制使用的本地端口号
-L, --location      跟踪重定向 (H)
    --location-trusted 类似 --location 并发送验证信息到其它主机 (H)
-M, --manual        显示全手动
    --mail-from FROM  从这个地址发送邮件
    --mail-rcpt TO  发送邮件到这个接收人(s)
    --mail-auth AUTH  原始电子邮件的起始地址
    --max-filesize BYTES  下载的最大文件大小 (H/F)
    --max-redirs NUM  最大重定向数 (H)
-m, --max-time SECONDS  允许的最多传输时间
    --metalink      处理指定的URL上的XML文件
    --negotiate    使用 HTTP Negotiate 认证 (H)
-n, --netrc        必须从 .netrc 文件读取用户名和密码
    --netrc-optional 使用 .netrc 或 URL; 将重写 -n 参数
    --netrc-file FILE  设置要使用的 netrc 文件名
-N, --no-buffer    禁用输出流的缓存
    --no-keepalive  禁用 connection 的 keepalive
    --no-sessionid  禁止重复使用 SSL session-ID (SSL)
    --noproxy      不使用代理的主机列表
    --ntlm          使用 HTTP NTLM 认证 (H)
-o, --output FILE  将输出写入文件,而非 stdout
    --pass PASS    传递给私钥的短语 (SSL/SSH)
    --post301      在 301 重定向后不要切换为 GET 请求 (H)
    --post302      在 302 重定向后不要切换为 GET 请求 (H)
    --post303      在 303 重定向后不要切换为 GET 请求 (H)
-\#, --progress-bar  以进度条显示传输进度
    --proto PROTOCOLS  启用/禁用 指定的协议
    --proto-redir PROTOCOLS  在重定向上 启用/禁用 指定的协议
-x, --proxy [PROTOCOL://]HOST[:PORT] 在指定的端口上使用代理
    --proxy-anyauth 在代理上使用 "any" 认证方法 (H)
    --proxy-basic  在代理上使用 Basic 认证  (H)
    --proxy-digest  在代理上使用 Digest 认证 (H)
    --proxy-negotiate 在代理上使用 Negotiate 认证 (H)
    --proxy-ntlm    在代理上使用 NTLM 认证 (H)
-U, --proxy-user USER[:PASSWORD]  代理用户名及密码
    --proxy1.0 HOST[:PORT]  在指定的端口上使用 HTTP/1.0 代理
-p, --proxytunnel  使用HTTP代理 (用于 CONNECT)
    --pubkey KEY    公钥文件名 (SSH)
-Q, --quote CMD    在传输开始前向服务器发送命令 (F/SFTP)
    --random-file FILE  读取随机数据的文件 (SSL)
-r, --range RANGE  仅检索范围内的字节
    --raw          使用原始HTTP传输,而不使用编码 (H)
-e, --referer      Referer URL (H)
-J, --remote-header-name 从远程文件读取头信息 (H)
-O, --remote-name  将输出写入远程文件
    --remote-name-all 使用所有URL的远程文件名
-R, --remote-time  将远程文件的时间设置在本地输出上
-X, --request COMMAND  使用指定的请求命令
    --resolve HOST:PORT:ADDRESS  将 HOST:PORT 强制解析到 ADDRESS
    --retry NUM  出现问题时的重试次数
    --retry-delay SECONDS 重试时的延时时长
    --retry-max-time SECONDS  仅在指定时间段内重试
-S, --show-error    显示错误. 在选项 -s 中,当 curl 出现错误时将显示
-s, --silent        Silent模式。不输出任务内容
    --socks4 HOST[:PORT]  在指定的 host + port 上使用 SOCKS4 代理
    --socks4a HOST[:PORT]  在指定的 host + port 上使用 SOCKSa 代理
    --socks5 HOST[:PORT]  在指定的 host + port 上使用 SOCKS5 代理
    --socks5-hostname HOST[:PORT] SOCKS5 代理,指定用户名、密码
    --socks5-gssapi-service NAME  为gssapi使用SOCKS5代理服务名称
    --socks5-gssapi-nec  与NEC Socks5服务器兼容
-Y, --speed-limit RATE  在指定限速时间之后停止传输
-y, --speed-time SECONDS  指定时间之后触发限速. 默认 30
    --ssl          尝试 SSL/TLS (FTP, IMAP, POP3, SMTP)
    --ssl-reqd      需要 SSL/TLS (FTP, IMAP, POP3, SMTP)
-2, --sslv2        使用 SSLv2 (SSL)
-3, --sslv3        使用 SSLv3 (SSL)
    --ssl-allow-beast 允许的安全漏洞,提高互操作性(SSL)
    --stderr FILE  重定向 stderr 的文件位置. - means stdout
    --tcp-nodelay  使用 TCP_NODELAY 选项
-t, --telnet-option OPT=VAL  设置 telnet 选项
    --tftp-blksize VALUE  设备 TFTP BLKSIZE 选项 (必须 >512)
-z, --time-cond TIME  基于时间条件的传输
-1, --tlsv1        使用 => TLSv1 (SSL)
    --tlsv1.0      使用 TLSv1.0 (SSL)
    --tlsv1.1      使用 TLSv1.1 (SSL)
    --tlsv1.2      使用 TLSv1.2 (SSL)
    --trace FILE    将 debug 信息写入指定的文件
    --trace-ascii FILE  类似 --trace 但使用16进度输出
    --trace-time    向 trace/verbose 输出添加时间戳
    --tr-encoding  请求压缩传输编码 (H)
-T, --upload-file FILE  将文件传输(上传)到指定位置
    --url URL      指定所使用的 URL
-B, --use-ascii    使用 ASCII/text 传输
-u, --user USER[:PASSWORD]  指定服务器认证用户名、密码
    --tlsuser USER  TLS 用户名
    --tlspassword STRING TLS 密码
    --tlsauthtype STRING  TLS 认证类型 (默认 SRP)
    --unix-socket FILE    通过这个 UNIX socket 域连接
-A, --user-agent STRING  要发送到服务器的 User-Agent (H)
-v, --verbose      显示详细操作信息
-V, --version      显示版本号并退出
-w, --write-out FORMAT  完成后输出什么
    --xattr        将元数据存储在扩展文件属性中
-q                .curlrc 如果作为第一个参数无效