简介
curl(Client URL)是一个开源的命令行工具,利用URL语法在命令行下工作文件传输工具。curl不仅支持文件下载,也支持上传功能,是一个综合传输工具。
历史发展:
1997年:由Daniel Stenberg创建,最初用于获取货币汇率。
1998年:curl 4.0发布,代码量约2,200行。
2000年:迁移到自建站点curl.haxx.se。
2016年:默认使用HTTP/2进行传输。
2020年:获得并行传输能力,以JSON格式输出数据。
2024年:移除由Rust语言编写的HyperHTTP后端支持。
核心特性:
协议支持广泛
支持26+种协议,包括HTTP、HTTPS、FTP、FTPS、SFTP、SCP、TFTP、Gopher、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP、RTSP、MQTT和SMB等。
功能强大且灵活
支持SSL/TLS认证:可处理安全连接,验证服务器证书。
多种身份验证机制:包括Basic、Digest、NTLM、Kerberos、OAuth等。
断点续传:支持从上次中断位置继续下载大文件。
自定义请求头:可设置User-Agent、Content-Type、Authorization等。
多线程支持:可提高并发请求效率。
跨平台兼容
预装在几乎所有Linux发行版中,也可在Windows、macOS等系统上安装使用。
Windows 10/11已内置curl,可直接在PowerShell或CMD中使用。
基本用法与常用命令
基本请求
GET请求(默认)
curl https://example.comPOST请求
curl -X POST -d "key=value" https://api.example.com/data-X指定方法,-d发送数据。
文件操作
下载文件
curl -o example.html https://example.com-o将文件保存到指定位置。如果不指定
此外,curl 还支持断点续传,下载大文件时网络中断可恢复下载进度:
curl -C - -O https://example.com/bigfile.zip上传文件
curl -F "file=@/path/to/localfile.log" https://example.com/upload-F用于发送multipart/form-data数据。
调试与查看信息
查看响应头
curl -I https://example.com仅显示HTTP响应头信息。
详细调试模式
curl -v https://example.com-v显示整个通信过程,包括DNS解析、TCP连接、TLS握手等。
其他场景
API测试与开发
curl 可以替代 Postman等图形界面测试工具进行API测试
例如:发送JSON数据调用RESTful API
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{"name":"Alice", "email":"alice@example.com"}' \
https://api.example.com/v1/users网络问题诊断
当遇到网络问题时,curl可作为第一响应工具,快速检查服务器连接、SSL证书等问题。
例如,检查SSL证书问题:
curl -v https://example.com自动化脚本
curl 可以集成到shell脚本、CI/CD管道中,用于健康检查、数据抓取、自动化测试等
例如,检查网站可用性
curl -s -o /dev/null https://example.com && echo "website available"