Linux系统中的curl命令使用详解
curl概述
官方文档:https://curl.se/docs/
GitHub地址:https://github.com/curl/curl
curl全称Client URL,是一个命令行工具和库,用于通过 URL 传输数据,支持 100+ 协议(HTTP/HTTPS、FTP、SMTP、POP3、RTSP、DICT 等)。
其作用主要是发送网络请求、接收响应、支持文件上传 / 下载、处理认证、代理、Cookie、重定向等复杂网络操作。
其以轻量简洁、跨平台(Linux、Windows、Mac)、脚本友好(适合自动化和 API 测试)等特点深受广大程序员的喜爱。
curl应用场景
- API 调试:测试 RESTful 接口(GET/POST/PUT/DELETE 等)。
- 文件传输:下载远程文件、上传文件到服务器(如 FTP/SCP)。
- 网络诊断:检查服务器响应状态、分析请求头 / 响应头。
- 数据采集:爬取网页内容(需注意网站 robots 协议)。
- 脚本自动化:在 Shell/Python 脚本中集成网络请求。
curl的基本使用
安装
# linux debian系列
apt install -y curl
# linux CentOS系列
yum install -y curl
curl的语法
# 其中options是选项参数,url表示请求的路径
curl [options] [url]
常用选项参数
请求控制选项
- -X,--request:指定请求方法(GET、POST、PUT、DELETE...)
curl -X GET https://www.baidu.com
- -H, --header:添加请求头,可以多次指定
curl -H "content-type: application/json; charset=utf-8" \
-H "Authorization: Bearer TOKEN" \
https://api.example.com
- -d:发送 POST 数据(表单数据,自动设置 Content-Type: application/x-www-form-urlencoded)
curl -d "name=John&age=30" https://api.example.com/submit
- -D, --dump-header:将响应头保存到文件
curl -D headers.txt https://www.baidu.com
- -L, --location:自动跟随重定向(301/302 状态码)
curl -L http://www.baidu.com
- -b, --cookie:发送 Cookie(格式:name=value 或文件路径)
curl -b "sessionid=12345" https://example.com
- -c, --cookie-jar:将服务器返回的cookie保存到本地文件,便于后续访问
curl -c cookies.txt https://example.com/login
数据传输选项
- -o:下载内容保存到文件
curl -o download.zip https://example.com/file.zip
- -O:下载内容,文件名称跟随远程文件
curl -O https://example.com/file.zip
- -d:发送 POST 数据(表单数据,自动设置 Content-Type: application/x-www-form-urlencoded)
curl -d "name=John&age=30" https://api.example.com/submit
- -F, --form:发送表单文件 / 数据(模拟浏览器上传,自动设置 multipart/form-data)
curl -F "file=@local.jpg" https://api.example.com/upload
- -T, --upload-file:上传文件(PUT 或 POST 请求)
curl -T report.pdf ftp://ftp.example.com/upload/
输出与调试选项
- -v, --verbose 显示详细调试信息(请求头、响应头、连接过程等)
curl -v https://www.baidu.com
- -s, --silent:静默模式(不显示进度条),但错误信息仍会显示。
curl -s https://example.com > content.txt
- -S, --show-error 在静默模式下显示错误信息(需配合 -s)
curl -sS https://invalid-url.com
- --trace:跟踪请求过程(更详细的调试日志)
curl --trace trace.log https://example.com
其它高级选项
- --proxy:使用代理服务器(格式:host:port,支持 HTTP/SOCKS5)
curl --proxy 127.0.0.1:8080 https://example.com
- --insecure, -k:忽略 HTTPS 证书验证(不安全,仅用于测试)
curl -k https://self-signed.example.com
- --user, -u:基本认证(用户名:密码)
curl -u admin:password123 https://auth.example.com
- --ntlm:使用 NTLM 认证(Windows 域环境)
curl --ntlm -u domain\\user:password https://intranet.example.com
- --limit-rate:限制传输速度(如 100k 表示 100KB/s)
curl --limit-rate 100k https://example.com/big-file.zip
- --retry:失败后重试次数(网络波动时有用)
curl --retry 5 https://flaky-api.example.com
- --range:断点续传(请求部分内容,用于下载大文件)
curl --range 0-1024 https://example.com/large-file.zip
- -x, --compressed:启用压缩(自动处理 gzip/bzip2 等编码)
curl -x https://example.com
常用案例
- 模拟域名访问
# 作用:请求 192.0.2.1,但告诉服务器 "我是 fake.example.com"
curl -H "Host: fake.example.com" http://192.0.2.1
- 下载文件
# 短选项 -o,指定输出文件名
curl -o filename.html https://example.com/page.html
# 大写 -O,使用 URL 中的文件名
curl -O https://example.com/filename.zip
常用案例持续更新中...
Linux系统中的curl命令使用详解的更多相关文章
- (转)Linux curl命令参数详解
Linux curl命令参数详解 命令:curl在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具, ...
- Linux系统中有趣的命令(可以玩小游戏)
Linux系统中有趣的命令(可以玩小游戏) 前言 最近,我在看一些关于Linux系统的内容,这里面的内容是真的越学越枯燥,果然学习的过程还是不容易的.记得前几个月初学Linux时,有时候就会碰到小彩蛋 ...
- linux系统的任务计划crontab使用详解
linux系统的任务计划crontab使用详解 其实大部分系统管理工作都是通过定期自动执行某一个脚本来完成的,那么如何定期执行某一个脚本呢?这就要借助linux的cron功能了. 关于cron任务计划 ...
- (转)Linux网络状态工具ss命令使用详解
Linux网络状态工具ss命令使用详解 原文:http://www.landui.com/help/show-5991.html ss 是 socket statistics 的缩写.顾名思义,ss ...
- Linux网络状态工具ss命令使用详解【转】
ss命令用于显示socket状态. 他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix dom ...
- 批处理中的echo命令图文详解
批处理中的echo命令图文详解 1. Echo 显示当前ECHO的状态:ECHO ON 或者ECHO OFF 2. ECHO ON 将ECHO状态设置为ON,将显示命令行,也就是前面的C:\>类 ...
- Linux系统中的tar命令
时间一长什么东西都容易忘记,尤其是一些不常用的东西忘记的更快,所以避免忘记,就记录下来,可以方面使用的时候查询.Tar命令在linux系统中算是一个比较重要的命令,今天就针对该命令进行总结一下. 1. ...
- Linux curl命令参数详解
笔者出处:http://www.aiezu.com/system/linux/linux_curl_syntax.html linux curl是通过url语法在命令行下上传或下载文件的工具软件,它支 ...
- Linux curl命令参数详解--转载
linux curl是通过url语法在命令行下上传或下载文件的工具软件,它支持http,https,ftp,ftps,telnet等多种协议,常被用来抓取网页和监控Web服务器状态. 一.Linux ...
- Linux curl命令参数详解(6/23)
linux curl是通过url语法在命令行下上传或下载文件的工具软件,它支持http,https,ftp,ftps,telnet等多种协议,常被用来抓取网页和监控Web服务器状态. 在Linux中c ...
随机推荐
- STM32的SYSTICK 定时器(系统滴答定时器)
什么是SysTick? 这是一个24位的系统节拍定时器system tick timer,SysTick,具有自动重载和溢出中断功能,所有基于Cortex_M3处理器的微控制器都可以由这个定时器获得一 ...
- 魔方求解器程序(层先法,java版本)
实现了一个三阶魔方的层先法求解程序:https://github.com/davelet/java-puzzle-resolver 欢迎试用. 用法 1. 随机试用 不关注起始状态的话可以用程序的随机 ...
- MySQL常用SQL 语句
--备份数据库 mysqldump -u用户名 -h主机名 -p密码 数据库名 > filename.sql --备份数据库中的某个表 mysqldump -u用户名 -h主机名 -p密码 数据 ...
- OpenGL绘制YUV、OpenGL 实现画质模糊以及 OpenGL ES 实现画质模糊
本文介绍如何采用 Qt + OpenGL 绘制 YUV 数据,并通过 OpenGL 来实现画质模糊. 前言 我们在开发音视频程序的时候,对于解码后帧的渲染往往有几个操作需要做: 将 YUV420 格式 ...
- 【HTML】步骤进度条组件
HTML步骤进度条 效果图 思路 分份: 有多少个步骤就可以分成多少分,每份宽度应该为100%除以步骤数,故以上效果图中的每份宽度应该为25%,每份用一个div. 每份: 每份中可以看成是三个元素,一 ...
- git 访问方式浅谈
小小总结下git的访问方式,留爪. git访问方式简介 https:每次fetch/push/pull都需要输入username & password ssh:通过ssh-keygen生成的公 ...
- Go初入武林之乘法表
为统一管理源码, 请到gitee中查看. GoTimesTable
- CSS实现单行显示文本并适应浏览器大小
实现 .text { white-space:nowrap; /*文本不换行*/ overflow: hidden; /*超出文本隐藏*/ text-overflow:ell ...
- study Rust-5【Slice】
另一个没有所有权的数据类型是 slice.slice 允许你引用集合中一段连续的元素序列,而不用引用整个集合. [字符串Slice熟悉掌握的很勉强,通过动手来进步加深认识] 字符串slice let ...
- 行为识别TSM训练ucf101数据集
序言 最近有个行为检测的需求,打算用行为识别做,纯小白入这个方向,啃了两周的TSM原理和源码,训练好自己的数据集后,发现好像没法应用到自己的需求场景??玛德!算了,还是要记录一下.原理就没别要讲了,网 ...