0

curl重定向次数和最终地址同时获取:3个实战技巧让跳转信息一目了然

2026.06.05 | youres | 30次围观

为什么要同时获取重定向次数和最终地址

在做网站巡检、短链追踪或API调试时,一个URL可能经过多次301/302跳转才到达终点。如果只能看到最终地址,却不知道跳了几次,排查问题时会少关键信息。

比如:短链服务返回302,你想知道最终落地页是哪个URL,同时还要确认跳转次数是不是符合预期(避免重定向循环)。这时候就需要num_redirectsurl_effective两个变量配合使用。

核心变量说明

curl 的 -w/--write-out 参数提供以下两个与重定向相关的变量:

  • num_redirects:重定向次数,整数,0表示没有重定向
  • url_effective:最终有效的URL,即经过所有重定向后的终点地址

注意:必须加 -L 参数,curl 才会跟随重定向,否则这两个变量不会有实际意义。

实战技巧一:基本用法和格式化输出

最简单的用法,一次性输出重定向次数和最终URL:

curl -L -w '次数: %{num_redirects}\n最终地址: %{url_effective}\n' -o /dev/null -s https://example.com

参数说明:

  • -L:跟随重定向
  • -w:指定输出格式
  • -o /dev/null:丢弃响应体,只关心跳转信息
  • -s:静默模式,不显示进度条

如果要把结果导入脚本处理,推荐用逗号分隔格式:

curl -L -w '%{num_redirects},%{url_effective}\n' -o /dev/null -s https://example.com

输出示例:2,https://www.example.com/

实战技巧二:批量检测多个URL

实际运维中经常需要批量检测一组URL。结合 while 循环可以这么写:

while read url; do
  result=
  echo " -> "
done < urls.txt

输出CSV格式,方便导入Excel分析:

echo "原始URL,最终URL,重定向次数" > result.csv
while read url; do
  final=
  redirects=
  echo ",," >> result.csv
done < urls.txt

实战技巧三:输出JSON格式便于程序解析

如果需要将结果接入监控系统,输出JSON格式会更方便。使用 -w @模板文件 的方式:

先创建模板文件 curl_format.txt

{
  "url": "%{url_effective}",
  "redirects": %{num_redirects},
  "http_code": %{http_code}
}

然后执行:

curl -L -w @curl_format.txt -o /dev/null -s https://example.com

输出:

{
  "url": "https://www.example.com/",
  "redirects": 2,
  "http_code": 200
}

常见应用场景

场景一:检测短链的最终落地页

短链服务(bit.ly、t.co等)通常返回302。用一条命令就能拿到最终地址:

curl -L -w '%{url_effective}' -o /dev/null -s https://bit.ly/xxxx

场景二:排查重定向循环

如果 num_redirects 异常大(接近默认上限50),说明可能存在重定向循环。用 --max-redirs 限制跳转次数来定位问题:

curl -L --max-redirs 5 -w '%{num_redirects}\n' -o /dev/null -s https://example.com

场景三:验证网站迁移后的跳转

HTTP迁移到HTTPS或域名变更时,批量验证旧URL是否正确跳转到新地址:

for url in http://old-domain.com/page1 http://old-domain.com/page2; do
  final=
  echo " -> "
done

注意事项

  • 必须加 -L 参数,否则 num_redirects 始终为0
  • PowerShell 中 curl 是 Invoke-WebRequest 的别名,需用 curl.exe 调用真正的 curl
  • 结合 -I 参数可只发送HEAD请求,减少流量
  • -v 参数可查看完整的跳转链路,配合 num_redirects 定位哪一跳有问题

相关文章

总结

通过 curl 的 -w 参数,同时获取 num_redirectsurl_effective,可以快速诊断URL的重定向行为。本文介绍的3个实战技巧——基本格式化输出、批量检测脚本、JSON格式输出——基本覆盖了日常运维的主要场景。建议结合实际需求选择合适的输出格式。

版权声明

本文仅代表个人观点。
本文系AI辅助作者原创,未经许可,转载请保留原文链接。

发表评论