死链检测表面上看是找404页面,实际上要处理的情况复杂得多。软404、重定向链、超时连接、DNS解析失败,这些都属于失效链接范畴。不同工具检测精度差异很大,选错工具可能漏掉一半以上的问题链接。
这是我用得最多的工具。免费版支持500个URL,付费版每年199英镑,不限制URL数量。它的检测逻辑是模拟搜索引擎爬虫行为,可以自定义User-Agent,这对检测那些对爬虫返回不同状态码的网站很重要。
具体操作步骤:
有个细节要注意:Screaming Frog默认不执行JavaScript。如果你的网站是React或Vue渲染的,需要在Configuration > Spider > Rendering里选择JavaScript渲染模式,爬取速度会慢很多,但能抓到动态加载的链接。
这个工具免费,界面古老但检测外链很靠谱。它的优势是能检测出链的完整状态,包括重定向次数、最终目标URL、响应时间。操作很简单:File > Check URL,输入网址,勾选Check external links,然后等它跑完。报告会按状态码分组,红色标记的就是死链。
缺点是单线程运行,大站点会很慢。5000个URL以内用着还行,超过这个量建议换工具。
Mac上没有Xenu,用Integrity替代。免费版功能就够用,支持多线程爬取,速度比Xenu快不少。设置里把Check links设为All,把Report bad links only取消勾选,这样能拿到完整报告。
网址是deadlinkchecker.com,免费版单次最多检测2000个页面。适合小站点或者阶段性抽查。输入网址后选择Check all pages on the site,它会自动爬取全站。报告会列出每个死链的页面位置和链接文本,方便定位修改。
局限性在于无法自定义爬取规则,遇到需要登录的页面或者带参数的动态URL,检测效果会打折扣。
这个工具的特色是能检测软404。什么叫软404?就是页面返回200状态码,但内容实质是“页面不存在”的提示。普通检测工具会把这种链接标记为正常,Dr. Link Check会分析页面内容特征来判断。
付费版每月15美元起,支持定时自动检测和邮件报告。适合需要持续监控的站点。
Chrome插件,点击图标就能检测当前页面所有链接。适合编辑发布内容前快速检查。它会用不同颜色标记:绿色是正常,红色是死链,黄色是警告(比如重定向)。
局限是只能检测当前打开的页面,没法批量处理。但胜在方便,内容团队人手装一个能减少很多发布后的死链问题。
这个插件比Check My Links多一个功能:显示每个链接的反链数据。点击链接旁边的数字,能看到哪些页面引用了这个链接。修死链的时候,这个信息能帮你判断影响范围。
如果你需要检测几十万级别的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列筛选。重点关注:
内部死链和外部死链的处理方式完全不同:
知道某个链接失效了,还得知道哪些页面引用了它才能修改。Screaming Frog的Inlinks列会显示引用页面数量,点击数字能看到具体来源URL列表。把这个列表导出,按页面优先级排修改顺序。
如果同一个死链出现在几十个页面上,逐个修改效率太低。用数据库批量替换或者CMS的全局搜索替换功能。WordPress可以用Better Search Replace插件,其他CMS找对应的批量替换方案。
大多数死链检测只关注a标签的href属性,但失效链接还藏在这些地方:
Screaming Frog默认会检测这些资源类型,但Xenu和Dead Link Checker可能只检测a标签链接。如果你用后者,需要额外用浏览器的开发者工具Network面板检查资源加载情况。
一次性检测只能解决当前问题,链接状态会持续变化。外链尤其容易失效,对方网站改版、关停、换域名都会导致你的外链变成死链。
搭建持续监控的方案:
screamingfrogseospider --crawl https://example.com --headless --output-folder /reports/ --export-tabs "Response Codes:All",然后写个脚本解析报告,发现新增4xx就发通知。不是所有站点都需要天天检测。根据更新频率和规模来定:
检测死链本身不复杂,复杂的是后续的修复决策和流程。工具选对,流程理顺,这件事就能从救火变成日常维护。
本文由小艾于2026-04-28发表在爱普号,如有疑问,请联系我们。
本文链接:https://www.ipbcms.com/10748.html