curl⚓︎
约 618 个字 65 行代码 预计阅读时间 4 分钟
参考资料
- curl 初学者教程 - by 阮一峰
- curl 的用法指南 - by 阮一峰
- Curl Cookbook
curl 意为客户端 (client) URL 工具,是一种命令行工具,用来请求 Web 服务器。以下是 curl 的一些可用参数:
注意
下面涉及到的 URL 不一定是真实的 URL,有些是随便杜撰出来的 ......
-A
指定客户端的用户代理 ( User-Agent
) 标头,默认用户代理字符串是 curl/[version]
-b
指定要发送的 Cookie
- 可以发送多个 Cookie,中间用分号间隔
- 也可以发送带 Cookie 的文件
-d / --data-urlencode
发送 POST 请求的数据体
- 此时会自动加上标头
Content-Type: application/x-www-form-urlencoded
- 并且将请求方法自动设置为 POST,因此下面的
-X POST
可省略 - 两者的唯一区别在于后者会将数据进行 URL 编码
$ curl -d 'login=name&password=123456' -X POST https://example.com/login
# 或者
$ curl -d 'login=name' -d 'password=123456' -X POST https://example.com/login
# 读取文件(data.txt)
$ curl -d '@data.txt' https://example.com/login
# 数据 'hello world' 中的空格会转为 URL 编码 %20
$ curl --data-urlencode 'comment=hello world' https://example.com/comments
-F
上传二进制文件(图片、音频、视频等文件)
# 上传文件 photo.png
$ curl -F '[email protected]' https://blog.com/profile
- 此时会自动添加标头
Content-Type: multipart/form-data
- 也可以指定 MIME 类型(不设置的话默认为
application/octet-stream
)
# MIME 类型为 image/png
$ curl -F '[email protected];type=image/png' https://blog.com/profile
- 还可以指定服务器接收到的文件名
# 原始文件名为 photo.png,服务器接收到的文件名为 picture.png
$ curl -F '[email protected];filename=picture.png' https://blog.com/profile
-G
构造 URL 查询字符串
-H
添加指定的 HTTP 请求标头
--limit-rate
限制 HTTP 请求和回应的带宽,可用于模拟慢网速的环境
-s
不输出错误和进度信息,不发生错误的话会正常显示运行结果
-u
设置服务器认证的用户名和密码
- 事实上,
curl
可以自动识别 URL 中的用户名和密码
# 等价于上一条命令
$ curl https://noughtq:[email protected]/login
- 可以仅设置用户名,但 curl 会提示输入密码
-v / --trace
输出通信的全过程,用于调试
--trace
还会输出原始的二进制数据
-x
指定 HTTP 请求代理(若未指定,默认为 HTTP)
# 该请求通过 myproxy.com:8080 的 socks5 代理发出
$ curl -x socks5://james:[email protected]:8080 https://example.com
评论区
如果大家有什么问题或想法,欢迎在下方留言~