菜鸟科技网

libcurl命令有哪些常用参数与用法?

curl 是一个极其强大和流行的命令行工具,用于传输数据,它支持众多协议,包括 HTTP, HTTPS, FTP, FTPS, SCP, SFTP, LDAP, LDAPS, DICT, TELNET, FILE, and IMAP,它几乎是 Linux、macOS 和其他类 Unix 系统的标准工具,在 Windows 上也可以轻松获取。

libcurl命令有哪些常用参数与用法?-图1
(图片来源网络,侵删)

下面我将详细介绍 curl 命令的各种常用用法和选项。


基本用法

1 发送一个简单的 GET 请求

这是最常见的用法,获取指定 URL 的内容。

curl https://www.example.com

这会直接将 https://www.example.com 的 HTML 内容打印到终端(标准输出)。

2 将输出保存到文件

使用 -o--output 选项可以将响应内容保存到文件。

libcurl命令有哪些常用参数与用法?-图2
(图片来源网络,侵删)
curl -o example.html https://www.example.com
# 或者使用 --output
curl --output example.html https://www.example.com

3 显示进度条

对于大文件下载,使用 或 --progress-bar 可以显示一个友好的进度条。

curl -# -o large_file.zip https://example.com/large_file.zip

4 只显示 HTTP 状态码

如果你只想知道请求是否成功(用于脚本检查),可以使用 -s(静默模式)和 -w(写入格式)选项组合。

# -s 让 curl 不显示进度条和错误信息,只显示 -w 指定的格式
# \r\n 是换行符
curl -s -w "%{http_code}\n" -o /dev/null https://www.example.com
# 输出将会是 200

-o /dev/null 表示将响应体丢弃,因为我们只关心状态码。

5 显示详细的请求/响应信息

使用 -v(verbose)或 --trace 可以看到 curl 发送的请求头和接收到的响应头,这对于调试非常有用。

libcurl命令有哪些常用参数与用法?-图3
(图片来源网络,侵删)
curl -v https://www.example.com

你会看到类似这样的输出:

  • > 开头的行是 curl 发送给服务器的请求头。
  • < 开头的行是服务器返回给 curl 的响应头。

HTTP/HTTPS 相关用法

1 发送 POST 请求

使用 -d--data 选项可以发送 POST 请求。

# 发送简单的表单数据
curl -d "name=John&age=30" -X POST https://example.com/api/users
# -X POST 可以省略,因为 -d 会自动将请求方法设为 POST
curl -d "name=John&age=30" https://example.com/api/users

2 发送 JSON 数据

发送 JSON 数据时,通常需要设置 Content-Type 请求头。

curl -H "Content-Type: application/json" \
     -d '{"name": "John", "age": 30}' \
     https://example.com/api/users

3 添加自定义请求头

使用 -H--header 选项可以添加自定义的 HTTP 头。

curl -H "X-Custom-Header: my-value" \
     -H "Authorization: Bearer my_token" \
     https://example.com/api/protected

4 处理 Cookies

-b--cookie 用于发送 cookies,-c--cookie-jar 用于保存服务器返回的 cookies。

# 从文件 cookies.txt 中读取 cookies 并发送
curl -b cookies.txt https://example.com/login
# 将服务器返回的 cookies 保存到 cookies.txt 文件
curl -c cookies.txt https://example.com/login

5 发送文件

使用 -F--form 选项可以模拟表单上传文件。

# 上传一个名为 profile.jpg 的图片
curl -F "file=@profile.jpg" https://example.com/upload

6 处理重定向

默认情况下,curl 会跟随 HTTP 的重定向(如 301, 302),使用 -L--location 可以强制跟随,这对于处理需要多次跳转的 URL 很有用。

curl -L https://short.url/abc123

7 指定 User-Agent

使用 -A--user-agent 可以模拟浏览器或其他客户端。

curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" \
     https://www.example.com

FTP 相关用法

1 从服务器下载文件

curl -u username:password -O ftp://ftp.example.com/path/to/file.zip
# -O 会用服务器上的文件名作为本地文件名

2 上传文件到服务器

curl -T local_file.txt -u username:password ftp://ftp.example.com/path/to/
# -T 指定要上传的本地文件

常用选项速查表

选项 长选项 描述
-d --data POST 发送数据
-H --header 添加自定义请求头
-I --head 只获取响应头,不获取响应体 (HEAD 请求)
-i --include 在输出中包含响应头
-L --location 跟随服务器重定向
-o --output 将输出保存到文件
-O --remote-name 使用服务器上的文件名保存
-s --silent 静默模式,不显示进度条或错误信息
-v --verbose 详细模式,显示请求/响应头
-w --write-out 使用指定格式输出信息(如状态码、时间等)
--progress-bar 显示进度条
-X --request 指定请求方法 (如 GET, POST, PUT)
-u --user 指定用户名和密码 (用于认证)
-b --cookie 从文件中读取 cookies 并发送
-c --cookie-jar 将服务器返回的 cookies 保存到文件
-F --form 模拟表单上传数据或文件
-k --insecure 允许不安全的 SSL 证书连接(忽略证书验证)
-A --user-agent 设置 User-Agent 请求头

实战示例

示例1:检查一个 API 是否可用并返回状态码

# 简洁地获取状态码,不下载响应体
curl -s -o /dev/null -w "%{http_code}" https://api.github.com
# 输出可能是 200

示例2:从 GitHub 获取你的用户信息(需要认证)

# 将 YOUR_TOKEN 替换为你的 Personal Access Token
curl -H "Authorization: token YOUR_TOKEN" https://api.github.com/user

示例3:向一个 API 端点发送 JSON 数据并保存响应

curl -X POST \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer YOUR_API_KEY" \
     -d '{"title": "My New Post", "body": "This is the content."}' \
     -o response.json \
     https://api.example.com/v1/posts

curl 是一个功能极其丰富的工具,以上只是冰山一角,要查看所有选项和更详细的说明,可以随时使用 man curl 命令(在 Linux/macOS 上)或 curl --help

掌握 curl 对于开发者、系统管理员和网络工程师来说是一项必备技能,它在调试 API、测试服务器、编写自动化脚本等方面都发挥着不可替代的作用。

分享:
扫描分享到社交APP
上一篇
下一篇