webshoppe/bookmark-rescue-toolkit

GitHub: webshoppe/bookmark-rescue-toolkit

一款取证级别的书签恢复工具包,可从Windows.old备份中提取30多种浏览器的书签并转换为可导入的HTML或CSV/JSON格式。

Stars: 1 | Forks: 0

# 书签救援工具包 [![GitHub release](https://img.shields.io/github/v/release/webshoppe/Bookmark-Rescue-Toolkit)](https://github.com/webshoppe/Bookmark-Rescue-Toolkit/releases/latest) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![Python](https://img.shields.io/badge/Python-3.8%2B-blue)](https://www.python.org/) [![Platform](https://img.shields.io/badge/Platform-Windows-informational)](https://github.com/webshoppe/Bookmark-Rescue-Toolkit) 一个取证级别、离线优先的工具包,可扫描 `Windows.old` 文件夹或任何 Windows 驱动器备份,从 **30+ 浏览器**中提取书签数据,并将其转换为干净的、可移植的 HTML(用于浏览器导入)以及 CSV/JSON 导出(可接入电子表格、数据库和其他数据工具,例如 Excel、Airtable 或 Notion)。

The Extractor tab configured to copy browser data from a Windows.old folder
Sweeping a Windows backup drive to automatically locate and extract hidden bookmark files.

### Windows 兼容性 提取器可在任何 NTFS 格式化的 Windows 驱动器或 `Windows.old` 文件夹上运行。单文件转换器、保险库构建器、合并器和搜索工具可在任何操作系统上运行,只要您提供兼容的文件(例如复制的 `Bookmarks` 文件或 `places.sqlite`)。 提取器仅限 Windows;转换器、保险库构建器、合并器和搜索工具是跨平台的。 ## 目录 - [功能特性](#features) - [下载(便携版)](#download-portable-build) - [仓库结构](#repository-structure) - [快速开始](#quick-start) - [支持的浏览器](#supported-browsers) - [CLI 快速参考](#cli-quick-reference) - [构建便携版 .exe](#building-a-portable-exe) - [文档](#documentation) - [隐私与安全](#privacy--security) - [贡献指南](#contributing) - [许可证](#license) ## 功能特性 - **一键批量提取**:同时扫描驱动器上每个用户配置文件中 30+ 个浏览器的书签 - **两种转换引擎**:Chromium JSON 和 Firefox SQLite,均可生成通用的 Netscape HTML - **批量保险库构建器**:一次性转换所有内容并生成离线索引仪表板 - **书签合并器**:将多个浏览器合并为一个去重的可导入文件 - **CSV / JSON 导出**:平面导出,兼容 Notion、Airtable、Excel 和自定义数据库 - **实时搜索**:按标题或 URL 跨所有提取的源进行即时搜索,无需转换 - **优雅退出保护**:如果操作仍在运行,关闭前会发出警告 - **自定义图标支持**:将 `icon.ico` 或 `icon.png` 放在 `gui.py` 旁边以自定义窗口品牌 - **路径持久化**:通过 `config.json` 记住上次使用的文件夹 - **便携版 .exe**:使用 `python build.py` 构建独立的 Windows 可执行文件 - **离线优先**:无遥测、无网络调用,任何阶段都不使用外部服务 - **完全模块化**:每个引擎都可作为独立 CLI 工具或可导入的 Python 模块运行 ## 下载(便携版) 如果您只需要应用程序而不需要源代码: 1. 转到项目的 [GitHub Releases 页面](https://github.com/webshoppe/bookmark-rescue-toolkit/releases)。 2. 下载名为 `BookmarkRescue_vX.Y.Z.zip` 的最新文件。 3. 将 zip 解压到任何位置(例如 `C:\Bookmark-Rescue-Toolkit\`)。 4. 打开解压后的文件夹并运行 `BookmarkRescue.exe`。 目标机器上不需要安装 Python。 仅当在受保护的文件夹(如 `C:\Windows.old`)上使用 **提取器** 选项卡时才需要管理员权限(详见 [GUI 入门指南](docs/GUI_WALKTHROUGH.md))。 ## 仓库结构 ``` Bookmark-Rescue-Toolkit/ │ ├── gui.py # Unified GUI - run this to start ├── build.py # Build helper - produces the portable .exe ├── bookmark_rescue.spec # PyInstaller spec for reproducible builds ├── requirements.txt # pip install list (customtkinter only) ├── .gitignore ├── README.md ├── BUILDING.md # Step-by-step guide for building the .exe ├── LICENSE │ ├── icon.ico # Optional: custom .exe and window icon (Windows) ├── icon.png # Optional: custom window icon (fallback/all platforms) ├── config.json # Auto-generated at runtime - stores last-used paths │ # (listed in .gitignore - never committed) │ ├── core/ # Standalone engines (importable or CLI) │ ├── __init__.py │ ├── utils.py # Shared date helpers │ ├── retriever.py # Stage 1 - scan & extract (Tab 1) │ ├── json_to_html.py # Stage 2a - Chromium JSON -> Netscape HTML (Tab 2) │ ├── sqlite_to_html.py # Stage 2b - Firefox SQLite -> Netscape HTML (Tab 3) │ ├── vault_builder.py # Stage 3 - batch convert + dashboard (Tab 4) │ ├── bookmark_merger.py # Stage 4 - merge, deduplicate, CSV/JSON export (Tab 5) │ ├── archive_beautifier.py # CLI-only - styled HTML5 archive (alternate output) │ └── search.py # Search engine - query across all sources │ ├── docs/ │ ├── GUI_WALKTHROUGH.md # Tab-by-tab GUI guide with scenarios │ ├── MANUAL_TOOLS.md # CLI reference for all seven engines │ └── CUSTOMIZATION.md # Adding browsers, themes, icons, extending the code │ ├── assets/ # (repo only - intentionally excluded from the portable build) │ └── screenshots │ └── .gitkeep # (empty file so git tracks the folder) │ └── sandbox/ # (optional contributor tool - not in dist build) ├── BRT_Sandbox.wsb ├── Launch_BRT_Sandbox.bat ├── sandbox_startup.bat ├── generate_mock_data.py └── SANDBOX_README.md ``` ## 快速开始 ### 前置条件 - Python **3.10+**(在 3.12 上开发和测试) - 运行 GUI 的桌面环境 - 在 Windows 上扫描 `Windows.old` 文件夹时**以管理员身份运行** ### 1. 克隆仓库 ``` git clone https://github.com/webshoppe/bookmark-rescue-toolkit.git cd Bookmark-Rescue-Toolkit ``` ### 2. 设置虚拟环境 **Windows:** ``` py -3.12 -m venv .venv .venv\Scripts\activate ``` **macOS / Linux:** ``` python3 -m venv .venv source .venv/bin/activate ``` ***完成工作后,您可以使用以下命令停用虚拟环境:*** ``` deactivate ``` ### 3. 安装依赖 ``` pip install -r requirements.txt ``` 唯一的外部依赖是 `customtkinter`。其他一切都随 Python 标准库一起提供。 ### 4. 启动应用程序 ``` python gui.py ``` ### 5. 两步完整恢复 | 步骤 | 选项卡 | 操作 | |---|---|---| | **1** | 选项卡 1 - 提取器 | 设置源(`C:\Windows.old`)和输出文件夹。点击**运行提取**。 | | **2** | 选项卡 4 - 保险库构建器 | 设置源(步骤 1 的输出)和站点文件夹。点击**生成保险库站点**。 | 打开站点文件夹中的 `index.html` - 完整的离线书签保险库就绪。 **需要一个干净的可导入文件?** 使用选项卡 5 - 合并器将所有浏览器合并去重为一个 HTML 文件或导出为 CSV/JSON。 **转换单个文件?** 直接使用选项卡 2(Chromium JSON)或选项卡 3(Firefox SQLite)。 **想在转换前搜索?** 点击标题中的绿色**搜索**按钮,无需转换即可按标题或 URL 跨所有提取的源进行搜索。 ## 支持的浏览器 ### Chromium 系列(JSON 格式) | 浏览器 | 涵盖的变体 | |---|---| | Google Chrome | 稳定版、Beta、Dev、Canary | | Microsoft Edge | 稳定版、Beta、Dev、Canary | | Brave | 稳定版、Beta、Nightly | | Opera | 稳定版、GX、Beta、Developer | | Vivaldi | 稳定版 | | Arc | MSIX / Windows 应用商店 | | DuckDuckGo | WebView2 / Windows 应用商店 | | Comet (Perplexity) | 稳定版 | | Ungoogled Chromium | 稳定版 | 这些是已明确验证的配置。 其他在用户配置文件中存储标准 `Bookmarks` JSON 文件的 Chromium 系列浏览器也可能通过 [自定义指南](docs/CUSTOMIZATION.md) 添加后工作。 ### Gecko 系列(SQLite 格式) | 浏览器 | 备注 | |---|---| | Firefox | 稳定版、Beta、Dev Edition、Nightly、ESR | | LibreWolf | - | | Waterfox | - | | Pale Moon | - | | SeaMonkey | - | | Mullvad Browser | 安装版和便携版 | | Zen Browser | 两个注册表路径已合并 | | Tor Browser | 安装版和便携版 | 任何在 `Profiles` 文件夹中使用标准 `places.sqlite` 书签数据库的 Firefox 系列浏览器通常都兼容。 对于新的分支或异常布局,您可以使用 [自定义指南](docs/CUSTOMIZATION.md) 添加或调整路径。 ## CLI 快速参考 使用激活的虚拟环境从**仓库根目录**运行所有命令。 ``` # 从 Windows.old 提取 python -m core.retriever "C:\Windows.old" "C:\Recovery\Raw" # 转换单个 Chromium 书签文件 python -m core.json_to_html "Chrome_Bookmarks.json" output.html --browser "Google Chrome" # 转换单个 Firefox places.sqlite python -m core.sqlite_to_html places.sqlite output.html --browser "Firefox" # 构建 Netscape HTML vault python -m core.vault_builder "C:\Recovery\Raw" "C:\Recovery\Vault" # 将所有提取的浏览器合并为一个文件 python -m core.bookmark_merger --raw "C:\Recovery\Raw" -o merged.html # 导出为 CSV(适用于 Excel / Airtable / Notion) python -m core.bookmark_merger --raw "C:\Recovery\Raw" --export-csv bookmarks.csv # 导出为 JSON(适用于自定义数据库) python -m core.bookmark_merger --raw "C:\Recovery\Raw" --export-json bookmarks.json # 搜索所有提取的来源 python -m core.search --raw "C:\Recovery\Raw" "github" python -m core.search --raw "C:\Recovery\Raw" "python -tutorial" --field title # 构建带样式的 HTML5 存档(CLI 专用;Vault Builder 的替代方案) python -m core.archive_beautifier "C:\Recovery\Raw" "C:\Recovery\Archive" ``` 所有工具都接受 `--help` 以获取完整的参数参考。 有关详细的 CLI 用法和返回值模式,请参阅 [`docs/MANUAL_TOOLS.md`](docs/MANUAL_TOOLS.md)。 ## 构建便携版 .exe ``` pip install pyinstaller python build.py --zip ``` 这将创建 `dist/Bookmark-Rescue-Toolkit/BookmarkRescue.exe` 和一个带版本号的 zip 文件。在构建前将您的 `icon.ico` 和 `icon.png` 放在仓库根目录,以便自动包含它们。 如果您不想从源代码构建,可以从项目的 [GitHub Releases 页面](https://github.com/webshoppe/bookmark-rescue-toolkit/releases) 下载预构建的 `BookmarkRescue_vX.Y.Z.zip`。(详见[下载(便携版)](#download-portable-build))。* 请参阅 [BUILDING.md](BUILDING.md) 获取完整的分步指南,包括图标设置、UPX 压缩、防病毒说明和分发说明。 ## 文档 | 文档 | 描述 | |---|---| | [GUI 入门指南](docs/GUI_WALKTHROUGH.md) | 带真实场景和故障排除的逐选项卡指南 | | [手动 CLI 工具](docs/MANUAL_TOOLS.md) | 所有七个引擎的完整 CLI 参考,包括返回值模式 | | [自定义指南](docs/CUSTOMIZATION.md) | 添加浏览器、自定义图标、主题和扩展代码库 | | [构建 .exe 指南](BUILDING.md) | 用于便携分发的 PyInstaller 构建分步指南 | | [BRT 沙盒指南](sandbox/SANDBOX_README.md) | 带有模拟数据的可选 Windows 沙盒环境,用于一致的屏幕截图和演示## 隐私与安全 - 所有处理都是本地的。数据不会离开您的机器。 - SQLite 数据库以**只读模式**打开 - 该工具无法修改活动的浏览器配置文件。 - `config.json`(保存的路径)和 `manifest.json`(提取清单)都列在 `.gitignore` 中,永远不会被提交。 - `.gitignore` 还阻止意外提交恢复的书签数据、SQLite 文件和生成的 HTML 输出。 ## 背景 书签救援工具包最初是几个个人脚本,用于在 Windows *"升级"* 后和从旧驱动器中恢复书签。它很快发展成为一个完整的离线管道(提取器 → 保险库构建器 → 合并器 → 搜索),对驱动器取证和个人备份都很有用。 它现在已开源,因此任何人都可以从存档的 Windows 安装中恢复浏览器数据,而无需依赖云同步或可启动的操作系统。 ## 贡献指南 1. Fork 仓库 2. 创建功能分支:`git checkout -b feature/add-my-browser` 3. 将您的浏览器添加到 `core/retriever.py` 中的相应字典 - 参见 [CUSTOMIZATION.md](docs/CUSTOMIZATION.md) 4. 提交清晰的提交信息并打开 pull request 欢迎通过 GitHub Issues 提交错误报告和添加浏览器的请求。 ## 许可证 MIT 许可证 - 详见 [LICENSE](LICENSE)。
标签:CIDR输入, GUI工具, Homebrew安装, HTML转换, JSON导出, NTFS, Python, SQLite, Windows.old, Windows工具, 书签恢复, 书签管理, 去重, 取证工具, 备份恢复, 数字取证, 数据合并, 数据导出, 数据库提取, 数据恢复, 数据迁移, 无后门, 浏览器数据提取, 漏洞挖掘, 离线工具, 自动化脚本, 跨浏览器, 逆向工具