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 ...
随机推荐
- OpenLayers change 事件获取当前值
这里有个 change:resolution 事件 但是事件的内容没有value,只有oldValue Zc {type: 'change:resolution', target: F, key: ' ...
- .NET周刊【2月第3期 2025-02-16】
国内文章 我们是如何解决abp身上的几个痛点 https://www.cnblogs.com/jackyfei/p/18709265 张飞洪分享了abp框架在.net社区的使用经验,认为其在模块化.D ...
- MySQL - 数据更新场景
Excel文件数据更新到表A的某两个字段 Excel文件中Sheet1页有两列,一列是序号,另一列是手机号.表A中有对应的序号列和手机号列. 1.首先,使用Navicat将Excel数据导入数据库,注 ...
- vue 判断某个时间小于当前时间
如下 new Date().getTime() 获取当前时间(毫秒) 我需要对比的时间为秒,所以需要除于1000 <div v-if="scope.row.created_at < ...
- Golang 入门 : 类型系统介绍
Go语言类型系统 从计算机底层看,所有的数据都是由比特组成,但计算机一般操作的是固定大小的数,如整数.浮点数.比特数组.内存地址等.但是直接操控底层计算机指令进行编程是非常繁琐和容易出错的,所以Go语 ...
- go strings包
//是否包含指定的字符串中任意一个字符 有一个出现过 就返回true fmt.Println(strings.ContainsAny(s1,"glass")) //返回指定字符出现 ...
- composer init
$ composer init Do not run Composer as root/super user! See https://getcomposer.org/root for details ...
- http状态码413,并提示Request Entity Too Large的解决办法
使用wordpress的用户经常遇到的问题,就是在后台上传多媒体文件的时候,发现文件大小是有限制的,通常是2M.如图: 如果上传的文件超过2M,服务端返回的状态码会是413,同时提示上传失败.实际上, ...
- 解决 Docker 日志文件太大的问题
Docker 在不重建容器的情况下,日志文件默认会一直追加,时间一长会逐渐占满服务器的硬盘的空间,内存消耗也会一直增加,本篇来了解一些控制日志文件的方法. 清理单个文件 运行时控制 全局配置 Dock ...
- elk收集分析nginx日志,并绘制图形
一.修改nginx配置 把nginx日志修改成json格式,在nginx.conf中添加如下内容,重启nginx. log_format log_json '{"@timestamp&quo ...