菜鸟科技网

curl windows 命令

什么是 curl

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

curl windows 命令-图1
(图片来源网络,侵删)

在 Windows 10 (版本 1803 及更高版本) 和 Windows 11 中,curl 已经作为内置命令与 Invoke-WebRequest (PowerShell 命令) 一起预装,你可以在 CMDPowerShell 中直接使用它。

重要提示:Windows 中的 curl 实际上是 Invoke-WebRequest 的一个别名,它的行为和参数与 Linux/macOS 原生的 curl 略有不同,如果你需要使用原版 curl,可以下载 cURL for Windows


基础用法

最简单的 GET 请求

这是最常见的用法,用于获取一个网页或 API 的内容。

curl https://www.example.com

执行后,网页的 HTML 代码会直接打印在命令行窗口中。

curl windows 命令-图2
(图片来源网络,侵删)

保存下载的文件

使用 -o-O 参数来保存文件。

  • -o (小写 o): 将输出保存到你指定的文件名中。

    curl -o my_page.html https://www.example.com

    这会下载 example.com 的首页并保存为 my_page.html

  • -O (大写 o): 使用服务器上的文件名来保存文件。

    curl windows 命令-图3
    (图片来源网络,侵删)
    curl -O https://www.example.com/favicon.ico

    这会下载 example.comfavicon.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-Typeapplication/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 版本不支持的原生参数,可以下载官方版本。

  1. 下载:访问 cURL for Windows 下载页面,下载 curl for Windows (64-bit)
  2. 解压:将下载的 .zip 文件解压到一个固定目录,C:\curl
  3. 配置环境变量
    • 右键点击“此电脑” -> “属性” -> “高级系统设置” -> “环境变量”。
    • 在“系统变量”中找到 Path 变量,点击“编辑”。
    • 点击“新建”,然后添加 curl.exe 所在的路径,C:\curl\bin
    • 依次点击“确定”保存所有设置。
  4. 验证:重新打开一个 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 命令!

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