Curl 命令使用简介

2021-04-29 linux network command

常用的 curl 相关命令整理。

简介

curl 用于向服务器传输数据,它支持 http、https、ftp、ftps、scp、sftp、tftp、telnet 等协议。

常见示例

----- 查看源码,保存到某个文件;默认输出到终端
$ curl -o filename www.sina.com

----- 自动调转到新地址,会自动跳转为www.sina.com.cn
$ curl -L www.sina.com

----- 显示头信息以及网页代码,如果只查看头则可以使用-I参数
$ curl -i www.sina.com

----- 显示通信过程,通过-v可显示http通信的整个过程,包括端口连接和http request头信息
$ curl -v www.sina.com                             # 显示交互信息
$ curl --trace output.txt www.sina.com             # 显示更加信息的信息
$ curl --trace-ascii output.txt www.sina.com

----- 发送GET表单
$ curl www.example.com/form.cgi?data=xxx

----- 发送POST表单信息,需要把数据和网址分开,也就是--data参数,通过第一个参数对表单编码
$ curl --data-urlencode --data "data=April 1" www.example.com/form.cgi
$ curl -H "Content-Type: application/json" -X POST   \
	-d '{"userid":"123","address":100}' http://127.0.0.1:8001/test

各阶段时间

可以通过如下方式检查 HTTP 请求各个阶段的耗时。

-w 在执行完成后,按照指定的格式将信息输出到终端,更多参数可以查看man(1) curl
  time_namelookup DNS解析域名的时间 
  time_connect 客户端和服务端建立TCP连接的时间
  time_starttransfer 从客户端发出请求到收到服务端响应第一个字节的时间
  time_total 从客户端发出请求到收到服务端收到所有字节的时间
  speed_download 下载速度单位是B/s

$ curl -o /dev/null -s -w "%{time_namelookup}:%{time_connect}:%{time_starttransfer}:%{time_total}\n" \
	http://www.baidu.com