curl HTTP客户端

cURL是Linux下最常用的命令行HTTP客户端工具,软件包括命令行工具curl和开发库libcurl,cURL发布于1998年,作者是瑞典程序员Daniel Stenberg。

cURL支持很多种应用层网络协议,但最常用的还是作为HTTP/HTTPS客户端。curl命令的用途非常广泛,我们编写的Shell脚本经常使用curl实现网络功能,调试一些网络服务时curl也经常被用到。这篇笔记我们简单学习cURL命令行工具的用法。

基本用法

cURL工具支持非常多的命令行选项,这里我们以例子的形式进行介绍。

curl http://localhost/index.html

直接使用curl命令访问一个URL,会对资源地址发起一个HTTP GET请求。执行后,访问的页面就会打印在终端中。

跳过HTTPS证书验证

curl -k https://localhost/index.html

-k参数用于跳过HTTPS的证书验证,我们内网部署的一些服务可能使用的是自签名证书,此时用cURL工具调试时经常需要指定该参数。

打印HTTP请求的详细过程

curl -v http://localhost/index.html

-v参数能够打印出HTTP请求的详细过程

打印HTTP请求头

curl -H "Accept-Language: en-US" http://localhost/index.html

-H参数用于指定HTTP请求头

发送POST请求

curl http://localhost/api/v1/user -X POST -d "{\"username\": \"Tom\", \"age\": 18}"

上面命令发送了一个POST请求,数据部分以-d参数指定,为JSON格式。

使用代理发送请求

-x参数用于通过代理进行HTTP请求

curl https://ifconfig.me -x socks5://127.0.0.1:10808

该参数对于常用的HTTP、HTTPS、Socks5代理协议均支持。

发送form-data格式的POST请求

上传文件时通常使用form-data格式的POST请求,curl中可以使用-F参数添加form-data格式的表单字段。

curl http://localhost/upload -X POST -F "file=@test.jpg" -H "Content-Type: multipart/form-data"

curl@是一个特殊符号,用来指定要上传的文件的路径,上面我们使用的是相对路径,相对的是当前终端的工作路径(即pwd命令显示的路径),这里我们也可以使用绝对路径。

下载文件

下面例子我们通过cURL工具下载了data.zip文件。

curl http://localhost/data.zip -o data.zip

-o指定将返回数据下载下来,后面的参数指定了保存的文件名。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。