CURL(Client URL)是一个强大的命令行工具,用于通过各种网络协议与服务器进行数据传输。它支持 HTTP、HTTPS、FTP、SFTP 等多种协议,广泛应用于 API 测试、数据获取、文件传输等场景。以下是 CURL 命令的详细用法:

一、基本语法

curl [选项] [URL]
  • 选项:控制 CURL 的行为(如请求方法、头部信息、认证等)。
  • URL:目标服务器的地址(需包含协议,如http://example.com)。

二、核心功能与常用选项

1. 发送 GET 请求(默认方式)
# 最简单的GET请求
curl https://example.com # 获取详细响应信息(包括头部)
curl -v https://example.com # 仅获取响应头部
curl -I https://example.com # 保存响应内容到文件
curl -o response.html https://example.com
2. 发送 POST 请求(提交数据)
# 提交表单数据(表单格式)
curl -X POST https://example.com/api/submit \
--data "name=John&age=30" # 提交JSON数据(需指定Content-Type)
curl -X POST https://example.com/api/data \
-H "Content-Type: application/json" \
-d '{"key": "value", "array": [1, 2, 3]}' # 从文件读取数据并提交
curl -X POST https://example.com/upload \
-T data.json
3. 请求头部与认证
# 添加自定义请求头
curl -H "User-Agent: MyApp/1.0" https://example.com # 基本认证(用户名:密码)
curl -u username:password https://example.com/auth # Bearer Token认证
curl -H "Authorization: Bearer YOUR_TOKEN" https://example.com/api # 发送Cookie
curl -b "session_id=12345" https://example.com
4. 代理与网络控制
# 使用代理服务器
curl -x proxy.example.com:8080 https://example.com # 设置超时时间(秒)
curl -m 10 https://example.com # 限制带宽(KB/s)
curl --limit-rate 100 https://example.com/large-file
5. 文件上传与下载
# 下载文件并显示进度
curl -# -O https://example.com/file.zip # 断点续传(已下载文件可继续下载)
curl -C - -O https://example.com/file.zip # 上传文件到服务器(PUT方法)
curl -X PUT https://example.com/upload \
-T local-file.txt
6. 证书与 HTTPS 选项
# 忽略HTTPS证书验证(不安全,仅测试用)
curl -k https://example.com # 指定客户端证书
curl --cert client.crt --key client.key https://example.com # 信任CA证书文件
curl --cacert ca.crt https://example.com

三、高级用法与场景示例

1. 模拟浏览器行为
# 模拟Chrome浏览器请求
curl -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" https://example.com # 跟踪重定向(默认跟随3次)
curl -L https://example.com/redirect
2. API 测试与调试
# 测试DELETE API
curl -X DELETE https://example.com/api/item/123 \
-H "Authorization: Bearer TOKEN" # 查看请求与响应的详细日志
curl -v https://example.com/api/endpoint
3. 批量请求与脚本化
# 从文本文件读取URL列表并批量请求
cat urls.txt | while read url; do curl -s $url | head -n 10; done # 在Shell脚本中使用CURL
#!/bin/bash
URL="https://api.example.com/data"
TOKEN="your_token_here" response=$(curl -s -H "Authorization: Bearer $TOKEN" $URL)
echo "Response: $response"

四、常用选项速查表

选项 描述
-v / --verbose 显示详细的通信过程(调试用)
-X / --request 指定请求方法(GET/POST/PUT/DELETE 等)
-d / --data 发送 POST 数据(表单格式)
-H / --header 添加自定义请求头
-u / --user 基本认证(用户名:密码)
-o / --output 保存响应到文件
-O / --remote-name 按远程文件名保存响应
-k / --insecure 忽略 HTTPS 证书验证
-x / --proxy 使用代理服务器
-m / --max-time 设置最大请求时间(秒)

五、注意事项

  1. URL 编码:如果参数包含特殊字符(如空格、&=),需用%20等编码替换,或用单引号包裹参数(如'name=John Doe')。
  2. 安全性:避免在命令中明文写入密码,可通过环境变量(如CURL_USER_PASSWORD)或配置文件传递认证信息。
  3. Windows 系统:部分选项语法需调整(如双引号替代单引号),建议使用 PowerShell 或 Git Bash 运行 CURL。
通过灵活组合上述选项,CURL 可以满足几乎所有网络请求场景。如需更详细的帮助,可运行curl --help或查看官方文档

CURL 命令的用法详解的更多相关文章

  1. IP命令的用法详解

    IP命令的用法详解 原创 2017-06-29 10:02:34 0932 摘自:http://www.php.cn/linux-371363.html ip命令是Linux下较新的功能强大的 ...

  2. Linux crontab命令 定时任务 用法详解以及no crontab for root解决办法

    最近系统服务器进行搬迁,又恰好需要使用定时任务运行程序,而我的程序主要使用PHP写的,然后总结了下定时任务的用法,但是在这里主要写的是关于crontab命令的用法,使用过程中遇到不少问题,例如no c ...

  3. jar命令的用法详解

    本文详细讲述了JAR命令的用法,对于大家学习和总结jar命令的使用有一定的帮助作用.具体如下: JAR包是Java中所特有一种压缩文档,其实大家就可以把它理解为.zip包.当然也是有区别的,JAR包中 ...

  4. [转] DOS命令for用法详解

    [From] http://www.jb51.net/article/31284.htm for帮助文档 对一组文件中的每一个文件执行某个特定命令. FOR %variable IN (set) DO ...

  5. DOS 命令大全用法详解

    注意事项 DOS命令不区分大小写,比如C盘的Program Files,在dos命令中完全可以用"program files"代替,加上英文引号是因为名称的中间有空格(即多于一个词 ...

  6. 转载:Linux批量远程管理主机命令_pssh用法详解

    原文:http://www.linuxidc.com/Linux/2011-12/49635p2.htm (一) 使用前提 中心主机连接远程主机可以通过ssh密钥无密码连接 (二) 命令格式 pssh ...

  7. Linux修改权限命令chmod用法详解

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁 ...

  8. 【转】Linux虚拟终端命令Screen用法详解

    转自 http://www.linuxidc.com/Linux/2013-07/87415.htm 在使用ssh或者telnet登录远程主机后,执行一些耗时的命令,如果此时ssh或者telnet中断 ...

  9. MemCached add命令的用法详解

    增加: add 往内存增加一条数据 命令格式: add key flag expiretime bytes\r\n data\r\n //跨行所加的一些数据 1)key: 给这个值起一个固定的名字 / ...

  10. scp命令的用法详解

    这篇文章主要是参考了http://blog.csdn.net/jiangkai_nju/article/details/7338177这个博客,要看详细的内容可以参考这个博客进行学习研究,但是我觉得在 ...

随机推荐

  1. Raft学习笔记

    0.前言 Raft 作为一种强一致性的共识算法,被广泛应用于分布式系统中,如 etcd.Consul 等.最近阅读了一篇关于 Raft 的技术文章,收获颇多,因此写下此学习笔记,记录其中的关键概念与个 ...

  2. AI与.NET技术实操系列(九):总结篇 ── 探讨.NET 开发 AI 生态:工具、库与未来趋势

    1. 引言 本文作为本系列的最后一篇,旨在全面探讨 .NET 生态中与 AI 相关的工具.库.框架和资源,帮助开发者了解如何在 .NET 环境中开发 AI 应用.我们将分析 Microsoft 的 A ...

  3. games101 作业4提高部分

    games101 作业4提高部分 作业四中,我们按照实验步骤完成bazier曲线之后,得到的结果有一定的锯齿感: 然后pdf中给出的思路是: 对于一个曲线上的点,不只把它对应于一个像素,你需要根据到像 ...

  4. [源码系列:手写spring] IOC第七节:加载xml文件中定义的Bean

    目录 主要内容 代码分支 核心代码 BeanDefinitionReader AbstractBeanDefinitionReader XmlBeanDefinitionReader 测试 bean定 ...

  5. 事件监听、焦点--java进阶day03

    1.事件 按钮是组件,点击后就会重新游戏 对于这种点击了组件之后,有逻辑触发的操作,就是事件 2.事件中的专有名词 绑定监听也就是绑定监视,是真正组织代码逻辑的地方 要有绑定监听就需要监听器,今天学习 ...

  6. 【视频编辑】Pr视频编辑软件导出的视频声音有一段会变大怎么解决

    导出视频后为什么有段声音会突然变大? 也就是可能存在编辑器导出的时候有自动增益声音的行为. 具体描述: 工程文件里我没动过声音,工程文件里听也是很正常的,但是导出后有一小段音乐会突然变大(存在自动增益 ...

  7. 阿里云ECS安装 CoreOS

    没事重装了下阿里云的ECS,无意发现竟然有了 CoreOS 的选项,有点小激动,于是乎,果断选择安装尝试了下. 阿里云ECS安装 CoreOS 其他阿里云注册啥的就不多说了,来个主要的图说明下: 题外 ...

  8. Clion搭建C语言开发环境

    1.下载和安装MinGW 1)下载链接:http://www.mingw.org/ 2)选择安装目录,目录尽可能简单(如:D:\MinGW)且不要包含中文和空格 3)添加相关的包 所需的包如下:min ...

  9. Mybatis三大执行器

    目录 1.执行器介绍 执行器的选择入口 设置执行器两种方式 全局配置(不建议) 局部设置(建议) 2.三个执行器区别 SimpleExecutor ReuseExecutor BatchExecuto ...

  10. 基于注解的 AOP 配置

    第一步:在 spring 配置文件中开启 spring 对注解 AOP 的支持 <!-- 开启 spring 对注解 AOP 的支持 --> <aop:aspectj-autopro ...