curl 命令的使用教程
curl
是一款非常强大的命令行工具,用于发送和接收文件,以及与各种服务器和协议进行交互。
curl 官方网站
如何下载安装 curl
官网下载 https://curl.se/download.html
Windows 下载安装 curl
下载 curl for 64-bit https://curl.se/windows/dl-8.7.1_7/curl-8.7.1_7-win64-mingw.zip
解压出来
访问 .\curl-8.7.1_7-win64-mingw\bin\curl.exe 目录
查看 curl 版本
powershell.\curl --version
日志
powershellPS 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
的步骤:
安装 Homebrew:如果你还没有安装 Homebrew,可以在终端中运行以下命令进行安装:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
使用 Homebrew 升级 curl:在终端中运行以下命令来安装最新版本的
curl
:brew install curl
使用 brew link 覆盖系统 curl:为了确保使用的是 Homebrew 安装的
curl
,可以运行以下命令将其链接到系统路径中:brew link --force curl
验证 curl 版本:升级完成后,可以运行以下命令来验证
curl
版本:curl --version
通过这些步骤,你应该能够将 macOS 上的 curl
升级到最新版本。
Linux Centos 下载和更新 curl
在 CentOS 上,你可以使用包管理器 yum
来下载和更新 curl
。下面是下载和更新 curl
的步骤:
下载 curl:如果你的系统中没有安装
curl
,可以使用yum
来安装:bashsudo yum install curl
更新 curl:如果
curl
已经安装,但你想要更新到最新版本,可以运行以下命令:bashsudo yum update curl
验证 curl 版本:更新完成后,你可以运行以下命令来验证
curl
版本:bashcurl --version
通过这些步骤,你可以在 CentOS 上下载和更新 curl
。
curl 获取指定 http 版本的请求头
注意,
- 下面的
-k
的k
是小写,如果是自签名证书需要加上-k
忽略证书错误,不然会获取不到数据。 - 下面例子是以 Windows 为例,如果是 Mac 或者 Linux 需要把
.\curl.exe
改成curl
http1.1
.\curl.exe --http1.1 -I -k https://docs.ffffee.com:8443
发送 HTTP/1.1 协议的 HEAD 请求,显示响应头信息,忽略证书错误,目标地址为https://docs.ffffee.com:8443。
http2
.\curl.exe --http2 -I -k https://docs.ffffee.com:8443
发送 HTTP/2 协议的 HEAD 请求,显示响应头信息,忽略证书错误,目标地址为https://docs.ffffee.com:8443。
http3
.\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
命令加上网址:
curl http://example.com
2. 将输出保存到文件
如果你想把网页的内容保存到一个文件中,可以使用 -o
选项:
curl -o filename.html http://example.com
3. 发送 POST 请求
curl
可以用来发送 POST 请求。例如,提交表单数据:
curl -d "param1=value1¶m2=value2" -X POST http://example.com/form
4. 使用 HTTP 头
你可以使用 -H
选项添加 HTTP 头到你的请求中:
curl -H "Content-Type: application/json" -X POST -d '{"username":"xyz","password":"xyz"}' http://example.com/api/login
5. 跟随重定向
有时候请求的 URL 会进行重定向。使用 -L
选项可以让 curl
跟随重定向:
curl -L http://example.com
6. 使用 HTTPS
当使用 HTTPS URL 时,curl
会自动使用 SSL/TLS。如果你需要跳过证书验证(不推荐),可以使用 -k
选项:
curl -k https://example.com
7. 上传文件
要上传文件到服务器,可以使用 -F
选项:
curl -F "file=@path_to_file" http://example.com/upload
8. 显示头信息
如果你只对头信息感兴趣,可以使用 -I
选项:
curl -I http://example.com
9. 使用代理
如果需要通过代理服务器发送请求,可以使用 -x
选项:
curl -x http://proxy-server:port http://example.com
10. 用户名和密码认证
如果你需要对 HTTP 或 FTP 服务器进行身份验证,可以使用 -u
选项:
curl -u username:password http://example.com
这些是 curl
的一些基本使用方法。通过阅读 curl
的手册页 (man curl
) 或查看在线文档,你可以学到更多高级技巧和选项。
wget 和 curl 的区别
wget
和 curl
都是非常流行的命令行工具,用于从网络上下载文件,但它们在功能和用途上有一些区别:
基本用途:
- wget 是一个用于下载网络文件的工具。它支持下载 HTTP、HTTPS 和 FTP 协议的文件。wget 可以递归地下载网页,并能够轻松地镜像整个网站。
- curl 是一个用来传输数据的工具,支持更多的协议,包括 HTTP、HTTPS、FTP、FTPS、SCP、SFTP、TFTP、LDAP、LDAPS、DICT、TELNET、FILE 等。curl 的主要用途是在命令行或脚本中传输数据。
协议支持:
- wget 较为有限,主要支持 HTTP、HTTPS 和 FTP。
- curl 支持广泛,包括 HTTP、HTTPS、FTP、FTPS、SCP、SFTP 等多种协议。
数据传输功能:
- wget 主要专注于单向的文件下载。
- curl 可以用于数据上传和下载,支持多种方式的数据传输,包括通过 POST 方法发送数据。
会话保持:
- wget 可以在下载过程中保存会话,例如在下载大文件或递归下载时非常有用。
- curl 通常用于单次短命令,不自动保存会话信息,但可以通过手动设置 cookie 等方式处理会话。
命令行选项:
- wget 的命令行选项相对简单,更适合于简单的下载任务。
- curl 提供了非常广泛的选项,允许用户精细地控制命令行的每个方面,适合需要精确控制 HTTP 请求的场景。
使用场景:
- wget 适合于需要下载文件或网站镜像的场景。
- curl 适合于开发和测试 HTTP API,以及需要复杂数据交换的脚本任务。
总的来说,选择哪一个工具取决于你的具体需求:如果你需要一个强大的工具来下载文件或网站镜像,wget 可能是更好的选择。如果你需要一个支持广泛协议并且能够处理复杂数据传输任务的工具,curl 将是更合适的选择。
写一个 wget 和 curl 下载文件的例子
当然,这里我提供两个简单的例子来展示如何使用 wget
和 curl
来下载文件:
使用 wget
下载文件
假设你想要下载一个位于 https://example.com/file.zip
的文件,你可以使用以下 wget
命令:
wget https://example.com/file.zip
这个命令会将 file.zip
下载到当前工作目录中。wget
默认会保存下载的文件的原始文件名。
使用 curl
下载文件
对于同一个文件,如果你使用 curl
来下载,命令会稍微有些不同,因为 curl
默认会将下载的数据输出到标准输出,除非你指定了输出文件。
以下是使用 curl
下载并保存文件的命令:
curl -o file.zip https://example.com/file.zip
这里的 -o
参数后面跟的是你想要保存的文件名(file.zip
),这指示 curl
将下载的数据写入到 file.zip
文件中,而不是打印到屏幕上。
这两个例子都展示了如何从网上下载文件到本地计算机。在实际使用中,你可能还需要考虑网络错误、重试机制等因素,这些工具都提供了相应的选项来处理。