curl,全称CommandLine URL 或 CommandLine Uniform Resource Locator,顾名思义,curl命令是在命令行方式下工作,利用URL的语法进行数据的传输或者文件的传输。
这个命令行工具现在多用于Unix和Linux操作系统,是一个开源的工具,功能十分强大。
下面是crul的官方网站,我们可以该网站获取该工具的最新版本,还有最全面的使用方法。
https://curl.haxx.se/
从官网我们可以知道,该工具支持以下30多种类型的传输方式,这当中包含多种协议。
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
最常使用的有FILE、FTP、HTTP、HTTPS等协议。
对于程序员在说,在我们开发远程服务的时候,比如http传输,SOCKET等网络编程时,这个工具能非常方便的作为你的验证工具和测试工具。
比如下面是最简单的用法,通过这种方式获取一个页面。我输入的www.baidu.com甚至还不是一个完整的URL,因为没有指明所用的协议,curl智能地进行了选择。
运行后,返回的是一个百度主页的HTML代码。
curl www.baidu.com
本文主要还是介绍curl的一般用法,详细用法请参阅官网。
curl的用法跟一般的linux/Unix命令无异,一般语法如下。
crul -[选项] [URL]
1. -v 选项,--verbose,指定该选项后,可以跟踪URL的连接信息。我们可以根据这个选项看看curl是怎么工作的。
比如刚刚演示的那个百度链接,我们加入-v选项,就可以看看它是怎么工作的。
加上选项后返回的信息,包括很多重要信息:
域名解释过程:我们可以得到真正连接的IP地址和端口
请求头信息:其中有使用的协议(HTTP),协议的请求方式(GET)
回应头信息:包含状态码(200),内容格式(text/html),内容长度等
curl -v www.baidu.com
2.-i 选项,--include,把回应的头信息包含在内,跟-v大同小异,是-v的子集。
curl -i www.baidu.com
3.-I (大写i)选项,--head,只显示返回的头信息,与-v大同小异,是-v的子集。
curl -I www.baidu.com
4. -u 选项,带用户验证的连接。可以访问或获取带用户验证的URL。
curl -u username:password ftp://127.0.0.1/hello.txt
curl -u username ftp://127.0.0.1/hello.txt
curl -u username:password https://127.0.0.1/
5. -d 选项,带请求参数的连接。比如下面的URL,user=xiaoruan&age=22就是所带的参数。crul可以带请求参数。
http://127.0.0.1/index.html?user=xiaoruan&age=22
curl -d 'user=xiaoruan&age=22' http://127.0.0.1/index.html
这四种请求方式,对于在做RESTFUL接口开发和测试的人来说,非常方便。curl的用法如下:
curl -XGET www.baidu.com
curl -XPOST www.baidu.com
curl -XDELETE www.baidu.com
curl -XPUT www.baidu.com