Skip to content

Dnyo666/URL-Novel-Reader

Repository files navigation

📚 URL Novel Reader

Banner Vite Vuetify

GitHub Stars License

在工作时间隐蔽阅读小说的完美解决方案

一款基于 Vue 3 的现代化小说阅读器,支持完美伪装、紧急隐藏、智能缓存等功能。
将小说内容嵌入 URL 地址栏,外观如同正在浏览技术文档。


✨ 功能特性

Tip

点击下方功能了解详细信息

📖 核心阅读功能

  • 多模式阅读 - 支持按句、按段、按页三种阅读模式
  • 智能导航 - 键盘、鼠标、滚轮多种控制方式
  • 自动滚动 - 可配置速度的自动阅读模式
  • 精确定位 - 支持跳转到任意阅读位置
  • 进度保存 - LocalStorage 自动缓存阅读进度

🎭 隐蔽功能

  • 完美伪装 - 小说内容显示在 URL 地址栏,主页面显示伪装网页
  • 紧急隐藏 (Z+C) - 一键切换乱码/原文,启用/禁用伪装页面交互
  • 多种伪装网站 - 预设常用网站 + 自定义 URL
  • 智能检测 - 自动检测伪装页面加载失败(CSP/X-Frame-Options),提供替代方案
  • 无伪装模式 - 支持纯净阅读,无需伪装

🔧 实用功能

  • 本地文件支持 - 直接读取 TXT 小说文件
  • 在线文件支持 - 支持加载远程 URL 文件
  • 刷新恢复 - 页面刷新后自动恢复到上次阅读位置
  • 双模式切换 - 句/段模式与字符模式无缝切换

🚀 快速开始

首先,请确保您的设备满足以下需求:

  • Node.js 16.x 及以上版本
  • npm 或 yarn 包管理器

1. 安装依赖

npm install

2. 启动开发服务器

npm run dev

访问 http://localhost:5173 查看应用。

3. 生产构建

npm run build

构建产物将输出到 dist/ 目录。

4. 预览生产构建

npm run preview

🎯 使用方法

基本使用

在浏览器地址栏访问:

https://example.com/#/reader?n=choose&d=baidu

其中 n=choose 将弹出文件选择器,d=baidu 表示使用百度作为伪装页面。

URL 参数说明

参数 说明 示例值
n 小说文件路径(必需) choose(弹出选择器)
file:///F:/novel.txt(本地文件)
https://example.com/novel.txt(在线文件)
t 当前文本内容(自动生成) 系统自动更新为当前阅读内容 + 进度
d 伪装网站 wiki(维基百科)
w3(W3Schools)
baidu(百度)
csdn(CSDN博客)
blank(无伪装)
或自定义完整URL
m 显示模式 s(按句,默认)
p(按段)
g(按页)
ps 显示字符数 25(默认)
50100
sp 滚动速度(毫秒) 1500(默认)
10002000
i 起始位置索引 0(默认)
任意数字

预设伪装网站

网站 缩写 URL
维基百科 wiki https://zh.wikipedia.org
W3Schools w3 https://www.w3schools.com
百度 baidu https://www.baidu.com
CSDN博客 csdn https://blog.csdn.net
无伪装 blank 纯净阅读模式
自定义 完整URL 输入任意网址

快捷键一览

按键 功能
W / ↑ 上一句/段/页
S / ↓ 下一句/段/页
A / ← 后退小步(按ps字数)
D / → 前进小步(按ps字数)
Q 后退一字
E 前进一字
Space 自动滚动 开/关
Z+C 紧急隐藏/恢复
H 显示帮助
G 跳转位置
X/M 切换模式

Important

💡 紧急隐藏功能说明(Z+C):

  • 隐藏时:显示乱码,启用 iframe 交互,可正常浏览伪装网站
  • 隐藏时如果点击了伪装网页,只能刷新网页恢复阅读,滚动不受影响
  • 恢复时:显示原文,禁用 iframe 交互,恢复键盘控制

使用示例

# 选择本地文件(推荐)
https://example.com/#/reader?n=choose&d=baidu&m=s

# 使用本地小说文件
https://example.com/#/reader?n=file:///F:/novel.txt&d=baidu

# 按段阅读,每页500字
https://example.com/#/reader?n=choose&m=p&ps=500

# 无伪装快速阅读
https://example.com/#/reader?n=choose&d=blank&sp=1000

📁 项目结构

src/
├── components/          # 可复用组件
│   ├── AppTopBar.vue   # 顶部导航栏
│   ├── AppFooter.vue   # 页脚
│   └── reader/         # 阅读器相关组件
│       ├── FileChooserDialog.vue    # 文件选择对话框
│       ├── HelpDialog.vue           # 帮助信息对话框
│       ├── JumpDialog.vue           # 位置跳转对话框
│       └── DisguiseFrame.vue        # 伪装页面 iframe
├── composables/         # 组合式函数
│   ├── useNovelReader.js           # 阅读器核心逻辑
│   └── useKeyboardControls.js      # 键盘控制
├── views/              # 页面视图
│   ├── HomeView.vue    # 首页
│   └── ReaderView.vue  # 阅读器页面
├── router/             # 路由配置
│   └── index.js
├── plugins/            # 插件配置
│   └── vuetify.js
├── styles/             # 全局样式
│   └── main.css
├── App.vue             # 根组件
└── main.js             # 入口文件

🔧 技术栈

  • Vue 3 - 渐进式 JavaScript 框架(Composition API)
  • Vite - 下一代前端构建工具
  • Vuetify 3 - Material Design 组件库
  • Vue Router - 官方路由管理器(Hash 模式)
  • Pinia - 轻量级状态管理
  • LocalStorage - 本地缓存阅读进度

🎨 自定义

修改主题

编辑 src/plugins/vuetify.js

theme: {
  themes: {
    light: {
      colors: {
        primary: '#667eea',  // 修改主色调
        secondary: '#764ba2'
      }
    }
  }
}

添加新功能

  1. src/composables/ 中创建新的 composable
  2. src/components/ 中创建新组件
  3. 在相应视图中使用

📦 部署

静态托管

构建后的 dist/ 目录可以直接部署到:

  • GitHub Pages
  • Netlify
  • Vercel
  • 任何静态文件服务器

配置基础路径

如果部署到子目录,修改 vite.config.js

export default defineConfig({
  base: '/your-subdirectory/'
})

🤝 贡献

欢迎提交 Issue 和 Pull Request!

如果您有任何建议或发现了 Bug,请:


📄 许可证

本项目基于 MIT License 获得许可。


Happy Reading! 📚

适度摸鱼,享受生活!

如果这个项目对您有帮助,请点亮 Star ⭐


Made with ❤️ by Dnyo

About

在浏览器URL栏摸鱼阅读小说🐟

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages