curl是一个强大的命令行工具,用于发送HTTP请求并接收响应。它支持多种协议,并且具有广泛的用途,包括测试API、下载文件、上传数据等。以下是curl学习笔记的总结。
1. 基本用法
发送GET请求
curl http://example.com
发送POST请求
curl -X POST -d "param1=value1¶m2=value2" http://example.com/post
2. 常用参数
-H:设置请求头
curl -H "Content-Type: application/json" -X POST -d '{"key":"value"}' http://example.com/api
-u:设置用户名和密码(用于基本认证)
curl -u username:password http://example.com/protected
-o:保存输出到文件
curl -o output.html http://example.com
-L:跟随重定向
curl -L http://example.com/redirect
-v:显示详细输出信息
curl -v http://example.com
-i:显示响应头信息
curl -i http://example.com
-k 或 --insecure:允许连接到SSL站点而不验证证书
curl -k https://example.com
3. 数据发送
使用-d或–data发送表单数据
curl -d "param1=value1¶m2=value2" http://example.com/form
发送JSON数据
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' http://example.com/api
4. 文件上传
使用@
符号来指定要上传的文件。
curl -X POST -F "file=@/path/to/file.txt" http://example.com/upload
5. 代理设置
HTTP代理
curl -x http://proxy_user:proxy_password@proxy_host:proxy_port http://example.com
SOCKS代理
curl --socks5-hostname proxy_host:proxy_port http://example.com
6. 调试和测试
使用-v
和-i
参数可以方便地进行调试和测试。
7. 认证
除了基本认证(-u
)外,curl还支持其他认证方法,如摘要认证、OAuth等。
8. 自定义请求头
使用-H
参数可以自定义请求头。
9. 跟随引用(Referer)
使用-e
或--referer
参数设置Referer头。
curl -e http://referrer.com http://example.com
10. Cookie处理
使用-b
或--cookie
参数发送Cookie,或使用-c
或--cookie-jar
参数保存和加载Cookie。
11. 进度条
使用--progress-bar
参数可以在下载时显示进度条。
12. 超时设置
使用--connect-timeout
和--max-time
参数可以设置连接超时和最大执行时间。
13. 限制速度
使用--limit-rate
参数可以限制curl的传输速度。
14. 示例:使用curl下载文件并保存为指定名称
curl -O http://example.com/file.zip
15. curl脚本
curl可以很方便地集成到bash脚本中,用于自动化任务。
16. 通过curl获取您的公网ip
curl 提供返回ip的网址
# 例如:
curl https://checkip.amazonaws.com
curl https://api.ipify.org
curl https://ifconfig.me/ip
curl https://icanhazip.com
curl https://ipinfo.io/ip
curl https://ipecho.net/plain
curl https://checkipv4.dedyn.io
curl https://ipify.cn/
# 上边的地址都是可以直接返回您的公网ip的网址
17. 注意事项
- 当使用curl处理敏感数据时,确保连接是安全的(HTTPS)。
- 使用
-k
或--insecure
参数时请谨慎,因为它会忽略SSL证书验证,可能导致安全风险。 - 当发送POST请求时,确保正确设置Content-Type头,以便服务器能够正确解析数据。