什么是 curl?
curl 是一个功能强大的命令行工具,用于传输数据,它支持多种协议(如 HTTP, HTTPS, FTP, FTPS, SCP, SFTP 等),是开发者、系统管理员和测试人员的常用工具。

在 Windows 10 (版本 1803 及更高版本) 和 Windows 11 中,curl 已经作为内置命令与 Invoke-WebRequest (PowerShell 命令) 一起预装,你可以在 CMD 或 PowerShell 中直接使用它。
重要提示:Windows 中的
curl实际上是Invoke-WebRequest的一个别名,它的行为和参数与 Linux/macOS 原生的curl略有不同,如果你需要使用原版curl,可以下载 cURL for Windows。
基础用法
最简单的 GET 请求
这是最常见的用法,用于获取一个网页或 API 的内容。
curl https://www.example.com
执行后,网页的 HTML 代码会直接打印在命令行窗口中。

保存下载的文件
使用 -o 或 -O 参数来保存文件。
-
-o(小写 o): 将输出保存到你指定的文件名中。curl -o my_page.html https://www.example.com
这会下载
example.com的首页并保存为my_page.html。 -
-O(大写 o): 使用服务器上的文件名来保存文件。
(图片来源网络,侵删)curl -O https://www.example.com/favicon.ico
这会下载
example.com的favicon.ico文件,并保持原文件名。
显示响应头信息
使用 -I 或 --head 参数只获取 HTTP 响应头,不获取响应体,这对于检查 API 状态、Content-Type、服务器信息等非常有用。
curl -I https://www.example.com
输出示例:
HTTP/2 200
server: nginx
date: Wed, 27 Sep 2025 10:00:00 GMT
content-type: text/html; charset=UTF-8
...
显示通信过程
使用 -v (verbose) 或 --trace 参数可以显示详细的通信过程,包括请求头、响应头和数据传输过程,这对于调试网络问题非常有帮助。
curl -v https://www.example.com
常用参数详解
| 参数 | 缩写 | 描述 | 示例 |
|---|---|---|---|
-d |
--data |
发送 POST 请求的数据。 | curl -d "name=user1&pass=123" https://api.example.com/login |
-H |
--header |
添加自定义的 HTTP 请求头。 | curl -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com/data |
-L |
--location |
跟随服务器的重定向 (3xx 响应)。 | curl -L https://short.link/abc |
-k |
--insecure |
允许不安全的 SSL/TLS 连接(即忽略证书验证)。仅用于测试环境! | curl -k https://self-signed.badssl.com |
-s |
--silent |
静默模式,不显示进度表和错误信息。 | curl -s https://api.example.com/status |
-f |
--fail |
如果服务器返回 HTTP 错误码 (4xx, 5xx),则静默失败,不输出内容。 | curl -f https://api.example.com/not-found (如果返回 404,则无任何输出) |
-m |
--max-time |
设置最大传输时间(秒)。 | curl -m 10 https://api.example.com/slow-request |
-u |
--user |
设置用户名和密码,用于 HTTP 基本认证。 | curl -u "username:password" https://api.example.com/protected |
-b |
--cookie |
从文件中读取 cookie 或发送 cookie 数据。 | curl -b cookies.txt https://api.example.com/profile |
-c |
--cookie-jar |
操作结束后,将 cookie 保存到文件中。 | curl -c cookies.txt https://api.example.com/login |
常见场景示例
场景 1:调用一个 REST API (POST JSON)
假设我们要向一个 API 发送一个 JSON 对象。
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{
"name": "John Doe",
"email": "john.doe@example.com"
}'
-X POST: 显式指定请求方法为 POST。-H: 设置Content-Type为application/json,告诉服务器我们发送的是 JSON 数据。-d: 携带要发送的 JSON 字符串。
场景 2:从 API 获取数据并保存为 JSON 文件
curl -s "https://api.github.com/users/octocat" -o octocat_profile.json
-s: 静默模式,让输出更干净。-o: 将结果保存到octocat_profile.json文件中。
场景 3:使用用户名和密码访问受保护的资源
curl -u "myuser:mysecretpassword" https://api.example.com/protected-data
-u: 提供用户名和密码。curl会自动使用 HTTP Basic Auth。
场景 4:下载一个文件并显示进度条
默认情况下,curl 在 Windows CMD 中会显示一个简单的进度条,如果你想在 PowerShell 中看到更友好的进度,可以结合 Measure-Object。
但在 CMD 中,直接使用即可:
curl -o large_file.zip https://example.com/large_file.zip
在 CMD 和 PowerShell 中的细微差别
虽然 curl 在两者中都能用,但 PowerShell 会优先将其解释为 Invoke-WebRequest 的别名。
| 特性 | CMD | PowerShell |
|---|---|---|
| 默认输出 | 直接输出文本。 | 默认输出一个复杂的对象,需要用 Select-Object 或管道 来格式化。 |
原生 curl |
需要从官网下载并配置环境变量。 | 同样需要下载。 |
| 推荐命令 | curl |
curl (简单请求) 或 Invoke-WebRequest (需要处理复杂对象时) |
PowerShell 中使用 curl 的示例:
如果你在 PowerShell 中执行 curl -d "test" https://example.com,它会调用 Invoke-WebRequest,并返回一个对象,如果你想看到原始文本输出,可以这样做:
# 在 PowerShell 中获取原始文本输出 curl -uri "https://api.example.com" | Select-Object -ExpandProperty Content
如何获取原版 cURL (可选)
如果你习惯于 Linux/macOS 上的 curl,或者需要使用 Windows 版本不支持的原生参数,可以下载官方版本。
- 下载:访问 cURL for Windows 下载页面,下载
curl for Windows (64-bit)。 - 解压:将下载的
.zip文件解压到一个固定目录,C:\curl。 - 配置环境变量:
- 右键点击“此电脑” -> “属性” -> “高级系统设置” -> “环境变量”。
- 在“系统变量”中找到
Path变量,点击“编辑”。 - 点击“新建”,然后添加
curl.exe所在的路径,C:\curl\bin。 - 依次点击“确定”保存所有设置。
- 验证:重新打开一个 CMD 或 PowerShell 窗口,输入
curl --version,如果显示版本信息,则安装成功。
你可以使用功能更全面的 curl 了,-x (代理) 等。
| 任务 | 命令 |
|---|---|
| 获取网页内容 | curl https://www.example.com |
| 下载并保存文件 | curl -o filename.html https://www.example.com |
| 获取响应头 | curl -I https://www.example.com |
| 发送 POST JSON 数据 | curl -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com |
| 跟随重定向 | curl -L https://short.link |
| 忽略 SSL 证书(测试用) | curl -k https://untrusted.site |
希望这份详细的指南能帮助您在 Windows 上熟练使用 curl 命令!
