ysf
ysf
Published on 2021-08-16 / 3 Visits
0

curl:命令行工具

简介

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后端支持。

核心特性:

  1. 协议支持广泛

    • 支持26+种协议,包括HTTP、HTTPS、FTP、FTPS、SFTP、SCP、TFTP、Gopher、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP、RTSP、MQTT和SMB等。

  2. 功能强大且灵活

    • 支持SSL/TLS认证:可处理安全连接,验证服务器证书。

    • 多种身份验证机制:包括Basic、Digest、NTLM、Kerberos、OAuth等。

    • 断点续传:支持从上次中断位置继续下载大文件。

    • 自定义请求头:可设置User-Agent、Content-Type、Authorization等。

    • 多线程支持:可提高并发请求效率。

  3. 跨平台兼容

    • 预装在几乎所有Linux发行版中,也可在Windows、macOS等系统上安装使用。

    • Windows 10/11已内置curl,可直接在PowerShell或CMD中使用。

基本用法与常用命令

基本请求

GET请求(默认)

curl https://example.com

POST请求

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"