curl
工欲善其事必先利其器。
一、介绍:
curl,全称CommandLine URL。curl命令是在命令行方式下工作,利用URL的语法进行数据的传输或者文件的传输。它实际是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持多种协议包括 (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP),所以是综合传输工具,但按传统,习惯称cURL为下载工具。
二、用法:
查看帮助:curl —help
语法:curl [options…]
各类常见参数:
(目前只学了这么多,后续学到其它参数,再补充)
在指定参数后跟的值(如post传递参数,设置http请求头)时,请用双引号,不要用单引号。
参数 | 说明 |
(不跟参数) | 直接访问url并返回页面源码 |
-A | 指定User-Agnet,例:curl -A “Mozilla/5.0” |
-b | 向服务器发送cookie,例:curl -b “name=admin;level=high”。或curl -b cookie.txt 指定-c参数生成的cookie文件, |
-c | 将服务器设置的参数写入指定文件。例:curl -c cookie.txt |
-d/—data | 用于发送POST请求的数据体。使用-d参数时,请求头会自动加上”Conten-Type:application/x-www-form-urlencoded”,并且自动转为POST请求。例:curl -d “name=data” 或 curl -d “@from-data.txt”读取文件from-data.txt的数据。 |
—data-urlencode | 对POST数据进行url编码后发送,用法等同于-d参数,可直接替代-d参数 |
—data-ascii | 对POST数据进行ASCII编码后发送,同上 |
—data-binary | 对POST数据编码成二进制后发送,同上 |
-e | 指定Referer。例:curl -e “https://baidu.com” |
-F | 向服务器上传二进制文件。例:curl -F “file=@test.png” http://test.com HTTP请求会自动加上Content-Type: multipart/form-data,并将test.png做为file字段的值上传 |
-G | 和-d参数配合,用于构造url get型传参。例:curl -G -d “name=data” http://test.com,此时url被构造为http://test.com/?name=data,结合—data-urlencode可以进行url编码 |
-H/—header | 自定义添加HTTP请求头。例:curl -H “Accept-Language: zh”,可多次指定 |
-i | 显示HTTP响应头和页面源码。例:curl -i http://test.com |
-I/—head | 只显示HTTP响应,实际是用head方法请求目标url,等同于—head参数 |
-k | 跳过SSL检测 |
-L | 使HTTP请求跟随服务器重定向。curl默认不会跟随 |
—limit-rate | 用来限制HTTP请求和回应的带宽,用于模拟网速差的环境。例:curl —limit-rate 200k |
-o | 用于将服务器的回应保存到指定文件。例:curl -o test.html http://test.com |
-O | 用于将服务器的回应保存到文件(以url最后部分作为文件名)。例:curl -O http://test.com/index.php。 会自动在当前目录下保存为index.html。必须指定到目标文件 |
-s | 不输出错误和进度信息 |
-S | 只输出错误信息,与-s结合使用时,除非发生错误,否则没有任何输出 |
-u | 用来指定服务器认证的用户名和密码。例:curl -u “name:passwd” |
-v | 输出通信的整个过程,用于测试 |
-x | 指定HTTP请求代理,默认为HTTP代理,用法 -x [protocol://]host[:port] |
-X | 指定HTTP请求的方法 |
三、示例:
- 用单引号的问题
curl -A 'Mozilla/5.0' -d 'name=data' -x http://127.0.0.1:8080 http://test.com
此时发送的http请求数据包,指定的字段也会包含单引号
- -I参数实际上使用head方法请求,等同于—head参数
curl -I -x http://127.0.0.1:8080 http://test.com
- -O参数将 URL 的最后部分当作文件名,且必须指定到目标文件