简介
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》。