系统极客一直在努力
专注操作系统及软件使用技能

curl 命令使用指南:从安装到使用示例

curl 是一款强大的开源命令行工具和库,用于通过 URL 进行数据传输。它支持多达 28 种协议,让你能够轻松发送请求和接收响应。

大多数 Linux 发行版都预装了 curl。即使你的系统没有自带,或者不小心删掉了也不要紧。本文将教你如何在 Linux 系统上安装和使用 curl。

curl 和 libcurl:工具与库的区别

虽然 curl 和 libcurl 关系密切,但它们的用途是不同的:

  1. curl 是一个命令行工具,让你能通过多种协议(如 HTTP、HTTPS、FTP、SCP、SFTP 等)与远程服务器传输数据。
  2. Libcurl 则是一个客户端库,为应用程序提供网络操作的 API。它用 C 语言编写,支持与 curl 相同的协议,让开发者能轻松为程序添加网络功能。

简单来说,curl 是一个随手可用的命令行工具,而 libcurl 是开发者用来给应用添加网络功能的库。基本知识铺垫完毕,接下来,让我们看看怎么在 Linux 系统上安装和使用它们。

第 1 步:在 Linux 上安装 curl 和 libcurl

如果你的 Linux 发行版为了精简系统没有预装 curl,可以通过系统默认的包管理器进行安装:

1.1 Debian 或 Ubuntu 系统

1使用 APT 包管理器安装 curl:

sudo apt install curl

2安装 libcurl(可以选择喜欢的 TLS 后端):

sudo apt install libcurl4-openssl-dev
#或者
sudo apt install libcurl4-nss-dev
#或者
sudo apt install libcurl4-gnutls-dev

2.2 Red Hat 或 Fedora 系统

1对于 Fedora 和 CentOS 等 RHEL 衍生版,使用 YUM 包管理器安装 curl:

sudo dnf install curl

2安装 libcurl 开发包(包含头文件和文档):

sudo dnf install libcurl-devel

2.3 SUSE 或 openSUSE 系统

1使用 Zypper 包管理器安装 curl:

sudo zypper install curl

2安装 Libcurl 开发包:

sudo zypper install libcurl-devel

2.4 Arch 或 Manjaro 系统

Arch Linux 核心库里面有 curl,但没有官方 libcurl 包:

sudo pacman -Sy curl

第 2 步:验证 curl 安装

安装完成后,执行以下命令验证 curl 是否已经安装成功:

curl --version

这个命令会显示 curl 的版本信息,包括支持的协议和特性。如果你看到如下图的输出,就说明安装成功了:

第 3 步:在 Linux 上使用 curl 命令

3.1 常见用法

如前所述,curl 命令能用 28 种不同的协议,通过 URL 进行数据传输(发送请求和接收响应)。现在,让我们通过一些实际的例子,来看看如何在日常工作中灵活运用 curl 命令。

1向服务器发送GET请求并显示收到的响应,主要用于快速查看网站或 API 的响应:

curl https://www.example.com

2只获取 HTTP 头信息,主要用于查看 HTTP 状态码和响应头信息,而不下载页面内容:

curl -I https://www.example.com

3如果 URL 有多次重定向,可以用-L参数显示最终响应内容,如短链接或301302重定向之后的页面:

curl -L https://www.example.com/v2/users

4用 JSON 数据向 API 发送 POST 请求,主要用于向 RESTful API 提交数据,如创建新用户或更新信息:

curl -X POST -H "Content-Type: application/json" -d '{"name": "billy", "age": 18}' https://www.example.com/api

5将文件下载到本地-o参数用于指定本地目录,不写就表示下载到当前目录:

curl -o ~/Downloads/temp.zip -O https://www.example.com/downloads/temp.zip

在高级用法中,你还可以使用 curl 将大文件进行分割下载

6用多部分表单数据上传文件,主要用于向服务器上传文件,如提交附件或更新网站内容:

curl -F "file=@/home/sysgeek/Downloads/temp.zip" https://www.example.com/downloads/

7在请求中加入自定义头信息,主要用于访问需要 Token 认证的 API,如获取用户数据或执行受限操作:

curl -H "Authorization: Bearer token123" https://www.example.com/api

8为安全 API 访问提供基本认证信息,主要用于需要用户名和密码登录的网站或服务:

curl -u username:password https://www.example.com/api

9在请求头中设置自定义 cookie,模拟已登录状态访问页面:

curl -b "sessionid=123456" https://www.example.com/

10指定特定的 HTTP 方法,如GETPUTHEAD

curl -X PUT https://www.example.com/resource

11将网站内容保存为 HTML 文件,快速抓取网页内容进行离线分析或存档:

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

12在请求头中设置自定义user-agent用户代理,模拟特定浏览器访问网站,绕过一些限制或进行兼容性测试:

curl -A "Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/115.0" https://www.example.com/

13测试服务器的响应时间,检查网站性能,监控服务器响应速度:

$ curl -w "Response time: %{time_total}\n" -o /dev/null -s https://www.example.com/

3.2 实际用例

例如,要查看系统极客的网站链接是否有重定向,我们可以使用以下命令:

curl -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0" -I -L http://www.sysgeek.cn/
  • 由于网站屏蔽了 curl,所以先通过-A参数来模拟一个user-agent来绕过屏蔽。
  • 然后使用-I参数来读取响应头。
  • 最后通过-L参数来查看重定向。

通过返回信息可以看出,http://www.sysgeek.cn301重定向到了https://www.sysgeek.cn


这些常用场景能帮你更好地理解 curl 命令在日常工作中的实际应用。根据具体需求,你可以灵活组合这些命令来完成各种网络任务。如果你想更深入地了解 curl 命令,可以使用man curl命令查看使用手册。

赞(1) 赞赏

评论 抢沙发

微信赞赏