问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

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

创作时间:
作者:
@小白创作中心

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

引用
1
来源
1.
https://www.sysgeek.cn/www.sysgeek.cn/curl-command/

curl是一个强大的开源命令行工具和库,用于通过URL进行数据传输。它支持多达28种协议,让你能够轻松发送请求和接收响应。本文将详细介绍curl的安装、基本使用方法以及一些高级用法。

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

curl和libcurl:工具与库的区别

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

  • curl是一个命令行工具,让你能通过多种协议(如HTTP、HTTPS、FTP、SCP、SFTP等)与远程服务器传输数据。
  • 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
    

1.2 Red Hat或Fedora系统

  1. 对于Fedora和CentOS等RHEL衍生版,使用YUM包管理器安装curl:
    sudo dnf install curl
    
  2. 安装libcurl开发包(包含头文件和文档):
    sudo dnf install libcurl-devel
    

1.3 SUSE或openSUSE系统

  1. 使用Zypper包管理器安装curl:
    sudo zypper install curl
    
  2. 安装Libcurl开发包:
    sudo zypper install libcurl-devel
    

1.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参数显示最终响应内容,如短链接或301、302重定向之后的页面:

    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将大文件进行分割下载。

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

    curl -F "file=@/home/sysgeek/Downloads/temp.zip" https://www.example.com/downloads/
    
  2. 在请求中加入自定义头信息,主要用于访问需要Token认证的API,如获取用户数据或执行受限操作:

    curl -H "Authorization: Bearer token123" https://www.example.com/api
    
  3. 为安全API访问提供基本认证信息,主要用于需要用户名和密码登录的网站或服务:

    curl -u username:password https://www.example.com/api
    
  4. 在请求头中设置自定义cookie,模拟已登录状态访问页面:

    curl -b "sessionid=123456" https://www.example.com/
    
  5. 指定特定的HTTP方法,如GET、PUT和HEAD:

    curl -X PUT https://www.example.com/resource
    
  6. 将网站内容保存为HTML文件,快速抓取网页内容进行离线分析或存档:

    curl -o index.html https://www.example.com/
    
  7. 在请求头中设置自定义user-agent用户代理,模拟特定浏览器访问网站,绕过一些限制或进行兼容性测试:

    curl -A "Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/115.0" https://www.example.com/
    
  8. 测试服务器的响应时间,检查网站性能,监控服务器响应速度:

    $ 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.cn被301重定向到了https://www.sysgeek.cn。

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

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号