linux之http命令行工具curl

简介: curl 是一个利用 URL 规则在命令行下进行文件传输工具。支持文件的上传和下载,是一个综合的传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。

curl


curl 是一个利用 URL 规则在命令行下进行文件传输工具。支持文件的上传和下载,是一个综合的传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。


格式


curl [option] [url]


常用参数


  • -X 指定 HTTP 请求的方法
  • -O 将服务器回应保存成文件
  • -o 将服务器的回应保存成文件,等同于wget命令
  • -H 添加 HTTP 请求的标头
  • -d 用于发送 POST 请求的数据体
  • -F 用来向服务器上传二进制文件


案例


  1. 将服务器的回应保存成文件,等同于wget命令


$ curl -o example.html https://www.ruanyifeng.com/blog/2019/09/curl-reference.html


上面命令将www.example.com保存成example.html


  1. 将服务器回应保存成文件,并将 URL 的最后部分当作文件名


$ curl -O https://www.ruanyifeng.com/blog/2019/09/curl-reference.html


上面命令将服务器回应保存成文件,文件名为curl-reference.html


  1. 添加 HTTP 请求头


curl -H 'Accept-Language: en-US' -H 'Secret-Message: omg' https://baidu.com


  1. 发送 POST 请求的数据体


$ curl -d 'login=BUG弄潮儿&password=admin' -X POST https://baidu.com/login
# 或者
$ curl -d 'login=BUG弄潮儿' -d 'password=admin' -X POST https://baidu.com/login


使用-d参数以后,HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded。并且会自动将请求转为 POST 方法,因此可以省略-X POST


-d参数可以读取本地文本文件的数据,向服务器发送。


$ curl -d '@data.txt' https://baidu.com/login


上面命令读取data.txt文件的内容,作为数据体向服务器发送。


  1. 向服务器上传二进制文件


$ curl -F 'file=@photo.png' https://baidu.com/profile


上面命令会给 HTTP 请求加上标头Content-Type: multipart/form-data,然后将文件photo.png作为file字段上传。


-F参数可以指定 MIME 类型。


$ curl -F 'file=@photo.png;type=image/png' https://baidu.com/profile


上面命令指定 MIME 类型为image/png,否则 curl 会把 MIME 类型设为application/octet-stream


-F参数也可以指定文件名。


$ curl -F 'file=@photo.png;filename=head.png' https://baidu.com/profile


上面命令中,原始文件名为photo.png,但是服务器接收到的文件名为head.png

相关文章
|
1月前
|
网络协议 Linux 网络安全
curl(http命令行工具):Linux下最强大的网络数据传输工具
curl(http命令行工具):Linux下最强大的网络数据传输工具
43 0
|
1月前
|
安全 Linux 网络安全
Linux使用HTTP隧道代理代码示例模版
Linux使用HTTP隧道代理代码示例模版
16 0
|
2月前
|
JSON 搜索推荐 网络协议
玩转curl指令—测试简单的HTTP接口
玩转curl指令—测试简单的HTTP接口
51 0
|
28天前
|
Shell Linux 网络安全
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 httpd命令 使用指南
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 httpd命令 使用指南
29 0
|
28天前
|
Shell Linux Apache
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 apachectl命令 使用教程
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 apachectl命令 使用教程
156 1
|
1月前
|
Linux 开发工具
949.【linux】常用的命令行工具
949.【linux】常用的命令行工具
13 2
|
2月前
|
网络协议 Linux
Linux下的网络编程——B/S模型HTTP(四)
Linux下的网络编程——B/S模型HTTP(四)
34 0
|
3月前
|
Linux
Linux/CentOS设置全局代理(http)
Linux/CentOS设置全局代理(http)
212 0
|
3月前
|
Web App开发 网络协议 Linux
Linux C/C++ 开发(学习笔记十 ):实现http请求器(TCP客户端)
Linux C/C++ 开发(学习笔记十 ):实现http请求器(TCP客户端)
47 0