中文 | English
手机号记录管理器是一个 Windows 本地桌面应用,用于记录手机号绑定过的网站、App、账号和换号进度。应用基于 Python、PySide6 和 SQLite 构建,数据默认保存在本机,不提供云同步、自动登录、自动提交验证码或绕过第三方安全流程的功能。
备份恢复和安全边界详见 docs/BACKUP_AND_RESTORE.md 与 docs/SECURITY_MODEL.md。
- 本地主密码登录,主密码只保存 PBKDF2-HMAC-SHA256 哈希。
- 管理多个手机号,并查看每个手机号的绑定记录数量。
- 独立管理手机号业务状态:正常、换号中、暂停使用、已注销和异常。
- 新增、编辑、软删除和恢复网站/App 注册记录。
- 搜索网站/App、账号、手机号、网址、恢复邮箱、标签和备注。
- 常用网站/App 模板可预填新增记录,同时支持自定义名称。
- 批量软删除注册记录,批量替换绑定手机号,并保留更换历史。
- 手动跟踪换号任务状态,不自动访问或修改第三方账号。
- 注册记录 CSV 导入导出。
- 使用
cryptography.fernet导出和导入加密备份。 - 浅色/深色主题,导航与设置区域支持中英文切换。
- 可在设置页将无操作自动锁定时间设为 1 至 1440 分钟;保存后立即生效,写入失败时保留原设置。
- 单实例运行和本地脱敏诊断日志,避免隐藏后台进程争用数据库。
- About 信息显示作者、邮箱、主页、版本、版权和 License。
- 从 GitHub Release 下载
phone-record-manager-windows-v1.2.0.zip。 - 解压后运行
手机号记录管理器.exe。
当前 Windows 版本以 PyInstaller 目录包发布。未伪造数字签名;如系统提示未知发布者,请确认文件 SHA256 与 Release 中的 SHA256SUMS.txt 一致。
python -m venv .venv
.venv\Scripts\python -m pip install --upgrade pip
.venv\Scripts\python -m pip install --require-hashes -r requirements.txt
.venv\Scripts\python -m phone_record_manager数据库默认路径:
%LOCALAPPDATA%\PhoneRecordManager\phone_records.sqlite3
运行异常日志默认位于同目录下的 runtime-errors.log。日志只记录异常类型和代码位置,不记录异常消息、手机号、密码或备份内容。
可通过环境变量覆盖数据目录:
$env:PHONE_RECORD_MANAGER_HOME="D:\Temp\PhoneRecordManagerData"
.venv\Scripts\python -m phone_record_manager- 首次启动时设置至少 8 位主密码。
- 在“记录”页新增手机号,再新增网站/App 注册记录。
- 使用搜索框、状态筛选和表格排序定位记录。
- 在“换号”页创建手动换号任务,逐条标记状态。
- 在“备份”页导出 CSV 或加密备份。
- 在“设置”页调整自动锁定时间、切换主题和导航语言,并查看 About 与最近操作日志。
python -m unittest discover -s tests.\scripts\build_release.ps1该脚本会:
- 运行单元测试。
- 使用 PyInstaller 生成 Windows
.exe目录包。 - 复制可执行目录到
release-assets\phone-record-manager-windows-v1.2.0\。 - 生成
phone-record-manager-windows-v1.2.0.zip。 - 生成
SHA256SUMS.txt。 - 使用 WiX Toolset CLI 生成
phone-record-manager-windows-v1.2.0.msi。 - 把第三方完整许可证和 Qt 对应源码书面提供说明放入发布包。
MSI 由 installer\phone_record_manager.wxs 和 scripts\build_msi.ps1 生成,依赖 WiX Toolset CLI。当前脚本不会自动安装 WiX;默认发布构建在 WiX 缺失或 MSI 构建失败时会失败,避免静默发布残缺产物。本机只验证 portable ZIP 时使用 .\scripts\build_release.ps1 -SkipMsi。使用 dotnet tool install --global wix 安装 WiX 时需要本机已有 .NET SDK。
- Author: HaoXiang Huang
- Email: didadida1688@gmail.com
- Homepage: https://nextweb4.github.io/
- GitHub: https://github.com/NextWeb4
MIT License. See LICENSE, THIRD_PARTY_NOTICES.md, QT_SOURCE_OFFER.md, and THIRD_PARTY_LICENSES/.
| 方案名称 | 来源 | 许可证 | 核心能力 | 优点 | 缺点 | 维护状态 | 与当前项目的契合度 | 可能冲突点 | 是否采用 | 采用方式 |
|---|---|---|---|---|---|---|---|---|---|---|
PySide6_Essentials 6.11.1 |
PyPI / Qt for Python | LGPLv3/GPLv2/GPLv3/商业授权 | Windows 桌面 UI | Qt 生态成熟,表单和表格能力完整 | 发布时需遵守 Qt for Python 许可并审计插件 | 活跃 | 高 | LGPL 合规、Qt 插件打包 | 采用 | 直接固定 Essentials 与 shiboken6;不安装 meta/Addons |
SQLite / sqlite3 |
Python 标准库 / SQLite | Python License / Public Domain | 本地数据库 | 无服务端,适合本地工具 | 并发写能力有限 | 稳定 | 高 | 连接必须启用外键 | 采用 | 本地数据持久化 |
hashlib.pbkdf2_hmac |
Python 标准库 | Python License | 主密码哈希 | 无新增依赖,满足当前安全需求 | 不如 Argon2 抗 GPU | 稳定 | 高 | 迭代次数影响登录耗时 | 采用 | 主密码哈希 |
cryptography |
PyPI / pyca | Apache-2.0 OR BSD-3-Clause | 加密备份 | Fernet 提供认证加密 | 新增二进制依赖,备份密码丢失无法恢复 | 活跃 | 高 | PyInstaller 需包含依赖 | 采用 | 仅用于加密备份 |
| PyInstaller | 官方文档 | GPL-2.0 with exception | Windows .exe 打包 |
Python 桌面应用常用方案 | 需验证 Qt 插件和元数据 | 活跃 | 高 | 依赖许可证需保留 | 采用 | 发布包构建 |
| WiX Toolset | GitHub / .NET Tool | MS-RL | MSI 安装器 | 可生成标准 MSI,并支持添加/删除程序中的发布者、联系邮箱和主页 URL | 当前环境未安装 WiX CLI,构建 MSI 需要额外工具链 | 活跃 | 中 | 与现有 PyInstaller 目录包适配,MSI 只打包 dist 产物 |
采用配置,不自动安装 | installer\phone_record_manager.wxs + scripts\build_msi.ps1 |
| Qt Widgets 原生能力 | Qt 官方文档 | 随现有 PySide6/Qt 许可 | 标准图标、定时器、控件样式和 Model/View | 零新增依赖、离线、与现有架构完全兼容 | 图标风格受操作系统影响 | 活跃 | 高 | 无新增冲突 | 采用 | QStyle 图标、QTimer 搜索防抖、原生窗口与表格 |
| QtAwesome | GitHub / PyPI | MIT;字体另有各自许可 | Font Awesome 等图标 | 图标丰富,PySide6 可用 | 新增 qtpy、字体资源、第三方通知和 PyInstaller 收集范围 |
活跃 | 中 | 增加包体和发布合规面,当前标准图标已满足需求 | 不采用 | 仅审计,不集成 |
| PySide6-Fluent-Widgets | GitHub / PyPI | GPL-3.0 / 商业授权 | Fluent 控件、导航和无边框窗口 | 组件完整、视觉成熟 | GPL 会改变当前 MIT 分发边界;无边框窗口扩大生命周期风险 | 活跃 | 低 | 许可证、窗口架构和额外依赖冲突 | 不采用 | 只借鉴导航层级和上下文操作设计 |
| qt-material | GitHub / PyPI | BSD-2-Clause | Material 主题生成 | PySide6 兼容,主题丰富 | 接管全局 QSS,并新增 Jinja2 | 维护中 | 中低 | 与现有明暗主题和信息管理工具风格冲突 | 不采用 | 只借鉴主题 token 组织方式 |
| PyQtDarkTheme | GitHub / PyPI | MIT | 自动明暗主题 | 体积小 | PyPI 2.1.0 要求 Python <3.12 |
稳定版较旧 | 低 | 与当前 Python 3.12.7 不兼容 | 不采用 | 无 |
方案审计于 2026-07-18 通过 GitHub API、项目仓库和 PyPI 元数据完成。本次没有引入新依赖;直接复用 Qt 原生图标、定时器和控件能力,只借鉴 Fluent 导航层级与 qt-material 的 token 组织方式。运行时联网边界不变,候选方案均未部署。
发布依赖已固定到本次审计版本。发布包携带项目许可证、第三方完整许可证和 QT_SOURCE_OFFER.md;当前 one-folder 产物保留独立且可替换的 Qt 动态库,未静态链接或修改 Qt。自定义 PyInstaller hook 排除应用未使用且会引入 GPL 分发冲突的 Qt PDF、Qt Virtual Keyboard,以及未使用的 Qt Network 和 Mesa OpenGL fallback;每次升级 PySide6 后必须重新审计实际产物清单。
中文 | English
Phone Record Manager is a local Windows desktop application for tracking which websites, apps, and accounts are bound to your phone numbers, plus the manual progress of phone-number replacement. It is built with Python, PySide6, and SQLite. Data is stored locally by default. The app does not implement automatic login, captcha submission, or any bypass of third-party security flows.
See docs/BACKUP_AND_RESTORE.md and docs/SECURITY_MODEL.md for backup, recovery, and security-boundary details.
- Local master-password login; only a PBKDF2-HMAC-SHA256 hash is stored.
- Manage multiple phone numbers and view binding counts.
- Track independent phone lifecycle states: active, replacing, paused, cancelled, and abnormal.
- Create, edit, soft-delete, and restore website/app registration records.
- Search app names, usernames, phone numbers, URLs, recovery emails, tags, and notes.
- Built-in website/app templates with full support for custom entries.
- Batch soft-delete registration records and batch replace bound phone numbers with history.
- Manual replacement-task tracking without automated third-party account changes.
- CSV import and export for registration records.
- Encrypted backup import/export using
cryptography.fernet. - Light/dark theme plus Chinese/English navigation and Settings text.
- Configurable recoverable idle locking (1 to 1440 minutes), single-instance startup, and privacy-safe local diagnostics.
- About information displays author, email, homepage, version, copyright, and license.
- Download
phone-record-manager-windows-v1.2.0.zipfrom GitHub Releases. - Extract it and run
手机号记录管理器.exe.
The Windows build is distributed as a PyInstaller folder package. It is not code-signed. If Windows shows an unknown-publisher warning, verify the file SHA256 against SHA256SUMS.txt in the Release.
python -m venv .venv
.venv\Scripts\python -m pip install --upgrade pip
.venv\Scripts\python -m pip install --require-hashes -r requirements.txt
.venv\Scripts\python -m phone_record_managerDefault database path:
%LOCALAPPDATA%\PhoneRecordManager\phone_records.sqlite3
Override the data directory:
$env:PHONE_RECORD_MANAGER_HOME="D:\Temp\PhoneRecordManagerData"
.venv\Scripts\python -m phone_record_manager- Set a master password on first launch.
- Add phone numbers and website/app registration records in Records.
- Use search, status filters, and table sorting to find records.
- Track manual replacement work in the Replacement tab.
- Export CSV or encrypted backups in Backup.
- Adjust the idle-lock interval, switch theme/navigation language, and view About information in Settings.
python -m unittest discover -s tests.\scripts\build_release.ps1The script runs tests, builds the Windows executable folder with PyInstaller, creates phone-record-manager-windows-v1.2.0.zip, writes SHA256SUMS.txt, and builds phone-record-manager-windows-v1.2.0.msi with WiX Toolset CLI.
MSI generation is configured in installer\phone_record_manager.wxs and scripts\build_msi.ps1. The release script does not auto-install WiX and fails when MSI generation fails. Use .\scripts\build_release.ps1 -SkipMsi for a portable-only local build. Installing WiX with dotnet tool install --global wix requires the .NET SDK.
- Author: HaoXiang Huang
- Email: didadida1688@gmail.com
- Homepage: https://nextweb4.github.io/
- GitHub: https://github.com/NextWeb4
MIT License. See LICENSE, THIRD_PARTY_NOTICES.md, QT_SOURCE_OFFER.md, and THIRD_PARTY_LICENSES/.