Skip to content

curl 命令的使用教程

curl 是一款非常强大的命令行工具,用于发送和接收文件,以及与各种服务器和协议进行交互。

curl 官方网站

官网 https://curl.se/

如何下载安装 curl

官网下载 https://curl.se/download.html

Windows 下载安装 curl

  1. 下载 curl for 64-bit https://curl.se/windows/dl-8.7.1_7/curl-8.7.1_7-win64-mingw.zip

  2. 解压出来

  3. 访问 .\curl-8.7.1_7-win64-mingw\bin\curl.exe 目录

    查看 curl 版本

    powershell
    .\curl --version

    日志

    powershell
    PS C:\Users\Administrator\Desktop\nginx-course\curl-8.7.1_7-win64-mingw\bin> .\curl --version
    curl 8.7.1 (x86_64-w64-mingw32) libcurl/8.7.1 LibreSSL/3.9.1 zlib/1.3.1 brotli/1.1.0 zstd/1.5.6 WinIDN libpsl/0.21.5 libssh2/1.11.0 nghttp2/1.61.0 ngtcp2/1.4.0 nghttp3/1.2.0
    Release-Date: 2024-03-27
    Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss
    Features: alt-svc AsynchDNS brotli HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL SSPI threadsafe UnixSockets zstd
    PS C:\Users\Administrator\Desktop\nginx-course\curl-8.7.1_7-win64-mingw\bin>

Mac 升级 curl 到最新版本

在 macOS 上,可以使用 Homebrew 来升级 curl 到最新版本。下面是升级 curl 的步骤:

  1. 安装 Homebrew:如果你还没有安装 Homebrew,可以在终端中运行以下命令进行安装:

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. 使用 Homebrew 升级 curl:在终端中运行以下命令来安装最新版本的 curl

    brew install curl
  3. 使用 brew link 覆盖系统 curl:为了确保使用的是 Homebrew 安装的 curl,可以运行以下命令将其链接到系统路径中:

    brew link --force curl
  4. 验证 curl 版本:升级完成后,可以运行以下命令来验证 curl 版本:

    curl --version

通过这些步骤,你应该能够将 macOS 上的 curl 升级到最新版本。

Linux Centos 下载和更新 curl

在 CentOS 上,你可以使用包管理器 yum 来下载和更新 curl。下面是下载和更新 curl 的步骤:

  1. 下载 curl:如果你的系统中没有安装 curl,可以使用 yum 来安装:

    bash
    sudo yum install curl
  2. 更新 curl:如果 curl 已经安装,但你想要更新到最新版本,可以运行以下命令:

    bash
    sudo yum update curl
  3. 验证 curl 版本:更新完成后,你可以运行以下命令来验证 curl 版本:

    bash
    curl --version

通过这些步骤,你可以在 CentOS 上下载和更新 curl

curl 获取指定 http 版本的请求头

注意,

  • 下面的 -kk 是小写,如果是自签名证书需要加上 -k 忽略证书错误,不然会获取不到数据。
  • 下面例子是以 Windows 为例,如果是 Mac 或者 Linux 需要把 .\curl.exe 改成 curl

http1.1

powershell
.\curl.exe --http1.1 -I -k https://docs.ffffee.com:8443

发送 HTTP/1.1 协议的 HEAD 请求,显示响应头信息,忽略证书错误,目标地址为https://docs.ffffee.com:8443

http2

powershell
.\curl.exe --http2 -I -k https://docs.ffffee.com:8443

发送 HTTP/2 协议的 HEAD 请求,显示响应头信息,忽略证书错误,目标地址为https://docs.ffffee.com:8443

http3

powershell
.\curl.exe --http3 -I -k https://docs.ffffee.com:8443

发送 HTTP/3 协议的 HEAD 请求,显示响应头信息,忽略证书错误,目标地址为https://docs.ffffee.com:8443

日志记录

PS C:\Users\Administrator\Desktop\nginx-course\curl-8.7.1_7-win64-mingw\bin> .\curl.exe --http3 -I -k https://docs.ffffee.com:8443
HTTP/3 200
server: nginx/1.25.4
date: Mon, 29 Apr 2024 03:41:59 GMT
content-type: text/html
content-length: 846
last-modified: Mon, 22 Apr 2024 04:00:43 GMT
etag: "6625e0eb-34e"
expires: Mon, 29 Apr 2024 03:42:29 GMT
cache-control: max-age=30
cache-control: no-cache
alt-svc: h3=":8443"; ma=86400
quic-status: h3
accept-ranges: bytes

PS C:\Users\Administrator\Desktop\nginx-course\curl-8.7.1_7-win64-mingw\bin>

常用的命令参数

1. 获取网页内容

要获取一个网页的内容,可以使用基本的 curl 命令加上网址:

bash
curl http://example.com

2. 将输出保存到文件

如果你想把网页的内容保存到一个文件中,可以使用 -o 选项:

bash
curl -o filename.html http://example.com

3. 发送 POST 请求

curl 可以用来发送 POST 请求。例如,提交表单数据:

bash
curl -d "param1=value1&param2=value2" -X POST http://example.com/form

4. 使用 HTTP 头

你可以使用 -H 选项添加 HTTP 头到你的请求中:

bash
curl -H "Content-Type: application/json" -X POST -d '{"username":"xyz","password":"xyz"}' http://example.com/api/login

5. 跟随重定向

有时候请求的 URL 会进行重定向。使用 -L 选项可以让 curl 跟随重定向:

bash
curl -L http://example.com

6. 使用 HTTPS

当使用 HTTPS URL 时,curl 会自动使用 SSL/TLS。如果你需要跳过证书验证(不推荐),可以使用 -k 选项:

bash
curl -k https://example.com

7. 上传文件

要上传文件到服务器,可以使用 -F 选项:

bash
curl -F "file=@path_to_file" http://example.com/upload

8. 显示头信息

如果你只对头信息感兴趣,可以使用 -I 选项:

bash
curl -I http://example.com

9. 使用代理

如果需要通过代理服务器发送请求,可以使用 -x 选项:

bash
curl -x http://proxy-server:port http://example.com

10. 用户名和密码认证

如果你需要对 HTTP 或 FTP 服务器进行身份验证,可以使用 -u 选项:

bash
curl -u username:password http://example.com

这些是 curl 的一些基本使用方法。通过阅读 curl 的手册页 (man curl) 或查看在线文档,你可以学到更多高级技巧和选项。

wget 和 curl 的区别

wgetcurl 都是非常流行的命令行工具,用于从网络上下载文件,但它们在功能和用途上有一些区别:

  1. 基本用途

    • wget 是一个用于下载网络文件的工具。它支持下载 HTTP、HTTPS 和 FTP 协议的文件。wget 可以递归地下载网页,并能够轻松地镜像整个网站。
    • curl 是一个用来传输数据的工具,支持更多的协议,包括 HTTP、HTTPS、FTP、FTPS、SCP、SFTP、TFTP、LDAP、LDAPS、DICT、TELNET、FILE 等。curl 的主要用途是在命令行或脚本中传输数据。
  2. 协议支持

    • wget 较为有限,主要支持 HTTP、HTTPS 和 FTP。
    • curl 支持广泛,包括 HTTP、HTTPS、FTP、FTPS、SCP、SFTP 等多种协议。
  3. 数据传输功能

    • wget 主要专注于单向的文件下载。
    • curl 可以用于数据上传和下载,支持多种方式的数据传输,包括通过 POST 方法发送数据。
  4. 会话保持

    • wget 可以在下载过程中保存会话,例如在下载大文件或递归下载时非常有用。
    • curl 通常用于单次短命令,不自动保存会话信息,但可以通过手动设置 cookie 等方式处理会话。
  5. 命令行选项

    • wget 的命令行选项相对简单,更适合于简单的下载任务。
    • curl 提供了非常广泛的选项,允许用户精细地控制命令行的每个方面,适合需要精确控制 HTTP 请求的场景。
  6. 使用场景

    • wget 适合于需要下载文件或网站镜像的场景。
    • curl 适合于开发和测试 HTTP API,以及需要复杂数据交换的脚本任务。

总的来说,选择哪一个工具取决于你的具体需求:如果你需要一个强大的工具来下载文件或网站镜像,wget 可能是更好的选择。如果你需要一个支持广泛协议并且能够处理复杂数据传输任务的工具,curl 将是更合适的选择。

写一个 wget 和 curl 下载文件的例子

当然,这里我提供两个简单的例子来展示如何使用 wgetcurl 来下载文件:

使用 wget 下载文件

假设你想要下载一个位于 https://example.com/file.zip 的文件,你可以使用以下 wget 命令:

bash
wget https://example.com/file.zip

这个命令会将 file.zip 下载到当前工作目录中。wget 默认会保存下载的文件的原始文件名。

使用 curl 下载文件

对于同一个文件,如果你使用 curl 来下载,命令会稍微有些不同,因为 curl 默认会将下载的数据输出到标准输出,除非你指定了输出文件。

以下是使用 curl 下载并保存文件的命令:

bash
curl -o file.zip https://example.com/file.zip

这里的 -o 参数后面跟的是你想要保存的文件名(file.zip),这指示 curl 将下载的数据写入到 file.zip 文件中,而不是打印到屏幕上。

这两个例子都展示了如何从网上下载文件到本地计算机。在实际使用中,你可能还需要考虑网络错误、重试机制等因素,这些工具都提供了相应的选项来处理。