6.6 KiB
0.1.1:仅填名称、登录后自动绑定账号
用户反馈与决策
UID 是接口内部 ID,网页不向普通用户展示。Windows 产品面向小白,不能要求用户先抓包取得 UID。本次将大号和小号统一调整为:
- 输入自定义名称;小号可选择归属大号。
- 保存后自动启动独立浏览器。
- 用户自己完成抖音登录;应用不代为输入凭据、不自动登录。
- 后台读取自身资料,自动回填 UID、昵称、头像、粉丝数、关注数、获赞数、作品数。
- 登录成功不自动启用规则或业务,仍需用户明确配置和启动。
此决策取代 0.1.0 文档中“需要预先取得 UID”的限制。旧版记录保留为历史,不代表新版本流程。
实现
复用现有自身账号接口
src/get_current_user.py 提取共享 parse_user_response(),沿用已验证的自身资料接口及 compact_user() 白名单。CLI 和桌面端共用解析,不新增抓包步骤或第二套账号识别逻辑。
- 拒绝错误域、非成功 HTTP/业务状态、空用户、匿名 UID 0 和非法 UID。
- 在 Python 中解析响应,保留 UID 精度。
- 头像支持现有大图字段与缩略头像字段。
- 身份、账号资料和统计来自同一次自身接口结果。
未绑定与已绑定分离
src/account_store.py 允许新账号 UID 为 NULL;多个待登录账号可并存。登录资料通过事务绑定,UID 仍保持唯一约束。
- 未绑定账号不参与组内分配,不能领取任务;所选组有未完成登录账号时不允许启动业务。
- 首次成功登录后绑定;同一 UID 已登记时提示切换其他账号,不创建重复绑定。
- 已绑定账号重新登录必须匹配原 UID,不会静默覆盖或换绑。
- 数据库只保存白名单统计,不保存整个接口响应、Cookie、手机号或凭据。
src/account_session.py 新增仅用于首次资料读取的 discovery 路径。正常连接与关注、私信、监听、详情操作仍要求已绑定身份。未绑定 Session 的写操作在发出请求前拒绝。
后台登录观察与界面
src/account_engine.py 为首次登录使用独立只读观察任务:浏览器启动后每 3 秒复查,成功即回填并结束观察。不阻塞 Qt 线程,不自动触发关注或私信。浏览器关闭时停止观察,用户可点击“登录 / 刷新信息”继续。停止、关闭、删除及退出都会安全停止相应观察任务。
src/accounts_app.py:
- 删除大号、小号录入表单中的 UID 输入框,仅保留名称与可选归属。
- 更新顶部操作说明与登录按钮。
- UID 列标记为自动获取,未登录时显示“待登录自动获取”。
- 自动选中新添加账号;展示昵称、头像、账号状态及四项统计。
- 增加选中账号的资料摘要,统计无需滚动到宽表最右侧才能查看。
- 已绑定账号通过“登录 / 刷新信息”重新读取资料与统计。
兼容已有数据
0.1.0 的 UID 列禁止 NULL,需要迁移。应用首次打开旧数据库时:
- 使用 SQLite backup API 在原受保护数据目录保存
before-onboarding-<随机ID>.sqlite3。 - 在事务内重建账号表,保留原 ID、名称、角色、UID、归属、头像、昵称、规则及轮询位置。
- 检查外键一致性;失败回滚,备份保留。
- 恢复外键检查与归属触发器。
不迁移或复制 Cookie,不改账号目录,不修改既有任务、事件或历史。安装包 AppId 保持不变,版本升至 0.1.1。实际用户数据未被远程读取或迁移;迁移验证使用构造的旧版测试数据库。
测试结果
Linux 与 Windows
两端均通过 31 项 unittest;配置化 Pyright 为 0 error / 0 warning,Qt 冒烟与既有 SDK/订阅桥检查通过。
新增覆盖:
- 大号和小号表单都只有一个名称输入框,不提交 UID。
- 多个无 UID 账号可以登记。
- 登录等待后自动回填 UID、昵称与统计,不创建业务任务。
- 匿名资料、错误 UID、重复 UID 拒绝;已绑定账号不能被换绑。
- 未绑定 Session 无法关注、私信或安装监听。
- 未绑定小号不参与分配,未完成登录的组不能启动。
- 旧数据库升级保留身份、归属、任务和外键,并生成备份。
- UI 展示回填信息、零值统计以及未登录占位。
执行命令:
.venv/bin/python -m unittest discover -s src -v
.venv/bin/python src/test_subscribe_notifications.py
uv tool run pyright --project pyrightconfig.json \
src/account_store.py src/account_session.py src/account_engine.py \
src/accounts_app.py src/get_current_user.py src/test_accounts.py \
src/test_onboarding_ui.py src/test_browser_matrix.py
QT_QPA_PLATFORM=offscreen .venv/bin/python src/accounts_app.py --smoke-test /tmp/douyin-onboarding-smoke.json
Windows 真 Chrome 离线矩阵新增 name_only_enrollment_and_profile_backfill=true:使用真实浏览器和原生 CDP,从无 UID 的名称记录开始,经自身接口假数据完成自动绑定及统计回填。其余端口/目录/身份隔离、重启持久化、刷新和删除检查均通过。
所有矩阵请求由固定离线数据响应,real_write_actions=0。没有自动登录或对真实用户执行关注、私信。本次未冒称多真实账号登录及安装体验已经人工验收。
打包与源文件一致性
- Windows 原生 PyInstaller GUI/CLI onedir、打包冒烟、中文 Inno 安装包均成功。
- Python、Qt、Playwright/Node、psutil 与固定 Chrome 继续全部打包。
- 本地全部 21 个 Python 文件的 SHA256 与 Windows 0.1.1 发布清单一致。
- 桌面安装包副本散列与构建产物一致。
发布位置
C:\Users\rogee\Desktop\抖音账号助手-0.1.1\
DouyinAccounts-0.1.1-Windows-x64-Setup.exe
SHA256SUMS.txt
使用说明.txt
大小:234,278,402 字节。
SHA256 1e7cc03120062ef57513be373b4215269c90db8123ae45d6f0a99c144c68e0c9
未代用户安装或升级产品,0.1.0 发布目录未删除。请使用 0.1.1 包验证新的名称录入流程。建议升级前退出旧程序并自行备份数据;首次启动新程序会自动备份旧数据库后迁移。
Windows 构建目录 C:\Users\rogee\douyin-pc-build-20260906 的本次证据:
tests-onboarding.logbrowser-matrix-onboarding.jsonbuild-onboarding.log.build-cache\smoke-packaged.jsondist\DouyinAccounts\build-manifest.jsonrelease\SHA256SUMS.txt
构建仍使用 requirements-build-windows.txt 与 python build_windows.py;没有新增运行依赖。源码保持未提交状态。