Skip to content

About

一个完全在本机运行的 Chrome 书签有效性检测工具

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Bookmark Checker

Bookmark Checker 是一个完全在本机运行的 Chrome 书签有效性检测工具。将 Chrome 导出的 bookmarks.html 拖入窗口,即可批量检查失效、超时、需要登录及服务器异常的链接。

技术栈:Electron、Vue 3、TypeScript、Vite、pnpm、Cheerio。

界面预览

书签导入与最近检测

Bookmark Checker 书签导入与最近检测界面

检测结果、分类筛选与搜索

Bookmark Checker 检测结果界面

主要功能

  • 拖拽或点击选择 Chrome/Netscape Bookmark HTML
  • 解析书签名称、URL、多层文件夹、ADD_DATE 和 LAST_MODIFIED
  • 规范化 URL 后去重,同时保留用户的原始 URL
  • 在 Electron 主进程中通过 Node.js HTTP/HTTPS 检测,不受浏览器 CORS 影响
  • 优先发送 HEAD 请求,异常时自动尝试 GET
  • 跟随最多 10 次重定向,并记录最终 URL
  • 支持 5、10、20、30 并发
  • 支持 5、10、15、30 秒请求超时
  • 实时显示进度、速度、平均响应时间和分类统计
  • 支持开始、暂停、继续和停止检测
  • 按名称、URL、文件夹路径搜索
  • 通过统计卡片和快捷按钮按状态筛选
  • 结果列表独立滚动,所有结果一次性展示
  • 一键复制书签名称
  • 导出异常结果 CSV、异常书签 HTML 和全部结果 CSV
  • 自动保存最近 10 次完整检测结果,重新打开软件后可直接查看

所有书签和历史记录均保留在本机,不会上传至任何第三方服务。

状态判断

检测结果 判断方式
正常 最终响应为 HTTP 2xx,或重定向后最终成功
需登录 HTTP 401、403
失效 HTTP 404、410、DNS 失败、连接被拒绝、网络不可达等
超时 请求超过配置的超时时间
服务器异常 HTTP 5xx

部分网站不支持 HEAD,因此非正常 HEAD 响应会使用 GET 再检测一次,降低误判率。

使用方法

  1. 在 Chrome 打开书签管理器。
  2. 选择“导出书签”,得到 bookmarks.html。
  3. 将文件拖入 Bookmark Checker,或点击选择文件。
  4. 设置并发数和超时时间,然后开始检测。
  5. 在结果页搜索、筛选、复制或导出书签。

检测完成后会自动写入“最近检测”。首页最多显示最近 10 条记录,点击任意记录可恢复完整结果、统计、搜索、筛选和导出功能。第 11 条记录写入时会自动删除最旧记录;中途停止的任务不会保存。

导出文件

CSV

CSV 使用 UTF-8 BOM,能够直接使用 Excel 打开,包含以下字段:

  • 名称
  • URL
  • 文件夹
  • 状态
  • HTTP 状态码
  • 错误信息
  • 最终 URL
  • 响应时间

Chrome 书签 HTML

异常 HTML 使用标准 Netscape Bookmark 格式,可重新导入 Chrome。导出的书签 <A> 标签包含 target="block"。

环境要求

  • Node.js 20 或更高版本
  • pnpm 10 或更高版本
  • Windows 10/11(当前打包目标)

安装依赖

pnpm install

项目已允许 Electron、electron-winstaller 和 esbuild 执行必要的安装脚本。

开发运行

pnpm dev

测试与构建

pnpm test
pnpm typecheck
pnpm build
  • pnpm test:运行解析器、URL 检测、导出、IPC 数据转换和历史存储测试
  • pnpm typecheck:检查主进程、preload 和 Vue Renderer 类型
  • pnpm build:生成生产构建到 out/

Windows 打包

生成可直接运行的解包目录:

pnpm run pack

输出位置:

dist/win-unpacked/Bookmark Checker.exe

生成 NSIS 安装程序:

pnpm dist

输出位置:

dist/Bookmark Checker Setup 1.0.0.exe

pack 和 dist 已通过 cross-env 配置 Electron 与 electron-builder 国内镜像,无需手动设置 PowerShell 环境变量。

打包前请关闭正在运行的 dist/win-unpacked/Bookmark Checker.exe,否则 Windows 会锁定输出目录并产生 EBUSY 错误。

项目结构

src/
├── main/
│   ├── index.ts                 Electron 主进程入口
│   ├── ipc.ts                   文件、检测、导出、历史和剪贴板 IPC
│   └── services/
│       ├── bookmark-parser.ts   Chrome 书签解析与 URL 去重
│       ├── url-checker.ts       HTTP/HTTPS 检测和状态分类
│       ├── check-manager.ts     并发、暂停、继续和停止
│       ├── exporter.ts          CSV 与 HTML 导出
│       └── history-store.ts     最近 10 次结果持久化
├── preload/
│   └── index.ts                 受限 Renderer API
├── renderer/
│   ├── index.html
│   └── src/
│       ├── App.vue              页面状态和业务交互
│       ├── styles.css           应用样式
│       └── components/          拖拽、进度、统计和结果组件
└── shared/
    ├── channels.ts              IPC 通道
    └── types.ts                 共享 TypeScript 类型

tests/                           Vitest 自动化测试

本地数据与安全

  • nodeIntegration 已关闭
  • contextIsolation 和 Renderer sandbox 已开启
  • Renderer 只能调用 preload 暴露的受限 API
  • 文件读取、URL 检测、并发管理、历史存储、剪贴板和导出均由 Electron 处理
  • 外部链接交给系统默认浏览器打开
  • Renderer 页面导航被阻止
  • 检测历史保存在 Electron userData 目录下的 check-history.json
  • 不使用第三方 URL 检测 API

当前边界

  • 仅检测 HTTP/HTTPS;file:、javascript: 等协议会标记为不支持。
  • 停止任务会立即停止分配新请求;已发出的少量请求会自然结束,但不会再写入结果。
  • 历史记录只保存完整检测结果,最多 10 条。
  • 当前未配置自定义应用图标,Windows 打包使用 Electron 默认图标。

About

一个完全在本机运行的 Chrome 书签有效性检测工具

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages