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 ...
随机推荐
- Flink Watermark 不止可以用时间戳衡量
https://mp.weixin.qq.com/s/L5PqtcmffCIq_CnUs0WS3g
- camunda工作流实战项目【PRO版】(表单设计器+流程编辑器,零代码创建流程)
pro版本主要对流程设计器.表单模块做了优化和改造,下面是各版本功能对比 一.整体情况介绍 基于ruoyi平台和camunda工作流开发而成,结合bpmn.js流程编辑器和vform表单设计器,实现常 ...
- 码云git笔记
以后要日常使用这个东西,所以今天又学习了下,具体链接如下: 码云帮助中心https://gitee.com/help/articles/4122 先记录一点简单的入门东西: Git 全局设置: git ...
- CATIA许可证破解方法(CMD版)
<<< catia的DS License Server Administration后不会自动弹出GUI界面,就需要使用CMD来破解安装许可证. <<< 1. ca ...
- 『Plotly实战指南』--折线图绘制基础篇
在数据分析的世界中,折线图是一种不可或缺的可视化工具. 它能够清晰地展示数据随时间或其他变量的变化趋势,帮助我们快速发现数据中的模式.趋势和异常. 无论是金融市场分析.气象数据监测,还是业务增长趋势预 ...
- linux 源码安装完php后在目录下找不到php.ini的问题
首先,我们需要确定php版本的php.ini文件需要放在个目录下 我们先执行以下命令查看php的php.ini目录应该放在那个地方 php -i |grep php.ini 效果如下,现在我们确定好了 ...
- 阿里Java开发手册泰山版来袭
阿里Java开发手册自2016年12月7日发布公开版以来,距今已发布7个版本,被越来越多的公司拿来直接或略微修改后作为公司的Java开发规范手册,嫣然成为行业的标杆. 就在昨天早上8点,阿里Java开 ...
- 在 PHP 中,原生并没有提供内置的定时器机制,定时触发的守护进程,其中一个常见的方式是使用循环和时间戳来检查触发时间。自定义事件触发
<?php class TimerDaemon { private $logfile; private $fp; private $triggerInterval; // 触发间隔,以秒为单位 ...
- langchain0.3教程:从0到1打造一个智能聊天机器人
在上一篇文章<大模型开发之langchain0.3(一):入门篇> 中已经介绍了langchain开发框架的搭建,最后使用langchain实现了HelloWorld的代码案例,本篇文章将 ...
- 写给自己的话,学院派 C 转 实用派Java
本人计算机专业出身,学校学习过C / VC++. 写过很一般的代码, 刷过北大百炼 ACM 的部分试题.学过数据结(还可以),数据库(学的一般会用sql).用 c指针链表构建过二叉树实现过哈夫曼编码加 ...