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

curl 命令详细介绍

前言

curl 是一个功能强大的命令行工具,用于通过 URL 传输数据,支持多种协议(如 HTTP、HTTPS、FTP、FTPS、SCP、SFTP 等)。

一、基本用法

1.发送 GET 请求

curl https://example.com

默认发送 HTTP GET 请求,返回响应内容到终端

2.保存输出到文件

curl -o output.html https://example.com       # 保存为指定文件名
curl -O https://example.com/file.txt          # 保存为远程文件名

此命令会将 https://example.com/file.txt 文件下载到当前目录,文件名保持为 file.zip。

-o:指定保存文件的名称。

二、请求头与认证

  • -H:设置请求头信息。

自定义请求头

curl -H "Authorization: Bearer token" -H "User-Agent: MyApp" https://example.com

设置请求头Authorization、User-Agent

三、HTTP 请求方法

指定请求方法

-X:指定请求方法,如 GET、POST、PUT、DELETE 等。

curl -X POST https://example.com/api          # 发送 POST 请求
curl -X PUT https://example.com/api           # 发送 PUT 请求
curl -X DELETE https://example.com/api        # 发送 DELETE 请求
发送 POST 数据
  • -d:用于发送表单数据,常用于 POST 请求。
curl -X POST -d "param1=value1&param2=value2" http://example.com/api

该命令向 http://example.com/api 发送一个包含表单数据的 POST 请求。

curl -X POST -H "Content-Type: application/json" -d '{"key1": "value1", "key2": "value2"}' http://example.com/api
  • -H "Content-Type: application/json":设置请求头,指定请求体的数据类型为 JSON。
  • -d:后面跟上 JSON 格式的数据。

四、文件上传与下载

上传文件

curl -F "file=@/path/to/file.jpg" https://example.com/upload  # 表单上传
curl -T file.txt ftp://example.com/upload/                   # FTP 上传

断点续传

curl -C - -O https://example.com/large-file.zip

-C -

  • 功能说明-C 选项用于启用断点续传功能。后面的 - 表示让 curl 自动从之前中断的位置继续下载文件。当文件下载过程因网络问题、系统故障或手动中断等原因而暂停后,再次使用带有 -C - 选项的 curl 命令下载同一个文件时,它会尝试从上次中断的位置继续下载,而不是重新开始整个下载过程。
  • 工作原理curl 在下载文件时会记录已经下载的字节数,当再次执行该命令时,它会通过 HTTP 协议的 Range 请求头告知服务器从指定位置开始传输数据,服务器则根据请求返回剩余部分的文件内容。

-O

  • 功能说明:该选项用于将服务器响应的内容保存为与远程文件同名的文件。也就是说,curl 会从 URL 中提取文件名,并将下载的数据保存到当前工作目录下,文件名与远程服务器上的文件名一致。
  • 示例:对于 URL https://example.com/large-file.zip,使用 -O 选项后,下载的文件会被保存为当前目录下的 large-file.zip

五、处理 Cookies

保存 Cookies

curl -c cookies.txt https://example.com/login

使用 Cookies

curl -b cookies.txt https://example.com/dashboard

六、代理与网络设置

通过代理访问

curl -x http://proxy-server:port https://example.com

超时设置

curl --connect-timeout 10 https://example.com  # 连接超时 10 秒
curl --max-time 30 https://example.com         # 最大请求时间 30 秒

七、SSL/TLS 设置

忽略证书验证(不安全,仅测试用)

curl -k https://example.com

指定客户端证书

curl --cert client.pem --key key.pem https://example.com

八、调试与详细信息

显示详细请求过程

curl -v https://example.com # 显示请求头和响应头

仅显示响应头

curl -I https://example.com # 等同于 HEAD 请求

九、其他实用功能

限制下载速度

curl --limit-rate 100K -O https://example.com/large-file.zip

跟随重定向

curl -L https://example.com # 自动跳转

压缩传输(支持 gzip)

curl --compressed https://example.com

十、示例场景

测试 REST API

curl -X POST -H “Content-Type: application/json” -d ‘{“key”:“value”}’ https://api.example.com/data

下载并解压文件

curl -L https://example.com/file.tar.gz | tar xz

监控网站状态

curl -s -o /dev/null -w “%{http_code}” https://example.com

十一、帮助与文档

查看所有选项:

curl --help

完整文档:

man curl


curl 的灵活性使其成为开发者、运维人员的必备工具。通过组合不同选项,可以满足复杂的网络请求需求。

相关文章:

  • 负载均衡(SLB)后端实例不健康:腾讯云如何协助解决
  • 【C++设计模式 – 工厂(Factory)模式】—— 对象创建的优雅解耦方案
  • Linux面试题
  • Bom详解和Dom详解
  • 本地使用docker部署DeepSeek大模型
  • 【保姆级教程】DeepSeek R1+RAG,基于开源三件套10分钟构建本地AI知识库
  • Java全栈项目-田径运动会管理系统
  • 23种设计模式 - 责任链
  • 存储结构 分类
  • 使用Swupdate恢复模式更新嵌入式linux系统
  • 大师课程:穿越日本专业级人文风景摄影视频课程 Fstoppers - Photographing the World 6 - Japan II
  • 基于微信小程序的宠物寄养平台的设计与实现(ssm论文源码调试讲解)
  • FPGA VIVADO:axi-lite 从机和主机
  • 环境变量 PATH 与可执行文件识别机制详解
  • 数据倾斜定义以及在Spark中如何处理数据倾斜问题
  • 14. Docker 轻量级可视化工具 Portainer(的详细安装步骤+常规使用详细说明)
  • PyQt加载UI文件
  • x86平台基于Qt+opengl优化ffmpeg软解码1080P视频渲染效率
  • 【GoLang】【算法模板】2、GoLang 算法模板整理
  • Java包装类泛型编程
  • 马上评|这种“维权”已经不算薅羊毛,涉嫌犯罪了
  • 证券时报:中美互降关税落地,订单集中补发港口将迎高峰期
  • 熊出没!我驻日本札幌总领馆提示中国公民注意人身安全
  • 上海能源科技发展有限公司原董事长李海瑜一审获刑13年
  • 马上评丨75万采购300元设备,仅仅终止采购还不够
  • 应急部:正在积极推动各地逐步科学建设改造应急避难场所