简介
curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本。
简单点说,curl就是以URL为基础的网络请求工具,支持绝大部分的应用层协议,官方Supports:
DICT,FILE,FTP,FTPS,Gopher,HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAPS,POP3,POP3S,RTMP,RTSP,SCP,SFTP,SMB,SMBS,SMTP,SMTPS,Telnet and TFTP. curl supports SSL certificates,HTTP POST,HTTP PUT,FTP uploading,HTTP form based upload,proxies,HTTP/2,cookies,user+password authentication (Basic,Plain,Digest,CRAM-MD5,NTLM,Negotiate and Kerberos),file transfer resume,proxy tunneling and more.
参数
列举常用的参数,详情可以使用man或查阅官网。
参数 | 含义 |
---|---|
-A/–user-agent | 设置用户代理,即HTTP请求头user-agent |
-b/–cookie | 设置cookie(以name=value 的形式,以; 分开),也可配合cookie文件(读取文件的话配合-D 使用) |
-X | 请求方法,默认GET |
-d/–data | 请求参数 |
-D,–dump-header | 导出响应头至指定文件 |
-e/–referer | 来源地址,即HTTP请求头referer |
–connect-timeout | 设置请求超时时间 |
–crlf | 上传是把LF转变成CRLF(回车换行) |
-F | 模拟表单提交,请求头为multipart/form-data |
-f/–fail | 连接失败时直接提示装填码 |
-G/–get | 以GET的方式来发送数据 |
-H/–header | 设置请求头,设置多个请求头需使用多个-H |
-L | 如果响应头有Location ,则客户端依此重定向 |
–ignore-content-length | 忽略HTTP头信息的长度 |
-I/–head | 只显示响应头信息 |
–limit-rate | 设置传输速度 |
-o 或 >重定向 | 设置文件输出位置 |
-# 或 –progress | 显示进度条,默认不显示 |
–retry-delay | 设置失败重试间隔时间 |
–retry-max-time | 设置失败最大重试时间 |
-s/–silent | 静默模式,不输出任何东西 |
用例
1.最简单的请求
curl http://baidu.com
2.下载中科大的ubuntu
镜像,显示进度条,并重命名为ubuntu64.iso
curl -# -o ubuntu64.iso http://219.238.7.69/files/21770000093D9255/d1sux8hvljkk5b.cloudfront.net/ubuntu-16.10-desktop-amd64.iso
3.带cookie请求(可用-H的cookie:"key:value;"
代替)
curl -d '' -b 'name=leo' http://localhost:8080/cookie 或 curl -d '' -H 'cookie:name=leo' http://localhost:8080/cookie
4.带cookie请求(读取本地文件)
curl -d '' -D head.txt http://localhost:8080/saveCookie #保存响应头至head.txt curl -d '' -b head.txt http://localhost:8080/cookie #带上刚才的响应头
5.POST带参数请求(application/x-www-form-urlencoded)
curl -d '' http://pingcai.me/api/login?n=123&p=123 或 curl -d 'n=123&p=123' http://localhost:8080/login
6.模拟表单提交(multipart/form-data)
curl -F upload=/tmp/a.txt -F n='tom' http://localhost:8080/upload #上传文件
7.POST带JSON数据
curl -d '{"name":"leo","passwd":"123"}' -H 'content-type:application/json' http://localhost:8080/json
8.下载Oracle的JDK(主要是-L和-H)