news 2026/8/23 10:54:56

网站链接检查神器:broken-link-checker 帮你 5 分钟扫完整站 404

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
网站链接检查神器:broken-link-checker 帮你 5 分钟扫完整站 404

网站链接检查神器: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_INVALIDHTTP_404这类原因码直接能当工单内容用,方便排期修复。

CI/CD 流水线它同时是一个正经的 Node.js 库:SiteCheckerHtmlChecker等类暴露了完整事件(linkpagesiteend),可以嵌入构建流程,发现坏链就让流水线变红。详见 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_404BLC_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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/23 10:48:38

AltTab 使用指南:macOS 上的窗口切换技巧

AltTab 使用指南&#xff1a;macOS 上的窗口切换技巧 【免费下载链接】alt-tab-macos Windows alt-tab on macOS 项目地址: https://gitcode.com/gh_mirrors/al/alt-tab-macos 换了 Mac 之后&#xff0c;最难适应的不是 Dock&#xff0c;而是切窗口。系统自带 CommandT…

作者头像 李华
网站建设 2026/8/23 10:48:37

C++运算符重载与函数模板:从语法特性到工程实践的核心设计工具

1. 项目概述&#xff1a;从“语法糖”到“设计利器”的认知跃迁 很多C初学者&#xff0c;包括几年前的我&#xff0c;都曾把运算符重载和函数模板看作是“高级语法”或者“炫技”的玩意儿。老师讲实验13&#xff0c;标题是“运算符重载2与函数模板”&#xff0c;我们可能就按部…

作者头像 李华
网站建设 2026/8/23 10:48:36

Czkawka 跨平台视频查重:从安装到批量清理的完整指南

Czkawka 跨平台视频查重&#xff1a;从安装到批量清理的完整指南 【免费下载链接】czkawka Multi functional app to find duplicates, empty folders, similar images etc. 项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka 硬盘里存满下载的电影、课程录像和…

作者头像 李华
网站建设 2026/8/23 10:48:33

C++模板编程中typename关键字的深度解析与应用实践

1. 从一次编译错误说起&#xff1a;为什么需要 typename &#xff1f; 如果你写过一段时间的 C 模板代码&#xff0c;尤其是涉及容器迭代器或者嵌套类型的时候&#xff0c;大概率见过下面这种让人摸不着头脑的编译错误&#xff1a; template<typename T> void printS…

作者头像 李华
网站建设 2026/8/23 10:44:10

数维杯数学建模竞赛:A/B/C三类赛题通用破题思路与实战建模指南

1. 赛题核心与破题思路总览 又到了一年一度的数维杯数学建模竞赛季&#xff0c;对于很多初次参赛或者希望冲击更高奖项的同学来说&#xff0c;面对A、B、C三道风格迥异的题目&#xff0c;如何快速抓住核心、建立有效的解题框架&#xff0c;往往是决定成败的第一步。我参加过多次…

作者头像 李华
网站建设 2026/8/23 10:42:40

TimeSage-MT:构建多轮对话时间序列智能体的评测基准与工程实践

1. 项目概述&#xff1a;为什么我们需要一个“多轮对话”的时间序列基准测试&#xff1f;如果你最近在关注时间序列分析或者大语言模型智能体&#xff08;Agent&#xff09;的研究&#xff0c;可能会发现一个现象&#xff1a;现有的评测基准&#xff0c;大多还停留在“单轮问答…

作者头像 李华