0

curl批量检测网站跳转次数脚本:3个实战脚本让重定向链路无处可藏

2026.06.02 | youres | 31次围观

为什么需要批量检测网站跳转次数

在网站运维和SEO优化中,重定向链路过长会直接影响用户体验和搜索引擎抓取效率。一个URL经过3次以上跳转,不仅拖慢页面加载速度,还会导致UTM参数丢失、权重分散等问题。

手动用curl一个个检查显然不现实,特别是手上有一批域名需要巡检的时候。下面分享3个实战脚本,帮你快速批量检测网站跳转次数。

核心变量:curl -w num_redirects

curl提供了一个专门统计重定向次数的变量num_redirects,配合-w参数使用:

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

输出就是一个数字,表示整个请求过程中发生了几次重定向。这个数字是整个任务的基础。

实战脚本一:批量检测域名列表跳转次数

把需要检测的域名写在一个文本文件里,每行一个URL,然后用脚本批量跑:

#!/bin/bash
# 文件名: batch_redirect_count.sh
# 用法: bash batch_redirect_count.sh urls.txt

URL_FILE=""

if [ -z "" ]; then
  echo "用法:  urls.txt"
  exit 1
fi

echo "URL|跳转次数|最终状态码"
echo "---|---|---"

while IFS= read -r url || [ -n "" ]; do
  # 跳过空行和注释
  [[ -z "" || "" =~ ^# ]] && continue

  redirects=
  final_code=

  echo "||"
done <""

输出是表格格式,方便直接粘贴到表格工具里分析。如果某个域名跳转次数超过3次,就需要重点关注了。

实战脚本二:并行检测加速(xargs版)

域名多的时候,串行检测太慢。用xargs并行跑,速度提升明显:

#!/bin/bash
# 并行批量检测跳转次数(5个并发)

URL_FILE=""
CONCURRENCY=5

check_redirects() {
  local url=""
  local redirects=
  local final_url=
  echo "||"
}

export -f check_redirects

cat "" | xargs -P "" -I {} bash -c 'check_redirects "{}"'

-P 5表示同时跑5个请求,根据自己的网络情况调整。注意并发太高可能被目标服务器限流。

实战脚本三:输出CSV报告(含跳转链路)

只拿到跳转次数还不够,最好能把每次跳转的中间URL也记录下来。这个脚本会输出更详细的CSV报告:

#!/bin/bash
# 输出CSV:URL,跳转次数,最终URL,最终状态码

URL_FILE=""
echo "原始URL,跳转次数,最终URL,最终状态码"

while IFS= read -r url || [ -n "" ]; do
  [[ -z "" || "" =~ ^# ]] && continue

  # 获取跳转次数和最终URL
  result=

  echo ","
done <"" > redirect_report.csv

echo "报告已生成: redirect_report.csv"

生成的CSV可以直接用Excel打开,按跳转次数列排序,一眼看出哪些域名重定向链路过长。

配合url_effective追踪完整跳转链路

num_redirects只告诉你跳了几次,但每次跳到哪里去了?配合url_effective-v参数可以看到完整链路:

curl -v -L 'https://example.com' 2>&1 | grep -i 'location:\|< HTTP'

这个命令会输出每次跳转的状态码和目标URL,帮你精确定位是哪一层跳转出了问题。

常见问题:num_redirects输出0的原因

有时候明明有跳转,但num_redirects输出0,常见原因:

  1. 没有加-L参数:curl默认不跟随重定向,必须加-L才会计数
  2. 跳转次数超过--max-redirs默认值(50):虽然默认50次已经很大,但如果有恶意循环跳转,可能被截断
  3. 用的是302但Location指向自己:形成循环,curl会在达到max-redirs后停止,此时num_redirects显示的是实际跳过的次数

定时巡检:结合cron自动监控

把脚本放到cron里每天自动跑,跳转次数异常时发告警:

# 每天8点检测,结果发邮件
0 8 * * * /path/to/batch_redirect_count.sh /path/to/urls.txt | \
  mail -s "网站重定向巡检报告" your@email.com

也可以用PowerShell版在Windows上跑,配合任务计划程序实现同样效果。

相关文章

总结

批量检测网站跳转次数,核心就是curl -w num_redirects这个组合。三个脚本从简单到完整,可以直接用,也可以根据自己的需求改。

重定向链路越长,用户访问速度越慢,SEO权重流失也越多。建议把跳转次数控制在2次以内,超过3次就要排查是否有不必要的多层跳转了。

版权声明

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

发表评论