curl 是一个功能非常强大的命令行工具,用于在终端中进行网络请求(HTTP、HTTPS、FTP、SFTP、WebDAV 等)。下面是最常用的参数分类与示例说明
🧩 一、基本用法
curl [选项] [URL]
🌐 二、常用请求参数
| 参数 |
说明 |
示例 |
-X <命令> |
指定请求方法(如 GET、POST、PUT、DELETE) |
curl -X POST http://example.com |
-I |
仅获取响应头(HEAD 请求) |
curl -I https://example.com |
-L |
自动跟随重定向 |
curl -L https://example.com |
-k 或 --insecure |
忽略 SSL 证书验证(自签证书常用) |
curl -k https://example.com |
-v |
显示详细调试信息 |
curl -v https://example.com |
-s |
静默模式(不输出进度条或错误) |
curl -s https://example.com |
-# |
显示进度条 |
curl -# https://example.com |
📤 三、上传与下载
| 参数 |
说明 |
示例 |
-O |
以原文件名保存下载内容 |
curl -O https://example.com/file.zip |
-o <文件名> |
自定义输出文件名 |
curl -o local.zip https://example.com/file.zip |
-T <文件> |
上传文件(WebDAV / FTP) |
curl -T test.txt https://webdav.server.com/dir/ |
--upload-file <文件> |
同上(更直观) |
curl --upload-file test.txt https://example.com/upload/ |
🔑 四、认证与登录
| 参数 |
说明 |
示例 |
-u <用户名:密码> |
HTTP 基本认证 |
curl -u admin:123456 https://example.com |
--digest |
启用 HTTP Digest 认证 |
curl --digest -u user:pass https://example.com |
-H "Authorization: Bearer <token>" |
传递 Bearer Token |
curl -H "Authorization: Bearer abc123" https://api.example.com |
📦 五、发送数据(POST/PUT)
| 参数 |
说明 |
示例 |
-d <数据> |
发送表单数据(默认 application/x-www-form-urlencoded) |
curl -d "user=admin&pass=123" https://example.com/login |
--data-urlencode |
自动 URL 编码数据 |
curl --data-urlencode "msg=你好 世界" https://example.com |
-F <字段=@文件> |
上传文件表单(multipart/form-data) |
curl -F "file=@test.jpg" https://example.com/upload |
-H "Content-Type: application/json" -d '{"key":"value"}' |
发送 JSON 数据 |
curl -H "Content-Type: application/json" -d '{"a":1}' https://example.com/api |
🧱 六、自定义请求头
| 参数 |
说明 |
示例 |
-H "<Header>: <值>" |
添加 HTTP 请求头 |
curl -H "User-Agent: MyApp/1.0" https://example.com |
-e <URL> |
设置 Referer |
curl -e https://google.com https://example.com |
-A <字符串> |
自定义 User-Agent |
curl -A "Mozilla/5.0" https://example.com |
📡 七、代理与网络设置
| 参数 |
说明 |
示例 |
-x <代理> 或 --proxy |
使用代理 |
curl -x socks5://127.0.0.1:1080 https://example.com |
--proxy-user <用户名:密码> |
代理认证 |
curl -x http://proxy:8080 --proxy-user user:pass https://example.com |
--connect-timeout <秒> |
设置连接超时 |
curl --connect-timeout 10 https://example.com |
--max-time <秒> |
请求总超时 |
curl --max-time 30 https://example.com |
🧾 八、输出与调试
| 参数 |
说明 |
示例 |
-w "<格式>" |
自定义输出信息(如耗时、状态码) |
curl -w "code:%{http_code}\ntime:%{time_total}\n" -o /dev/null -s https://example.com |
-D <文件> |
保存响应头到文件 |
curl -D headers.txt https://example.com |
--trace <文件> |
保存完整调试日志 |
curl --trace trace.log https://example.com |
🧰 九、WebDAV 相关常用命令
| 功能 |
示例 |
| 上传文件 |
curl -T file.txt -u user:pass https://dav.example.com/path/ |
| 下载文件 |
curl -O -u user:pass https://dav.example.com/path/file.txt |
| 删除文件 |
curl -X DELETE -u user:pass https://dav.example.com/path/file.txt |
| 创建目录 |
curl -X MKCOL -u user:pass https://dav.example.com/path/newdir/ |
| 移动文件 |
curl -X MOVE -u user:pass -H "Destination: https://dav.example.com/path/newfile.txt" https://dav.example.com/path/oldfile.txt |