curl 是一个强大的命令行工具,用于传输数据,支持多种协议。无论是日常开发还是系统调试,curl 都是必备工具。 今天就来分享一些实用的 curl 命令实例。
最简单的用法是直接获取网页内容:
$ curl baidu.com
<ahref="http://www.baidu.com/">Moved Permanently</a>.使用 -o 参数将网页保存为文件,功能类似 wget:
$ curl -o baidu.html baidu.com-i 参数显示HTTP响应头信息和网页内容:
$ curl -i baidu.com
HTTP/1.1301MovedPermanently
Location: http://www.baidu.com/
Date:Thu,04Dec202516:32:41 GMT
Content-Length:56
Content-Type: text/html; charset=utf-8
<ahref="http://www.baidu.com/">Moved Permanently</a>.-v 参数展示整个HTTP通信过程,包括连接建立、请求头、响应头等详细信息:
$ curl -v baidu.com
*Host baidu.com:80 was resolved.
*IPv6:(none)
*IPv4:124.237.177.164,111.63.65.103,111.63.65.247,110.242.74.102
*Trying124.237.177.164:80...
*Connected to baidu.com (124.237.177.164) port 80
> GET / HTTP/1.1
>Host: baidu.com
>User-Agent: curl/8.7.1
>Accept:*/*
>
*Request completely sent off
< HTTP/1.1 301 Moved Permanently
< Location: http://www.baidu.com/
< Date: Thu, 04 Dec 2025 16:33:59 GMT
< Content-Length: 56
< Content-Type: text/html; charset=utf-8
<
<ahref="http://www.baidu.com/">Moved Permanently</a>.httpbin.org是极佳的HTTP测试工具,以下是一些常用场景:
# 获取公网IP
$ curl http://httpbin.org/ip
# 查看请求头信息
$ curl http://httpbin.org/headers
# 查看客户端类型
$ curl http://httpbin.org/user-agent# GET请求传参
$ curl "http://httpbin.org/get?name=Tom&age=25"
# POST请求提交数据
$ curl -X POST http://httpbin.org/post -d "name=Tom" -d "age=25"
# 提交JSON数据
$ curl -X POST http://httpbin.org/post \
-H "Content-Type: application/json" \
-d '{"name":"Tom","age":25}'# 测试特定状态码
$ curl -I http://httpbin.org/status/404
# 跟随重定向
$ curl -L http://httpbin.org/redirect/3# 查看当前Cookie
$ curl http://httpbin.org/cookies
# 设置Cookie
$ curl "http://httpbin.org/cookies/set?session=12345&user=tom"# 获取随机数据
$ curl http://httpbin.org/bytes/100
# 下载图片
$ curl http://httpbin.org/image/png -o image.png
# 流式传输测试
$ curl http://httpbin.org/stream/10$ curl --limit-rate 100k http://example.com/file.zip -o file.zip$ curl -C - http://example.com/file.zip -o file.zip$ curl --connect-timeout 10--max-time 30 http://example.com--connect-timeout 10:TCP 连接建立超时, 设置 curl 与目标服务器建立 TCP 连接的最大等待时间(单位:秒)。
仅针对「TCP 三次握手建立连接」这个环节,不包含:
•DNS 解析(部分 curl 版本可通过 --dns-timeout 单独控制);•连接建立后的 HTTP 请求发送、响应接收、数据传输等过程。
如果 curl 尝试连接 example.com 的服务器时,在 10 秒内没能完成 TCP 连接(比如网络中断、服务器端口未开放、目标主机不可达等),curl 会直接终止操作并返回连接超时错误,不会继续后续步骤。
--max-time 30:整个请求的总超时, 设置 curl 整个操作生命周期的最大耗时(单位:秒),是“全局超时兜底”。
覆盖 curl 从启动到结束的所有环节: DNS 解析 → TCP 连接建立 → 发送 HTTP 请求 → 接收响应头 → 接收响应体(数据传输)。
无论前面的步骤是否成功(比如 TCP 连接在 8 秒内完成,但后续接收大响应数据花了 25 秒),只要整个操作总耗时超过 30 秒,curl 会强制终止并返回总超时错误。
curl 的功能远不止于此,它还支持 FTP、SMTP 等多种协议,是每个开发者和系统管理员都应该掌握的神器。 通过 httpbin.org 这个优秀的测试平台,我们可以安全地练习各种网络请求场景。
建议大家在本地环境中实际运行这些命令,去体验 curl 的强大功能。熟能生巧,相信很快你就能在网络调试中游刃有余!
本文示例基于 Linux/macOS 环境,Windows 用户建议使用 Git Bash 或 WSL 获得相同体验。