732 字
4 分钟
cURL 命令使用指南
2024-12-07

简介#

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

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

cURL 命令使用指南
https://devniko.com/posts/curl-guide/
作者
Niko
发布于
2024-12-07
许可协议
CC BY-NC-SA 4.0