当前位置: 首页 > news >正文

网站链接检查神器: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),仅供参考

http://www.cnnetsun.cn/news/4172728.html

相关文章:

  • AltTab 使用指南:macOS 上的窗口切换技巧
  • C++运算符重载与函数模板:从语法特性到工程实践的核心设计工具
  • Czkawka 跨平台视频查重:从安装到批量清理的完整指南
  • C++模板编程中typename关键字的深度解析与应用实践
  • 数维杯数学建模竞赛:A/B/C三类赛题通用破题思路与实战建模指南
  • TimeSage-MT:构建多轮对话时间序列智能体的评测基准与工程实践
  • andrej-karpathy-skills:把 AI 的“顺手重构“管住
  • 视频标题 - BV1xx411c7mX
  • palera1n 越狱工具:从连上设备到完成越狱的完整指南
  • 5分钟清干净满地物品:流放之路过滤器 NeverSink Filter 快速上手指南
  • 告别手动整理!FileMover开源工具实现文件批量自动化管理
  • wewe-rss RSS订阅管理前端错误监控完整指南:从白屏到分层防御
  • 数学建模中的概率模型:从随机变量到蒙特卡洛模拟的完整指南
  • Auto.js 简介与避坑指南
  • 工业AGV多车路径规划:从轻量级算法到仓库落地实践
  • 从文件到屏幕:Python/java 字符编码、解码、文本处理的底层逻辑解析
  • OPTEE 3.15运行在QEMU ARMv8上
  • MiniMax H3前瞻:技术评估、部署准备与效果验证全指南
  • 机器学习十大经典算法实战指南:从原理到数学建模应用
  • 工业机器人Socket通信:3D视觉引导路径传输的完整协议设计与实现
  • Vue.js面经应用开发实战与核心技巧解析
  • react-rangeslider快速上手指南:5分钟搭建你的第一个React滑块组件
  • 用google-ads-python增删改查广告:10个高频广告操作代码示例,简单到直接复制就能用
  • 为什么国旗有4个字符却只有1个字素簇?unicode-segmentation字素簇完整教程
  • meta与EnTT组合实战:打造C++ ECS游戏引擎的运行时内省与属性编辑基础
  • Physical Token经济学:破解机器人规模化瓶颈的能力复用新范式
  • MobileInfo 设备指纹实践:如何基于 Build 与 Serial 生成不碰撞的设备唯一 ID
  • 单机多GPU利用率最大化:Distributed-TensorFlow-Guide中Worker的GPU分配实战教程
  • 阿里云RTC LTR技术解析:硬件解码支持下的弱网视频抗丢包方案
  • 大模型Agent技术面试核心问题与实战解析