Veya阅读 隐私政策
一、本政策适用于什么
本政策说明「Veya阅读」如何收集、使用、存储与保护你的信息。它适用于三个入口:
- Veya阅读 iOS 客户端
- Veya阅读 Android 客户端
- 本网站(
miaotu.app)及其网页阅读器
客户端在首次启动时会先向你展示本政策的要点并请求你的同意; 在你点击「同意」之前,客户端不会向服务器发送任何请求,也不会读取或上传任何设备信息。 不同意则无法使用本服务 —— 全部书籍内容都在服务器上,离线可用的功能为零,这一点在告知屏中已明示。
二、我们收集哪些信息
下面按发生时机逐条列出,包括具体字段、存到哪里、保留多久。 没有列在这里的信息我们不收集。
2.1 设备标识与机型(你同意之后、首次启动时一次)
为了让服务器能识别「请求来自哪一台已授权的设备」并为其签发专属密钥,我们收集:
device_id—— 由你的设备本地随机生成的 UUID,不含任何硬件信息platform(ios / android)、model(机型,如 iPhone15,2)、manufacturer(厂商)、os_version(系统版本)app_version/app_code(应用版本名与版本号)- Android:
ANDROID_ID;iOS:identifierForVendor(IDFV) —— 二者都是可被系统重置的应用级标识,我们不采集 IMEI、IMSI、MAC、序列号或任何不可重置的硬件 ID
去处:devices 集合。保留期:长期保留,不设自动删除期限。
⚠️ 设备记录与账号是两回事:它标识的是这台设备,不随账号注销一并删除。
2.2 每次请求携带的签名信息
为防止请求被伪造和重放,客户端每次请求都会带上设备号、平台、版本号、时间戳、一次性随机数与签名。 其中一次性随机数存入缓存 10 分钟后自动删除,仅用于判重;其余不单独落库。
2.3 账号信息(你主动注册 / 登录时)
- 账号名 —— 由你自拟,我们不要求手机号、邮箱或实名信息
- 密码 —— 仅保存 bcrypt 单向哈希,我们无法还原你的原始密码
- 会员状态与到期时间、收藏的书籍、你设置的偏好/屏蔽标签
- 账号与设备的关联记录(
user_devices:账号、设备号、首次与最近登录时间) —— 用于实现「同一账号仅允许一台设备在线」
去处:users / user_devices 集合。
⚠️ 需要你知道的一处实现细节:取消收藏采用软删除
(记录进「已取消」清单而非物理删除),因此「取消收藏」不等于「删掉这条记录」。
2.4 阅读行为信息(已登录时)
- 阅读进度:账号、书籍、章节、章节序号、段落序号、累计阅读秒数、更新时间
(
reading_progress) - 书签与摘录:上述定位信息,外加章节标题和该段落开头的一小段正文预览
(
bookmarks)
保留期:长期保留,不设自动删除期限;账号注销时随账号一并删除。
2.5 搜索信息
这一项请特别留意,因为它包含你输入的原文:
-
书名/作者/标签搜索:你输入的搜索词、搜索类型、结果数量,
连同设备号、账号(若已登录)、平台与版本号,记入
events集合, 保留 365 天后自动删除。 -
「粘贴一段原文,找出处」(正文反查):你粘贴的原文片段
(6–100 字)、命中的书籍、匹配置信度、命中数、耗时,连同设备号与账号,
记入
ft_query_log集合。 🔴 该集合目前没有设置自动过期,即这些查询记录会长期保留, 用途是评估搜索质量。保留期:长期保留,不设自动删除期限;账号注销时随账号一并删除。 -
网页端(
miaotu.app)的访问日志刻意剥掉了搜索页的查询串, 网页搜索词不进本站访问日志。
2.6 使用与故障统计(events,一律保留 365 天)
为了知道功能是否可用、哪里在报错,我们记录下列事件。每条都带设备号、平台、版本号,登录后还带账号:
- 设备首次注册(
device_register)、退出登录(logout) - 屏幕曝光(
screen_view,只记屏幕名,如「书城」「我的」) - 未登录状态下阅读章节(
guest_read:书籍与章节序号) - 触达登录墙 / 会员墙(
paywall_hit) - 请求真人朗读音频(
audio_request:章节、已就绪段数) - 登录失败或被限流(
auth_failed)、设备签名校验失败(device_identity_failed)、 版本过低被拦(version_gate_blocked) - 客户端故障:章节目录/正文加载失败、收藏切换失败、进度上报失败、字体下载失败、 书摘卡导出/保存/分享失败、反馈提交失败、真人朗读回退到系统朗读、翻页卡滞 —— 各带出错时的书籍/章节/字体名等上下文
这些事件在客户端本地攒批后统一上传(不是每个动作一次请求)。 未上传成功的事件以明文 JSON 暂存在本机,最多 200 条, 发送成功即删除。Android 已关闭系统云备份与换机直传,这份缓存不会随备份离开你的设备。
2.7 反馈信息(你主动提交时)
- 反馈正文(不超过 1000 字)、你选择的截图、设备号,以及账号(若已登录)
-
截图不经过我们的业务服务器:客户端拿到一次性上传凭证后
直传静态资源服务器(
static.miaotu.app),路径由服务端生成的随机 UUID 决定。
去处:feedbacks 集合。未登录也可以提交反馈;此时该条反馈只关联设备号,不关联任何账号。
保留期:长期保留,不设自动删除期限;账号注销时随账号一并删除(截图随之清理)。
2.8 服务器与网站日志
为排查故障与防御滥用,服务端记录每次请求的方法、路径、状态码、耗时、来访 IP 与 User-Agent。 保留期:按系统日志的轮转策略滚动覆盖,不单独长期归档。
2.9 我们明确不收集的
- 位置信息(GPS、基站、WLAN 定位)
- 通讯录、通话记录、短信、日历
- 麦克风录音、摄像头、相册读取 (iOS 仅申请「添加到相册」权限,用于保存你自己导出的书摘卡图片)
- 剪贴板读取 —— 客户端只在你点「复制」时写入剪贴板,从不读取它
- 已安装应用列表 —— Android 仅查询「是否安装微信」这一个比特,用于把分享直接投给微信
- IMEI / IMSI / MAC / 硬件序列号等不可重置的设备标识
- 任何第三方统计、广告或推送 SDK。客户端不集成此类组件, 因此不存在把你的信息交给第三方数据平台的通道。
三、我们如何使用这些信息
- 识别设备并校验请求签名,阻止伪造与重放(设备信息、签名信息)
- 提供账号、收藏、跨设备同步阅读进度与书签(账号信息、阅读行为信息)
- 返回搜索结果,并评估搜索质量(搜索信息)
- 判断功能是否正常、定位并修复故障(使用与故障统计)
- 处理并回复你的反馈(反馈信息)
- 防御刷接口、撞库与滥用(日志、失败类事件)
我们不把这些信息用于广告投放、用户画像售卖或自动化决策。
四、存储地点与跨境
目前的部署事实如下(不是承诺,是当前实现):
- 数据库与业务服务器:中国境内自建服务器
- 网站与接口的入口经由境外服务器转发(香港节点), 字体、真人朗读音频与反馈截图等静态资源由另一台境外服务器提供。 因此,包含来访 IP 与访问路径的网络日志会经过或落在境外主机上。
我们不向境外的第三方提供你的个人信息。上述节点是我们自己用于 加速与分发的服务器,数据仍由我们自己处理,不存在向他人提供或委托他人处理的情形。
五、共享、转让与公开披露
- 我们不向任何第三方出售或交换你的信息。
- 除下述情形外不共享:① 你明确同意;② 法律法规要求或司法/行政机关依法要求。
- 技术服务商:我们自建服务器并自行运维,未接入第三方统计/广告/推送服务。 承载静态资源与网络转发的服务器由境外主机商提供(见第四条)。
- 我们不会公开披露你的个人信息。
六、你的权利
- 查询与更正:应用内可查看你的账号、收藏、阅读进度与书签;如需更正请通过第九条联系我们。
- 删除:可在应用内删除书签;删除账号及其全部关联数据请联系我们,我们将在核验身份后处理。
- 撤回同意:卸载客户端即停止全部收集。已上传的数据的删除请求同上。
- 退出登录:退出后服务器会使既有登录凭证全部失效。
注销账号:客户端「我的」页最底部有自助注销入口, 确认后即时生效——服务器会删除你的账号及其阅读进度、书签、收藏、 反馈、搜索记录与订单记录。⚠️ 设备记录(见第二条)不在此列。 如自助注销遇到问题,可通过「我的 → 问题反馈」联系我们。
七、我们如何保护这些信息
- 一设备一密钥,所有接口请求逐条 HMAC 签名校验,并有防重放与限流
- 密码仅存单向哈希;设备密钥仅在首次注册时下发一次,绝不重复下发
- 客户端本地:iOS 存 Keychain(仅本机、不参与备份),Android 存 Keystore 加密后写入本地,且已关闭云备份与换机直传
- 后台管理操作留有审计流水
八、未成年人
本服务仅面向 18 周岁以上的用户。书库中包含带敏感标记的作品, 不适合未成年人阅读。若你未满 18 周岁,请勿注册或使用本服务。
九、如何联系我们
与个人信息相关的请求(查询、更正、删除、撤回同意、注销申诉等), 请通过客户端「我的 → 问题反馈」提交,这是我们受理此类请求的渠道。
十、政策更新
本政策发生实质性变更时,我们会在客户端内重新征得你的同意,而不是仅在本页悄悄改字。 本页始终展示当前生效的版本。