curl
模拟网络请求和传输
curl [options] [URL...]
URL说明
url
支持 glob
通配符的形式
http://site.{one,two,three}.com
ftp://ftp.numericals.com/file[1-100].txt
ftp://ftp.numericals.com/file[001-100].txt
ftp://ftp.letters.com/file[a-z].txt
http://www.numericals.com/file[1-100:10].txt
http://www.letters.com/file[a-z:2].txt
选项说明
普通选项
选项 | 说明 |
---|---|
-#, --progress-bar | 显示一个简单的进度条来代替标准的输出 |
-0, --http1.0 | 使用 HTTP 1.0 |
-4, --ipv4 | 只解析 ipv4 |
-6, --ipv6 | 只解析 ipv6 |
-b, --cookie < name=data > | 指定Cookie键值或文件(只有name部分时) |
-c, --cookie-jar < file > | 保存返回结果的Cookie到指定的文件 |
--compressed | 指定返回结果是解压后的 |
--connect-timeout < seconds > | 指定连接超时,重复指定时最后一个生效 |
-D, --dump-header < file > | 保存返回结果的请求头 |
-f, --fail | 忽略服务器导致的错误 |
-i, --include | 在输出结果中显示头信息 |
-I, --head | 只请求HTTP头信息 |
--interface < name > | 指定网络接口 |
-j, --junk-session-cookies | 从文件读取Cookie时忽略会话Cookie |
--keepalive-time |
指定发送keepalive的时间间隔 |
--limit-rate | 限制传输速率 |
--local-port | 指定请求时本地使用的端口 |
-m, --max-time < seconds > | 指定整个操作的超时时间 |
--no-keepalive | 不使用keepalive |
--raw | 显示返回结果未解码的内容 |
-s | 不显示进度条和错误信息 |
-S | 和 -s 一起显示错误信息 |
--tcp-nodelay | 使用TCP_NODELAY选项 |
-w, --write-out < format > | 指定输出格式 |
keepalive
详情参考这里
tcp-nodelay
详情参考这里
参数选项
选项 | 说明 |
---|---|
-A, --user-agen | 设置用户代理标识 |
-B, --use-ascii | 使用ASCII编码传输 |
-d, --data < data > | HTTP POST 方式指定请求参数,和 --data-ascii 一样 |
--data-ascii < data > | 使用ascii的方式传递请求参数 |
--data-binary < data > | 使用二进制的方式传递请求参数 |
--data-urlencode | 对请求参数进行url编码 |
-e, --referer URL | 指定请求来源url |
-F, --form |
HTTP FORM 方式指定请求参数 |
--form-string | 和 --form ,只是' @ '、' < '、' ;type= ' 会失去特殊的含义 |
-g, --globoff | 关闭url部分的glob解析 |
-G, --get | 使得-d 类参数变为Get请求的参数,重复指定时第一个生效 |
-H, --header |
指定HTTP头信息 |
--ignore-content-length | 忽略 Content-Length 头信息 |
-K, --config |
指定读取请求参数的配置文件 |
-X, --request < command > | 指定请求方法类型 |
用户代理标识
详情参考这里
浏览器的编码
详情参考这里
http post
-d
的Content-Type
为application/x-www-form-urlencoded
-F
的Content-Type
为multipart/form-data
-F
支持使用分号分割多个参数,值的@
前缀代表上传文件
POST提交数据方式请参考这里
http header
详情参考这里
http method
详情参考这里
加密选项
选项 | 说明 |
---|---|
-1, --tlsv1 | 使用 TLS 1 |
--tlsv1.0 | 使用 TLS 1.0 |
--tlsv1.1 | 使用 TLS 1.1 |
--tlsv1.2 | 使用 TLS 1.2 |
-2, --sslv2 | 使用 SSL 2 |
-3, --sslv3 | 使用 SSL 3 |
--ciphers < list of ciphers > | 指定SSL通信使用的密钥 |
-E, --cert < certificate[:password] > | 指定SSL证书文件和密码 |
--cert-type < type> > | 指定SSL证书文件类型 (DER/PEM/ENG) |
--cacert < CA certificate > | 指定CA证书 |
--capath < CA certificate directory > | 指定CA证书目录 |
-k, --insecure | 允许不使用证书访问SSL站点 |
--key < key > | 指定SSL私钥文件 |
--key-type < key > | 指定SSL私钥文件类型(DER/PEM/ENG) |
--pass | 指定SSL私钥文件的密码 |
TLS和SSL
详情参考这里
认证选项
选项 | 说明 |
---|---|
-anyauth | 由curl来决定最好的身份验证方式 |
--basic | 使用 HTTP basic 验证身份 |
--digest | 使用 HTTP digest 验证身份 |
-u, --user < user:password > | 指定认证使用的用户名和密码 |
--krb < level > | FTP指定Kerberos认证级别 |
http认证
详情参考这里
Kerberos认证
详情参考这里
代理选项
选项 | 说明 |
---|---|
--noproxy | 指定访问不需要使用代理的主机列表 |
--proxy-anyauth | 在代理中由curl来决定最好的身份验证方式 |
--proxy-basic | 在代理中使用 HTTP basic 验证身份 |
--proxy-digest | 在代理中使用 HTTP digest 验证身份 |
-U, --proxy-user < user:password > | 指定代理使用的用户名和密码 |
--socks4 < host[:port] > | 使用socks4代理 |
--socks5 < host[:port] > | 使用socks5代理 |
http代理
详情参考这里
socks代理
详情参考这里
文件选项
选项 | 说明 |
---|---|
-a, --append | (FTP/SFTP)上传文件时使用追加模式 |
-C, --continue-at < offset > | 指定断点续传位置 |
--create-dirs | 保存下载时创建不存在的目录 |
--crlf | 上传时将 LF(换行) 转换为CRLF(回车换行) |
-J, --remote-header-name | 保存下载时使用Content-Disposition 头来决定文件名 |
-o, --output |
将结果保存到指定的文件中 |
-O, --remote-name | 将结果保存到指定的文件中 |
-l, --list-only | FTP只列出文件和目录 |
调试选项
选项 | 说明 |
---|---|
--trace < file > | 记录所有的输入输出数据 |
--trace-ascii < file > | 记录所有的输入输出数据的ASCII部分 |
--trace-time | 在记录中显示时间 |
参考
Linux curl命令详解
curl网站开发指南
HTTP Keep-Alive是什么?
TCP_NODELAY 和 TCP_NOPUSH的解释
总结整理时下流行的浏览器User-Agent大全
说说http协议中的编码和解码
四种常见的 POST 提交数据方式
HTTP头部详解
HTTP的请求方法
TLS和SSL详解
SSL与TLS的区别以及介绍
WEB 中的认证方式
Kerberos认证流程详解
什么是代理服务器
http请求细节和代理
HttpTunnel技术介绍
tcp和udp包穿透防火墙-Httptunnel
Shadowsocks原理和搭建
SOCKS5代理原理探索