网站链接检查神器:broken-link-checker 帮你 5 分钟扫完整站 404
【免费下载链接】broken-link-checkerFind broken links, missing images, etc within your HTML.项目地址: https://gitcode.com/gh_mirrors/br/broken-link-checker
broken-link-checker 是一个免费的 Node.js 网站链接检查库,一条命令递归爬取整站,自动排查 404 坏链、缺失图片与失效资源。它并发快、配置全、输出清晰,新手也能直接上手,是 SEO 运维和内容维护的省心之选。
一个 404,到底毁掉什么
先说点扎心的。
用户点击一篇文章里的配图,转圈半天,弹出一张 404;客户顺着官网导航找到产品页,页面空白。坏链这种东西,平时你感觉不到它的存在,直到有人投诉、有人流失。
更麻烦的是:
- 内容站:一篇老文里埋着十几个链接,改版之后哪个断了,根本无从查起;
- 电商站:商品图挂了不报 404 就少一张卖点图,等运营发现已经过了活动期;
- 文档站:API 文档之间的交叉引用,人肉点一遍要一下午,还总会漏。
手动点链接?页面多时就是体力活。正则抓<a href>?会漏掉图片、样式表、meta 跳转。这时就需要一个真正的坏链检测工具——broken-link-checker(下文简称 blc)。
网站链接检查工具运行效果
能力拆解:为什么它扫得快、扫得准
blc 不是"遍历链接挨个请求"的朴素实现,它把几件性能关键的事都做对了。用大白话讲:
并发队列 + 温和限速
默认所有 URL 并发检查,同时用maxSocketsPerHost(默认每主机 2 个)限制对单台服务器的压力。翻译过来:扫得猛,但不会把目标站打挂。想更温和就调rateLimit和--requests,想快就放开——节奏自己定。
流式解析 + 响应缓存
HTML 不是"下完再读",而是边流边解析(parse5-parser-stream驱动,核心逻辑在lib/internal/streamHTML.js),页面没下完就开始提链接。同时请求结果会缓存(cacheResponses默认开启,缓存 1 小时):同一个 URL 被十篇文章引用,也只真正检查一次。大站的收益非常直观。
按 WHATWG 标准解析,不只盯<a href>
它遵循 WHATWG 的 HTML 与 URL 规范,检查范围远不止超链接和图片:media 标签、frames、meta 跳转、样式表、脚本、表单甚至 metadata,都能按filterLevel分级纳入检查。页面里写了<base href>?相对 URL 照样能被正确还原。中文、日文这类 Unicode 链接名也不在话下。
礼貌地爬:robots 协议支持
默认遵守 robots.txt、X-Robots-Tag头、rel="nofollow"和 meta 声明,被排除的链接会明确标注BLC_ROBOTS原因,而不是默默跳过。想强制跟遍所有链接,加一个-f即可。合规和彻底,二选一,由你决定。
重定向与压缩,全自动处理
301/302 跟到哪里,检查的就是最终落点;gzip、deflate 响应自动解压;带 Basic 认证的后台页面也能进。这些"边角料"恰恰是别的工具最容易出假报的地方。
谁在用它:三类真实场景
内容团队 / 电商 / 文档库版本发布前跑一遍,把坏链和裂图在用户之前揪出来。文档库特别适合配--exclude关键词过滤,只盯站内路径,几百篇页面几分钟出结果。
教育与政务站点资源链接多、更新慢、责任大。定期(比如每月一次)全量扫描并归档报告,BLC_INVALID、HTTP_404这类原因码直接能当工单内容用,方便排期修复。
CI/CD 流水线它同时是一个正经的 Node.js 库:SiteChecker、HtmlChecker等类暴露了完整事件(link、page、site、end),可以嵌入构建流程,发现坏链就让流水线变红。详见 lib/public/ 下的公开类。
亮点速览:一张表看懂
| 维度 | 说明 |
|---|---|
| 检查范围 | 超链接、图片、media、frames、meta 跳转、CSS/JS/表单(按filterLevel分级) |
| 速度 | 默认全并发 + 响应缓存,maxSockets/--requests可调 |
| 解析能力 | WHATWG 规范 HTML/URL 解析,支持<base href>与 Unicode |
| 网络处理 | 重定向、gzip/deflate 解压、Basic 认证、HEAD 失败自动重试 GET |
| 礼貌爬取 | 默认遵守 robots.txt / nofollow / X-Robots-Tag,可一键关闭 |
| 过滤 | includedKeywords/excludedKeywords通配词过滤,内外链可分别排除 |
| 报告 | 每个链接带原因码(如HTTP_404、BLC_ROBOTS),可直接生成报告 |
| 集成 | CLI 与事件式 API 双形态,天然适合 CI/CD |
| 许可 | MIT,免费可商用,Node.js ≥ 14 |
原因码对照表见 lib/internal/reasons.js,每个坏链为什么坏,一目了然。
快速上手:一条命令排查整站坏链
前提是装了 Node.js(≥ 14)。
第 1 步:全局安装
npm install broken-link-checker -g第 2 步:递归扫描你的站点
blc http://yoursite.com -r -o-r表示递归爬整站,-o表示按页面中链接出现顺序输出。本地文件也行:blc path/to/index.html -r。
第 3 步:看报告
终端会实时显示进度和每条链接的结果,坏链红色标注并附原因码:
Getting links from: http://yoursite.com/ ├─ OK─── http://yoursite.com/about.html ├─ OK─── http://yoursite.com/images/logo.png ├─ BROKEN─ http://yoursite.com/images/banner-old.png (HTTP_404) ├─ SKIP── http://yoursite.com/admin (BLC_ROBOTS)常用选项,按需加:
-e只查站内链接,跳过外链(外部站不背你的锅);--include "*.pdf"只检查 PDF 链接,--exclude "temp/*"排除临时目录;--host-requests 1对目标站更温和;blc --help查看完整选项(源码在 lib/cli.js)。
进阶:写进代码里
const {SiteChecker} = require('broken-link-checker'); const siteChecker = new SiteChecker() .on('link', (result) => { if (result.get('isBroken')) { console.log(result.get('rebasedURL') ?? result.get('originalURL'), '->', result.get('brokenReason')); } }) .on('end', () => console.log('扫描完成')); siteChecker.enqueue(new URL('http://yoursite.com'));想暂停随时pause(),想继续resume(),工程化程度相当高。
一句话总结
网站链接检查、404 排查、缺图定位——三件事,一条blc命令全包。装完它,你会爱上"发版前先扫一遍"的踏实感。现在就打开终端,给你的站点做一次全面体检吧。
【免费下载链接】broken-link-checkerFind broken links, missing images, etc within your HTML.项目地址: https://gitcode.com/gh_mirrors/br/broken-link-checker
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考