文章里 30 个外链,半年后抽查有 11 个返回 404,其中 4 个域名已经过期,页面上锚文本还显示得好好的。乍看像缓存或者权限的锅,追下去往往不是。

python check_links.py --input links.txt --timeout 10 --output dead.csv
# dead.csv 只保留 404 和 410

追下去是这么回事:外链是编辑手工加进正文的,发布后没有任何巡检,链接失效只能等读者反馈。站内也没有外链清单,出了断链找不到全部位置。

「外链死链巡检」这类改动最怕改一半,回滚脚本先准备好,再动生产。测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。

线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。

具体做法是,导出所有文章正文 提取 http 链接去重;用脚本批量请求 记录状态码和最终跳转;把 404 的链接替换或加删除线 写回巡检记录。

验收就看一点,巡检脚本跑完,dead.csv 里的链接都在正文中处理过,抽查 5 个旧链接返回 200 或已移除。

作者 9823189