curl
是一个用于从命令行传输数据的强大工具,支持多种协议(如 HTTP、HTTPS、FTP 等)。它常用于测试 API、下载文件、提交表单、模拟浏览器请求等操作。
基本语法
curl [选项] [URL]
常用选项
以下是一些常用的 curl
命令选项及其功能:
选项 | 功能说明 |
---|---|
-X 或 --request | 指定 HTTP 方法(如 GET、POST、PUT、DELETE) |
-d 或 --data | 发送数据(通常用于 POST 请求) |
-H 或 --header | 添加 HTTP 头部信息 |
-i 或 --include | 在输出中包含 HTTP 响应头部 |
-I 或 --head | 只请求 HTTP 头部 |
-L 或 --location | 跟随重定向 |
-o 或 --output | 将输出保存到文件 |
-u 或 --user | 指定用户名和密码(如 -u user:password ) |
-k 或 --insecure | 忽略 SSL 证书验证 |
-s 或 --silent | 静默模式(不显示进度条或错误信息) |
-v 或 --verbose | 显示详细调试信息 |
-w 或 --write-out | 输出格式化的响应信息 |
-x 或 --proxy | 使用代理服务器 |
常见使用示例
1. 发送 GET 请求
curl http://example.com
2. 发送 POST 请求
curl -X POST -d "name=John&age=30" http://example.com/api
3. 发送 JSON 数据
curl -X POST -H "Content-Type: application/json" -d '{"name":"John","age":30}' http://example.com/api
4. 添加自定义 HTTP 头部
curl -H "Authorization: Bearer YOUR_TOKEN" http://example.com/api
5. 下载文件
curl -O http://example.com/file.zip
6. 保存响应到文件
curl -o output.html http://example.com
7. 跟随重定向
curl -L http://example.com
8. 输出响应的 HTTP 头部
curl -I http://example.com
9. 使用代理
curl -x http://proxyserver:8080 http://example.com
10. 使用用户名和密码进行认证
curl -u username:password http://example.com/protected
11. 忽略 SSL 证书验证
curl -k https://self-signed.badssl.com/
实用技巧
查看响应时间
curl -w "Time Total: %{time_total}s\n" -o /dev/null -s http://example.com
同时发送多个 HTTP 头部
curl -H "Accept: application/json" -H "Authorization: Bearer token" http://example.com/api
调试请求
curl -v http://example.com
下载多个文件
curl -O http://example.com/file1.zip -O http://example.com/file2.zip
实际应用案例
-
测试 RESTful API:
curl -X GET http://localhost:8080/api/users curl -X POST -H "Content-Type: application/json" -d '{"username":"admin"}' http://localhost:8080/api/login
-
模拟浏览器请求:
curl -A "Mozilla/5.0" http://example.com
-
下载大文件并显示进度:
curl -O -# http://example.com/largefile.zip
curl
vs wget
curl
:功能更丰富,适合 API 调试、数据传输和文件上传。wget
:专注于下载文件,支持递归下载和镜像网站。
curl
是一个功能强大的工具,适合处理各种网络请求操作。掌握它可以大大提升开发和调试的效率。
用来访问网页
携带post数据
下载文件