前言
cURL(客户端URL)是一个开放源代码的命令行工具,也是一个跨平台的库(libcurl),用于在服务器之间传输数据,并分发给几乎所有新的操作系统。cURL编程用于需要通过Internet协议发送或接收数据的几乎任何地方。
cURL支持几乎所有的互联网协议(DICT,FILE,FTP,FTPS,GOPHER,HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAPS,MQTT,POP3,POP3S,RTMP,RTMPS,RTSP,SCP,SFTP,SMB,SMBS,SMTP ,SMTPS,TELNET和TFTP)。
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 的文件位置
文章评论