简介
cURL
是一款强大的命令行工具,用于向 Web 服务器发起请求。其全称为“Client URL”,具备丰富的功能,可支持多种协议(HTTP、HTTPS、FTP 等),常用于测试 API 和调试网络请求。
如果熟练使用 cURL
,可以完全替代类似 Postman 的图形界面工具。本文总结了 cURL
常用参数,内容参考《cURL Cookbook》,适合日常查阅。
基本使用
直接使用 curl
命令,不带任何参数时,默认发出 GET 请求,并将服务器返回结果输出至终端:
curl https://www.example.com
参数详解
1. 自定义请求标头
-A
(User-Agent)
指定客户端的 User-Agent
标头:
curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" https://www.example.com
- 移除
User-Agent
:curl -A "" https://www.example.com
- 通过
-H
参数直接设置:curl -H "User-Agent: php/1.0" https://www.example.com
-H
(Headers)
添加自定义 HTTP 标头:
curl -H "Accept-Language: en-US" https://www.example.com
支持添加多个标头:
curl -H "Header1: value1" -H "Header2: value2" https://www.example.com
-e
(Referer)
设置 HTTP 的 Referer
标头:
curl -e "https://google.com" https://www.example.com
2. Cookie 操作
-b
(Send Cookies)
发送 Cookie 数据:
curl -b "key1=value1; key2=value2" https://www.example.com
从文件中读取 Cookie:
curl -b cookies.txt https://www.example.com
-c
(Save Cookies)
保存服务器返回的 Cookie 到文件:
curl -c cookies.txt https://www.example.com
3. 数据发送
-d
(POST Data)
发送 POST 数据(自动添加 Content-Type: application/x-www-form-urlencoded
):
curl -d "key1=value1&key2=value2" https://www.example.com
从文件读取 POST 数据:
curl -d "@data.txt" https://www.example.com
--data-urlencode
发送 URL 编码的数据:
curl --data-urlencode "comment=hello world" https://www.example.com
-F
(File Upload)
上传文件(会添加 Content-Type: multipart/form-data
):
curl -F "file=@photo.png" https://www.example.com
指定 MIME 类型和文件名:
curl -F "file=@photo.png;type=image/png;filename=image.png" https://www.example.com
4. 请求方法
-X
(Request Method)
明确指定 HTTP 方法:
curl -X POST https://www.example.com
5. URL 构造
-G
(GET Parameters)
构造 GET 请求的查询字符串:
curl -G -d "q=example" -d "page=2" https://www.example.com
与 --data-urlencode
结合使用:
curl -G --data-urlencode "search=hello world" https://www.example.com
6. SSL
-k
(Skip SSL Check)
忽略 SSL 证书验证(不安全,仅测试用途):
curl -k https://www.example.com
7. 重定向
-L
(Follow Redirects)
跟随服务器的 HTTP 重定向:
curl -L https://www.example.com
8. 带宽控制
--limit-rate
限制请求和响应的带宽:
curl --limit-rate 200k https://www.example.com
9. 文件保存
-o
(Output File)
保存响应内容为指定文件:
curl -o result.html https://www.example.com
-O
(Save as Filename)
保存文件并使用 URL 中的文件名:
curl -O https://www.example.com/file.zip
10. 调试与信息
-i
(Show Response Headers)
显示服务器返回的 HTTP 标头:
curl -i https://www.example.com
-I
(HEAD Request)
发送 HEAD 请求,仅返回响应标头:
curl -I https://www.example.com
-v
(Verbose)
详细输出整个请求和响应的过程:
curl -v https://www.example.com
--trace
调试模式,输出详细原始数据(包括二进制):
curl --trace trace.txt https://www.example.com
11. 代理
-x
(Proxy)
通过代理服务器发出请求:
curl -x socks5://user:password@proxy.com:8080 https://www.example.com
12. 认证
-u
(Basic Auth)
提供用户名和密码:
curl -u "user:password" https://www.example.com/login
支持 URL 中直接嵌入用户名密码:
curl https://user:password@www.example.com/login
13. 静默模式
-s
(Silent)
隐藏进度条与错误信息:
curl -s https://www.example.com
仅输出错误信息:
curl -sS https://www.example.com
总结
cURL
是网络调试、API 开发的重要工具。通过灵活组合参数,可以高效完成各种 HTTP 请求和文件操作。更多高级用法可以参考 官方文档 或深入学习《cURL Cookbook》。