深色模式
curl 实战 HTTP/HTTPS
摘要:
curl是运维排查 HTTP 服务的瑞士军刀。本文覆盖发请求、看状态码、看耗时、抓 header、设超时,以及忽略证书校验(仅排错时)。
适用环境
bash
curl --version | head -1
# 需要支持 https(通常自带);缺失可装:sudo apt install curl1
2
2
操作步骤
1. 基础 GET 并看状态码
bash
# -s 静默 -o 丢弃正文 -w 自定义输出
curl -s -o /dev/null -w "HTTP %{http_code}\n" https://www.example.com1
2
2
2. 看请求/响应全过程(-v 或 -I)
bash
curl -I https://www.example.com # 只看响应头
curl -v https://www.example.com # 看完整握手+头(排错神器)1
2
2
3. 测耗时(定位慢在哪一段)
bash
curl -s -o /dev/null -w "dns=%{time_namelookup} connect=%{time_connect} ttfb=%{time_starttransfer} total=%{time_total}\n" https://www.example.com1
time_namelookup高 = DNS 慢time_connect高 = TCP 建连慢time_starttransfer高 = 服务端处理慢(TTFB)
4. 设超时,避免脚本卡死
bash
curl --connect-timeout 5 --max-time 10 https://www.example.com1
5. 常见 POST 与自定义头
bash
curl -X POST -H "Content-Type: application/json" \
-d '{"key":"value"}' https://api.example.com/v1/echo1
2
2
6. 排错时临时跳过证书校验
bash
curl -kv https://self-signed.example.com # -k 不验证证书1
验证
bash
# 一条命令同时验证「可达 + 状态码 + 总耗时」
curl -s -o /dev/null -w "code=%{http_code} time=%{time_total}s\n" https://www.example.com1
2
2
返回 code=200 且耗时合理,说明服务、TLS、路由均正常。
常见坑
WARNING
-k/--insecure 会关闭证书校验,仅用于临时排错。正式脚本里用它等于放弃中间人防护;正确做法是把自签证书加入信任链或用 -cacert 指定 CA。
DANGER
脚本里务必加 --max-time,否则目标服务 hang 住时 curl 会一直阻塞,进而拖垮调用方(如监控探针、发布脚本)导致雪崩。