网站维护必须掌握的curl命令的用法

作为全栈开发者,你日常运维多台宝塔服务器,curl 是排查接口、测试 WebHook、下载资源的必备利器。以下是按场景梳理的 curl 用法速查表,可直接复制到终端执行。


一、基础请求场景

场景 命令 说明
GET 请求 curl https://api.example.com/users 默认输出到 stdout
保存响应 curl -o file.json https://api.example.com/data -o 指定文件名
跟随跳转 curl -L https://bit.ly/xxx -L 跟随 3xx 重定向
显示响应头 curl -I https://example.com -I 仅取 header(HEAD 请求)
显示请求全过程 curl -v https://example.com -v verbose 模式,调试 SSL/跳转必备

二、POST / 提交数据

复制代码
# 1. 表单提交(Content-Type: application/x-www-form-urlencoded)
curl -X POST -d "name=john&age=30" https://api.example.com/form

# 2. JSON 提交(API 最常见)
curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"user":"admin","pass":"123456"}' \
  https://api.example.com/login

# 3. 从文件读取 JSON 体
curl -X POST -H "Content-Type: application/json" \
  -d @payload.json \
  https://api.example.com/webhook

# 4. 上传文件(multipart/form-data)
curl -F "file=@/path/to/local.zip" \
     -F "description=备份文件" \
     https://api.example.com/upload

三、请求头与认证

复制代码
# 自定义 Header(Token 认证场景)
curl -H "Authorization: Bearer eyJhbG..." \
     -H "X-Request-Id: $(date +%s)" \
     https://api.example.com/protected

# Basic 认证(用户名:密码)
curl -u admin:password https://api.example.com/admin
# 或显式写法
curl -H "Authorization: Basic $(echo -n 'admin:pass' | base64)" ...

# 模拟浏览器 User-Agent(绕过简单反爬)
curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64)..." \
     https://example.com

四、下载与断点续传

复制代码
# 限速下载(防止占满宝塔服务器带宽)
curl --limit-rate 500k -O http://example.com/large.zip

# 断点续传(大文件下载中断后恢复)
curl -C - -O http://example.com/large.sql.gz

# 批量下载(按序号)
curl -O https://example.com/img_[1-10].jpg   # 下载 img_1.jpg ~ img_10.jpg

五、代理与调试(排查宝塔/Nginx 问题)

复制代码
# 通过本地 Socks5 代理测试(排查 IP 被封场景)
curl -x socks5h://127.0.0.1:1080 https://ip.sb

# 指定解析到某 IP(绕过 DNS,直接测试源站)
curl --resolve example.com:443:1.2.3.4 https://example.com

# 测试 Nginx 反向代理是否生效
curl -H "Host: api.example.com" http://127.0.0.1:8080/health

六、SSL/TLS 相关(自签证书场景)

复制代码
# 忽略证书验证(测试环境临时使用,生产环境慎用)
curl -k https://self-signed.badssl.com

# 指定 CA 证书(宝塔面板自签证书调试)
curl --cacert /www/server/panel/ssl/certificate.pem \
     https://panel.example.com:8888

# 查看证书详情
curl -vI https://example.com 2>&1 | grep -E "(subject|issuer|SSL)"

七、ThinkPHP / FastAdmin 接口调试专用

复制代码
# 测试 TP 路由(带 pathinfo)
curl https://sks.fuuaapp.com/index.php/api/v1/user

# 模拟 AJAX 请求(TP 中判断 request()->isAjax())
curl -H "X-Requested-With: XMLHttpRequest" \
     https://sks.fuuaapp.com/api/data

# 带 __token__ 的表单提交(TP 表单验证)
curl -X POST \
  -d "name=test&__token__=ed558f90d96458c676bc4deeea9ce2e7" \
  https://sks.fuuaapp.com/form/submit

八、实用组合命令(运维脚本用)

复制代码
# 只取 HTTP 状态码(监控脚本用)
curl -s -o /dev/null -w "%{http_code}" https://example.com

# 取接口响应时间(排查慢请求)
curl -s -o /dev/null -w "DNS:%{time_namelookup} Connect:%{time_connect} Total:%{time_total}" https://api.example.com

# 配合 jq 解析 JSON(需先安装 jq)
curl -s https://api.github.com/users/octocat | jq '.id, .login'

# 循环测试 10 次并统计
for i in {1..10}; do curl -s -o /dev/null -w "%{time_total}\n" https://api.example.com; done | awk '{sum+=$1} END {print "Avg:", sum/NR}'

九、Windows 环境注意点

你在 Windows 计划任务中调度 PHP 脚本,若需配合 curl:

复制代码
:: CMD 中注意引号转义
curl -X POST -H "Content-Type: application/json" -d "{\"key\":\"val\"}" https://api.com

:: 或改用文件避免转义地狱
curl -X POST -H "Content-Type: application/json" -d @C:\path\payload.json https://api.com

速记口诀-X 指定方法,-H 加头部,-d 传数据,-o 存文件,-v 看过程,-L 跟跳转,-k 跳过 SSL 验证(测试用)。

相关推荐
予枫的编程笔记4 天前
【Linux进阶篇】Linux网络配置+端口监听实战:ip/ss/iptables常用命令一次吃透
linux·iptables·网络配置·curl·端口监听·ping·ss命令
Wpa.wk9 天前
curl-发送请求 和 tcpdump与wireshark的介绍
测试工具·wireshark·tcpdump·curl
云游云记14 天前
php cURL 常用参数详解与实用指南
开发语言·php·curl
sxy_976121 天前
AX86u官方固件温度监控(CPU,WIFI芯片)
python·docker·curl·nc·nas·温度·ax86u
码农爱学习24 天前
curl使用读回调来分块上报文件
curl
为java加瓦1 个月前
Linux 系统磁盘空间清理指南:安全释放存储空间的完整方案
linux·curl
太空眼睛1 个月前
【MCP】使用SpringBoot基于Streamable-HTTP构建MCP-Server
spring boot·sse·curl·mcp·mcp-server·spring-ai·streamable
风清扬_jd1 个月前
libcurl 开启https一键编译指南【MT方式】
c++·https·curl
码农爱学习2 个月前
curl编程实例-上传文件
curl