当前位置: 首页 > news >正文

每天掌握一个Linux命令 - curl

Linux 命令工具 curl 使用指南

目录

  • Linux 命令工具 curl 使用指南
    • 一、工具概述
    • 二、安装方式
      • 1. 主流 Linux 发行版安装
      • 2. 源码编译安装(适用于定制需求)
    • 三、核心功能
    • 四、基础用法
      • 1. 发起 GET 请求
      • 2. 发起 POST 请求
      • 3. 下载文件
      • 4. 设置请求头
      • 5. 处理认证
    • 五、进阶操作
      • 1. 使用代理
      • 2. 管理 Cookie
      • 3. 断点续传与限速
      • 4. 调试与日志输出
      • 5. 上传文件
    • 六、实战案例
      • 案例 1:接口调试(检测 API 连通性)
      • 案例 2:批量下载图片
      • 案例 3:监控服务器状态
    • 七、注意事项

一、工具概述

curl 是一个强大的命令行工具,用于在网络中传输数据,支持多种协议(如 HTTP/HTTPS、FTP、SMTP 等)。其设计目标是简单高效地与服务器进行通信,可用于发起请求、下载文件、调试接口、自动化脚本等场景。curl 支持丰富的参数配置,能灵活处理请求头、认证、代理、Cookie 等复杂场景,是 Linux 系统中网络调试的必备工具之一。

二、安装方式

1. 主流 Linux 发行版安装

  • Ubuntu/Debian
    sudo apt update
    sudo apt install curl
    
  • CentOS/RHEL/Fedora
    sudo yum install curl       # CentOS/RHEL(需启用 EPEL 源)
    sudo dnf install curl       # Fedora
    
  • Arch Linux
    sudo pacman -S curl
    

2. 源码编译安装(适用于定制需求)

wget https://curl.se/download/curl-7.88.1.tar.gz  # 下载最新版本
tar -zxvf curl-7.88.1.tar.gz
cd curl-7.88.1
./configure --prefix=/usr/local/curl  # 指定安装路径
make && sudo make install

三、核心功能

功能分类典型场景
协议支持支持 HTTP/HTTPS、FTP、SFTP、SMTP、TELNET 等 20 余种协议
请求方法支持 GET、POST、PUT、DELETE 等 HTTP 方法,可自定义请求体和头部
认证与安全支持 Basic/Digest 认证、SSL/TLS 证书校验、HTTPS 代理及客户端证书验证
数据处理支持上传/下载文件、表单提交、JSON/XML 数据传输,可设置 Cookie 和 User-Agent
调试与监控输出详细的请求日志(如响应头、状态码、耗时),支持限速和断点续传
自动化与脚本支持通过 -o-w 等参数格式化输出,便于脚本解析和结果存储

四、基础用法

1. 发起 GET 请求

curl https://example.com  # 访问网页,默认输出响应体
curl -I https://example.com  # 仅获取响应头(-I 等效于 -head)

2. 发起 POST 请求

# 表单提交(Content-Type: application/x-www-form-urlencoded)
curl -X POST "https://api.example.com/login" -d "username=admin&password=123"# JSON 数据提交(需指定 Content-Type)
curl -X POST "https://api.example.com/data" \-H "Content-Type: application/json" \-d '{"name": "curl", "version": "7.88.1"}'

3. 下载文件

curl -O https://example.com/file.zip  # -O 保留远程文件名
curl -o local_name.txt https://example.com/data.txt  # -o 指定本地文件名

4. 设置请求头

curl -H "User-Agent: MyApp/1.0" https://example.com  # 自定义 User-Agent
curl -H "Accept: application/json" https://api.example.com  # 指定响应格式

5. 处理认证

curl -u user:pass https://api.example.com/auth  # Basic 认证(-u 等效于 --user)
curl --ntlm -u domain\user:pass https://api.example.com  # NTLM 认证

五、进阶操作

1. 使用代理

curl --proxy http://proxy.example.com:8080 https://example.com  # HTTP 代理
curl --proxy socks5://socks.example.com:1080 https://example.com  # SOCKS5 代理

2. 管理 Cookie

# 保存响应中的 Cookie 到文件
curl -c cookies.txt https://example.com/login# 携带 Cookie 发起请求
curl -b cookies.txt https://example.com/profile

3. 断点续传与限速

curl -C - -O https://example.com/large_file.iso  # -C - 表示从上次中断处续传
curl --limit-rate 100k https://example.com/video.mp4  # 限制下载速度为 100KB/s

4. 调试与日志输出

curl -v https://example.com  #  verbose 模式,输出完整请求/响应信息
curl -w "Status: %{http_code}, Time: %{time_total}s" https://example.com  # 自定义输出格式

5. 上传文件

# 单文件上传(Content-Type: multipart/form-data)
curl -X POST "https://api.example.com/upload" -F "file=@/path/to/image.jpg"# 多文件上传
curl -X POST "https://api.example.com/upload" \-F "file1=@/path/to/file1.txt" \-F "file2=@/path/to/file2.csv"

六、实战案例

案例 1:接口调试(检测 API 连通性)

curl -X GET "https://api.github.com/users/octocat" \-H "Accept: application/vnd.github.v3+json"

预期输出:返回用户信息的 JSON 数据,包含 idnamepublic_repos 等字段。

案例 2:批量下载图片

for i in {1..10}; docurl -o "image_$i.jpg" "https://example.com/images/image_$i.jpg"
done

说明:通过循环批量下载指定 URL 后缀的图片文件。

案例 3:监控服务器状态

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

输出示例
200 0.345
说明:静默请求(-s)并输出状态码和总耗时,适用于脚本监控。

七、注意事项

  1. HTTPS 证书验证

    • 默认情况下,curl 会校验服务器证书的有效性。若需忽略证书错误(如自签名证书),可使用 -k--insecure,但不建议在生产环境中使用:
      curl -k https://self-signed.example.com
      
  2. 特殊字符转义

    • 在 JSON 数据或 URL 中包含特殊字符(如 &")时,需使用反斜杠 \ 转义,或用单引号包裹参数:
      curl -d '{"message": "Hello & World"}' https://api.example.com
      
  3. 大文件传输风险

    • 直接下载大文件时建议使用 -L(跟随重定向)和 -C(断点续传)参数组合,避免网络中断导致重复下载:
      curl -L -C - -O https://example.com/big_file.tar.gz
      
  4. 安全认证规范

    • 认证信息(如密码)避免直接写入脚本明文,可通过环境变量传递:
      curl -u "$USER:$PASSWORD" https://api.example.com  # 从环境变量读取凭证
      
  5. 代理与防火墙限制

    • 若企业网络限制出站协议,需确认代理是否支持目标协议(如 HTTPS),或联系网络管理员配置白名单。

通过以上内容,可快速掌握 curl 的核心功能与典型用法。实际场景中可结合 man curl 查看完整手册,或通过 curl --help 快速查询参数说明。

相关文章:

  • 代码随想录算法训练营第60期第五十二天打卡
  • SpringBoot+Vue+微信小程序校园自助打印系统
  • [SWPUCTF 2023 秋季新生赛]Classical Cipher203分古典密码Base家族栅栏密码
  • 【xmb】内部文档148344596
  • RAG中的chunk以及评测方法
  • 辅助脚本-通用开发工作区目录结构生成脚本解析与实践指南
  • 5G 核心网 NGAP UE-TNL 偶联和绑定
  • C++学习-入门到精通【10】面向对象编程:多态性
  • 论坛系统(4)
  • C++核心编程_赋值运算符重载
  • 多线程(3)
  • 带sdf 的post sim 小结
  • azure web app创建分步指南系列之一
  • CMP401GSZ-REEL混合电压接口中的23ns延迟与±6V输入范围设计实现
  • const ‘不可变’到底是值不变还是地址不变
  • 痉挛性斜颈相关内容说明
  • 无人机桥梁3D建模、巡检、检测的航线规划
  • Spine工具入门教程2之导入
  • Linux安装及管理程序
  • 简易WLAN上传下载查看器by批处理
  • 贵州中小型营销型网站建设公司/推广网络公司
  • 做网站卖专业卖文玩/想建立自己的网站
  • 网站开发收费表/百度关键字排名软件
  • 东莞企业网站推广多少钱/优化设计三年级上册答案
  • 在线设计装修软件/aso优化推广
  • 长沙做网站的故事/提升网站权重的方法