寻找一个网站检测其是否存在死链

上周帮朋友看他那个做了三年的寻找独立博客,点开友情链接页面,个网五个里有三个打不开。站检他一脸茫然:“我哪知道它们什么时候挂的否存?”这事挺常见——网站运营久了,外链、死链图片、寻找下载资源都可能悄悄失效,个网用户点进去看到 404,站检体验直接掉一截。否存更麻烦的死链是搜索引擎也会降低对站点的评价。所以,寻找定期检测死链不是个网可选项,是站检维护的基本功。

那用什么工具?否存我试过七八种,最后留在浏览器书签里的死链只有三个。先说最顺手的:W3C Link Checker。它原本是万维网联盟给 HTML 标准做验证的附属工具,免费、无需注册,把网址粘进去就能跑。缺点是速度一般,一个两百页的站可能要等两三分钟,而且只检查 <a> 标签里的链接,图片和 CSS 里的引用它不管。但胜在结果清晰,每个死链会标出状态码和所在页面,直接复制就能改。

如果你要查全站资源——包括图片、脚本、iframe——那得用 Dr. Link Check。这名字听着像个人项目,实际上是个挺成熟的在线服务。免费版每月能扫 1500 个链接,对中小站点够用。我拿它扫过一个企业官网,它连 background-image 里引用的雪碧图都揪出来了,还标了“重定向链过长”这种细节问题。注册要邮箱,但不用绑卡。扫描时可以选择并发线程数,调高了快,但别太过分,有些虚拟主机扛不住。

第三个是 Dead Link Checker,界面丑得像 2005 年的产物,但有个独门绝技:支持定时任务。你可以设成每周一凌晨自动扫一次,结果发到邮箱。我给自己维护的两个小站配了这个,省得老惦记。免费账户只能存一个任务,链接上限 2000 个。够用了。它的报告是 CSV 格式,丢进 Excel 筛一下“404”和“500”就行。

有人问,能不能自己写脚本?当然可以。Python 的 requests 加 BeautifulSoup,五十行代码就能爬全站。但实际跑起来你会遇到一堆破事:相对路径要拼绝对地址、JavaScript 渲染的链接抓不到、有些服务器对频繁请求返回 429、还有超时设置多少秒合适……我写过一版,跑自己博客没问题,换到别人站上就各种误报。后来想通了——工具存在的意义就是替你处理这些脏活。除非你是要集成到 CI 流程里,否则没必要重复造轮子。

检测频率看站点规模。个人博客一个月一次足够。电商或资讯站,每周一次。改版之后必须立刻扫一遍,这是铁律。我见过一个案例:某公司换 CDN 时忘了迁移旧图片路径,三天后才发现首页轮播图全裂了。用 Dr. Link Check 扫一下,十秒钟的事。

最后说个坑。很多工具默认把“403 Forbidden”也算死链,但有些网站故意对爬虫返回 403,实际浏览器能打开。所以看到 403 别急着删链接,先手动点一下确认。还有 301 和 302 跳转,不算死链,但跳转层数太多会影响加载速度,工具一般会单独列出来。处理完死链后,记得去 Google Search Console 提交一下更新,让搜索引擎重新抓取。

就这些。工具不复杂,难的是养成习惯。你那个友情链接页面,现在就可以丢进 W3C Link Checker 跑一遍——我赌五毛钱,至少有一个是红的。