【Shell】网络利器之 curl

来源:互联网 发布:网络有前景的项目 编辑:程序博客网 时间:2024/05/16 05:32

简介

    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.txtcurl -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)

比较复杂,参见:http://blog.csdn.net/gsls200808/article/details/52336745

原创粉丝点击