当前位置:首页 > SEO问答 > 正文

哪些工具能精准检测死链?如何批量定位网站失效链接?

先说清楚死链检测这件事

死链检测表面上看是找404页面,实际上要处理的情况复杂得多。软404、重定向链、超时连接、DNS解析失败,这些都属于失效链接范畴。不同工具检测精度差异很大,选错工具可能漏掉一半以上的问题链接。

哪些工具能精准检测死链?如何批量定位网站失效链接?

桌面端工具:适合中小规模站点

Screaming Frog SEO Spider

这是我用得最多的工具。免费版支持500个URL,付费版每年199英镑,不限制URL数量。它的检测逻辑是模拟搜索引擎爬虫行为,可以自定义User-Agent,这对检测那些对爬虫返回不同状态码的网站很重要。

具体操作步骤:

  • 下载安装后,在顶部输入框填入目标域名
  • 点击Configuration > Spider > Crawl,勾选Check External Links(检查外链)
  • 在Advanced标签里,把Crawl Outside of Start Folder设为不勾选,避免爬到子域名外
  • 点击Start开始爬取
  • 爬完后点击Response Codes标签,筛选4xx和5xx状态码
  • 导出CSV文件,用Excel筛选排序

有个细节要注意:Screaming Frog默认不执行JavaScript。如果你的网站是React或Vue渲染的,需要在Configuration > Spider > Rendering里选择JavaScript渲染模式,爬取速度会慢很多,但能抓到动态加载的链接。

Xenu's Link Sleuth

这个工具免费,界面古老但检测外链很靠谱。它的优势是能检测出链的完整状态,包括重定向次数、最终目标URL、响应时间。操作很简单:File > Check URL,输入网址,勾选Check external links,然后等它跑完。报告会按状态码分组,红色标记的就是死链。

缺点是单线程运行,大站点会很慢。5000个URL以内用着还行,超过这个量建议换工具。

Integrity(Mac用户)

Mac上没有Xenu,用Integrity替代。免费版功能就够用,支持多线程爬取,速度比Xenu快不少。设置里把Check links设为All,把Report bad links only取消勾选,这样能拿到完整报告。

在线工具:适合快速抽查

Dead Link Checker

网址是deadlinkchecker.com,免费版单次最多检测2000个页面。适合小站点或者阶段性抽查。输入网址后选择Check all pages on the site,它会自动爬取全站。报告会列出每个死链的页面位置和链接文本,方便定位修改。

局限性在于无法自定义爬取规则,遇到需要登录的页面或者带参数的动态URL,检测效果会打折扣。

哪些工具能精准检测死链?如何批量定位网站失效链接?

Dr. Link Check

这个工具的特色是能检测软404。什么叫软404?就是页面返回200状态码,但内容实质是“页面不存在”的提示。普通检测工具会把这种链接标记为正常,Dr. Link Check会分析页面内容特征来判断。

付费版每月15美元起,支持定时自动检测和邮件报告。适合需要持续监控的站点。

浏览器插件:适合逐页检查

Check My Links

Chrome插件,点击图标就能检测当前页面所有链接。适合编辑发布内容前快速检查。它会用不同颜色标记:绿色是正常,红色是死链,黄色是警告(比如重定向)。

局限是只能检测当前打开的页面,没法批量处理。但胜在方便,内容团队人手装一个能减少很多发布后的死链问题。

Link Miner

这个插件比Check My Links多一个功能:显示每个链接的反链数据。点击链接旁边的数字,能看到哪些页面引用了这个链接。修死链的时候,这个信息能帮你判断影响范围。

命令行工具:适合技术人员批量处理

wget + 脚本

如果你需要检测几十万级别的URL,桌面工具和在线工具都扛不住。这时候用wget配合shell脚本是最快的方案。

基本命令:

wget --spider --recursive --level=3 --no-verbose https://example.com 2>&1 | grep -E '404|403|500|502|503'

参数解释:--spider表示不下载文件只检查链接,--recursive递归爬取,--level限制爬取深度,--no-verbose减少输出信息。2>&1把错误输出重定向到标准输出,然后用grep过滤出常见的错误状态码。

更精确的做法是写个脚本,逐行读取URL列表,用curl检测每个URL的HTTP状态码:

while read url; do
  status=$(curl -o /dev/null -s -w "%{http_code}" --max-time 10 "$url")
  if [ "$status" != "200" ]; then
    echo "$url -> $status"
  fi
done < urls.txt

这个脚本设置10秒超时,避免卡在无响应的链接上。结果输出到终端,可以重定向到文件保存。

不同工具检测能力对比

工具 检测外链 JS渲染 软404 批量规模 价格
Screaming Frog 支持 需手动开启 不支持 付费版不限 免费500URL/付费£199/年
Xenu 支持 不支持 不支持 约5000以内合适 免费
Integrity 支持 不支持 不支持 中等规模 免费
Dead Link Checker 支持 不支持 不支持 2000页/次 免费
Dr. Link Check 支持 不支持 支持 按套餐 $15/月起
Check My Links 支持 支持 不支持 单页面 免费
wget+脚本 需配置 不支持 需自定义 理论上不限 免费

批量定位失效链接的完整流程

光有工具不够,关键是流程要对。我实际操作中按这个顺序来:

第一步:全站爬取

用Screaming Frog爬取全站,导出所有内部链接和外部链接。爬取设置里把Crawl External Links打开,这样能同时拿到外链数据。爬完后导出两个报告:Internal All和External All。

第二步:筛选问题链接

在导出的CSV里,按Status Code列筛选。重点关注:

  • 404(页面不存在)
  • 410(永久删除)
  • 500/502/503(服务器错误)
  • 301/302(重定向,需要检查是否指向了错误目标)
  • 超时(Timeout,说明目标服务器无响应)

第三步:分类处理

内部死链和外部死链的处理方式完全不同:

  • 内部死链:检查是否误删了页面,如果是,恢复或做301重定向到相关页面。如果页面确实不再需要,更新所有引用该链接的位置。
  • 外部死链:联系对方网站确认,或者替换为其他可用来源。如果原内容有存档,可以链接到archive.org的快照。

第四步:定位引用来源

知道某个链接失效了,还得知道哪些页面引用了它才能修改。Screaming Frog的Inlinks列会显示引用页面数量,点击数字能看到具体来源URL列表。把这个列表导出,按页面优先级排修改顺序。

第五步:批量修改

如果同一个死链出现在几十个页面上,逐个修改效率太低。用数据库批量替换或者CMS的全局搜索替换功能。WordPress可以用Better Search Replace插件,其他CMS找对应的批量替换方案。

几个容易被忽略的检测点

大多数死链检测只关注a标签的href属性,但失效链接还藏在这些地方:

  • 图片src属性里的链接(图片挂了也算失效)
  • CSS background-image引用的图片
  • script src引用的JS文件
  • link href引用的CSS文件
  • iframe src嵌入的页面
  • 视频和音频资源的source标签
  • rel=canonical指向的URL(如果这个URL失效,搜索引擎会困惑)
  • hreflang标签里的备用页面链接

Screaming Frog默认会检测这些资源类型,但Xenu和Dead Link Checker可能只检测a标签链接。如果你用后者,需要额外用浏览器的开发者工具Network面板检查资源加载情况。

定时监控方案

一次性检测只能解决当前问题,链接状态会持续变化。外链尤其容易失效,对方网站改版、关停、换域名都会导致你的外链变成死链。

搭建持续监控的方案:

  • 小站点:用Dr. Link Check的定时检测功能,设置每周自动扫描一次,发现新死链自动发邮件通知。
  • 大站点:用Screaming Frog的命令行版本,配合cron定时任务。命令示例:screamingfrogseospider --crawl https://example.com --headless --output-folder /reports/ --export-tabs "Response Codes:All",然后写个脚本解析报告,发现新增4xx就发通知。
  • 自定义方案:把站点URL列表存到数据库,用curl脚本定期遍历检测,状态码变化时记录并告警。这个方案灵活度最高,但需要维护脚本和数据库。

检测频率建议

不是所有站点都需要天天检测。根据更新频率和规模来定:

  • 内容频繁更新的站点(新闻、电商):每周检测一次内部链接,每月检测一次外部链接
  • 内容相对稳定的企业站:每月检测一次全站链接
  • 刚做完网站迁移或改版:连续一周每天检测,之后恢复正常频率
  • 外链超过1000条的站点:外链检测频率要高于内链,因为外部变化不可控

检测死链本身不复杂,复杂的是后续的修复决策和流程。工具选对,流程理顺,这件事就能从救火变成日常维护。

最新文章