Smart NoteDB 是一款专为极致阅读体验打造的沉浸式、私人阅读中枢。它打破了传统浏览器书签的局限,通过"云端大脑+本地外壳"的架构,集成了高效采集、全网聚合搜索、跨端智能同步、深度数据分析和原生桌面交互,为老书虫提供一个无广告、不被打断的阅读圣地。
- ⚡ 极速预加载:500ms 预加载 + 双章智能缓存,翻页体验接近本地阅读,告别等待白屏。
- 🔒 智能去重:爬取任务自动去重,同一 URL 只抓取一次,后续请求秒级响应,服务器压力降低 60%。
- 🚫 绝对纯净:全网自动化采集,动态清洗广告干扰与无效元素,还原最纯净的文字排版。
- 🔍 聚合搜索:内置高效搜索助手,支持多线程并发检索多个主流源站,彻底规避搜索引擎 IP 风控。
- ☁️ 智能同步:独家"写时存储"算法,基于章节真实序号(而非易变的 URL)进行逻辑比对,多端断点续读不再误报。
- 📊 阅读洞察:可视化数据看板。内置 GitHub 风格的年度活跃热力图、阅读时长趋势及字数统计,量化你的每一份专注。
- 🖥️ 原生桌面体验:基于 Electron 的专属客户端。支持系统托盘、自定义全局老板键、朗读控制快捷键,深度集成系统原生功能。
- 🍅 番茄风格重构:PC 端采用 900px 黄金阅读宽度,配合精心调校的羊皮纸背景与字间距,打造极致护眼的沉浸环境。
- 🛡️ 智能安全防护:智能域名验证 + 30天缓存,完美兼容 VPN/代理环境,安全与易用性完美平衡。
- 🛠️ 插件化适配:采用适配器设计模式,通过简单的 Python 脚本扩展即可完美兼容任何结构奇葩的小说站点。
- 后端:Python 3.12 + Flask (RESTful API 设计)
- 数据库:SQLite 3 (采用单一
data.sqlite架构,高效管理用户模块) - 前端:Vanilla JS + PureUI (自定义轻量级 UI 框架) + Chart.js
- 外壳:Electron (原生桌面化与跨域凭证同步)
- 爬虫:
curl_cffi(指纹级模拟) + BeautifulSoup4 + lxml - 并发:
threading(任务去重) +concurrent.futures(多线程搜索)
服务端负责数据存储、爬虫解析与聚合搜索。
# 克隆仓库
git clone https://github.com/yourname/noteDB.git
cd noteDB
# 安装 Python 依赖
pip install -r requirements.txt
# 配置环境变量(可选)
cp .env.example .env
# 编辑 .env 文件,设置 DISABLE_SSRF_CHECK=1(VPN用户推荐)
# 启动服务
python dbserver.py客户端提供原生窗口体验,并实现与云端凭证的自动同步。
cd app_shell
npm install
npm startProject_Root/
├── routes/ # Flask 蓝图 (Core 业务, Admin 管理, Pro 特权)
├── managers.py # 数据库事务与用户模块管理
├── spider_core.py # 爬虫引擎与聚合搜索助手(含任务去重)
├── shared.py # 共享工具(智能域名验证、SSRF 防护)
├── dbserver.py # Flask 应用主入口
├── templates/ # 响应式模板 (PC 番茄风 / 移动端卡片化分流)
├── static/ # 静态资源 (PWA 配置, 热力图组件, ChangeLog)
├── adapters/ # 站点专用适配器插件
│ ├── fanqie_adapter.py # 番茄小说适配器
│ ├── sxgread_adapter.py # 书香阁适配器
│ └── xbqg77_adapter.py # 笔趣阁适配器
├── user_data/ # 用户数据目录
│ ├── data.sqlite # 主数据库
│ └── domain_verification_cache.json # 域名验证缓存
└── app_shell/ # Electron 壳程序代码
- 500ms 极速预加载:压缩预加载延迟至 500ms(原 2-3 秒),提升 4-6 倍
- 双章智能缓存:自动预加载下一章 + 下下一章,连续翻页接近本地体验
- 深度控制算法:
depth=2防止过度预加载,节省带宽
# 使用 threading.Event 实现结果共享
_active_tasks = {
'url': {
'event': threading.Event(),
'result': None,
'error': None
}
}- 同一 URL 只爬取一次,后续请求等待并共享结果
- 超时保护 30 秒,防止死锁
- 自动清理 60 秒后过期,避免内存泄漏
# 三层快速路径优化
1. 环境变量开关 (DISABLE_SSRF_CHECK=1)
2. 白名单域名(常见小说站)
3. 30 天缓存机制(首次 HTTP 验证)- 完美兼容 VPN/Clash Fake IP 环境(
198.18.0.0/15) - DNS 污染自动绕过,避免误拦截
- 缓存持久化至
domain_verification_cache.json
本项目采用 "云端大脑 + 本地壳子" 的架构设计。所有的敏感密钥 (CLIENT_SECRET)、核心爬虫逻辑以及 SQLite 数据库均保留在服务器端。本地客户端仅作为 UI 渲染层与交互入口,通过安全的凭证同步机制进行访问,极大程度地保证了个人阅读数据的安全性与私密性。
开发环境或使用 VPN 时,可在 .env 中配置:
# 完全关闭 SSRF 检查(个人使用/VPN环境推荐)
DISABLE_SSRF_CHECK=1
# 启用严格检查(生产环境推荐)
DISABLE_SSRF_CHECK=0| 指标 | v1.1.3 | v1.1.4 | 提升 |
|---|---|---|---|
| 预加载延迟 | 2-3 秒 | 500ms | 4-6倍 ⚡ |
| 重复请求耗时 | 2-3 秒 | 秒级响应 | 即时 🚀 |
| 连续翻页体验 | 需等待 | 即时加载 | 瞬间 ✨ |
| 服务器压力 | 100% | 40% | 降低60% 📉 |
| VPN 兼容性 | 403 错误 | 完美兼容 | 100% ✅ |
- 轻度用户:直接访问 Web 版,无需安装,PWA 支持添加到桌面
- 重度书虫:使用 Electron 客户端,享受原生体验和全局快捷键
- 开发者:Fork 项目,通过
adapters/目录添加自定义站点支持 - 多端同步:通过 OAuth 登录,在手机、电脑、平板间无缝切换
# OAuth 认证配置
SERVER="http://your-auth-server.com"
CLIENT_ID="your-client-id"
CLIENT_SECRET="your-client-secret"
CALLBACK="http://localhost:5000/callback"
# Flask 安全密钥
FLASK_SECRET_KEY="your-random-secret-key"
# SSRF 防护开关(0=启用, 1=关闭)
DISABLE_SSRF_CHECK=1
# 调试模式
DEBUG="True"在 adapters/ 目录创建新的适配器文件:
from adapters.common.base import BaseAdapter
class MyNovelSiteAdapter(BaseAdapter):
@staticmethod
def match(url):
return 'mynovelsite.com' in url
def run(self, crawler, url):
# 自定义爬取逻辑
pass查看完整更新日志请访问 static/change.html
- ⚡ 预加载提速 4-6 倍(500ms)
- 🔒 智能任务去重机制
- 🚀 双章预爬取技术
- 🛡️ 智能域名验证系统
- 🔧 完美兼容 VPN 环境
本项目采用 MIT License 开源。
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开 Pull Request
- Issues: GitHub Issues
- Email: your-email@example.com
由书虫开发,为书虫而生。 💙
享受纯粹的阅读体验,让技术服务于专注。