Files
douyin-pc/docs/2026-09-06-13-12-name-only-account-onboarding.md
T

6.6 KiB
Raw Blame History

0.1.1:仅填名称、登录后自动绑定账号

用户反馈与决策

UID 是接口内部 ID,网页不向普通用户展示。Windows 产品面向小白,不能要求用户先抓包取得 UID。本次将大号和小号统一调整为:

  1. 输入自定义名称;小号可选择归属大号。
  2. 保存后自动启动独立浏览器。
  3. 用户自己完成抖音登录;应用不代为输入凭据、不自动登录。
  4. 后台读取自身资料,自动回填 UID、昵称、头像、粉丝数、关注数、获赞数、作品数。
  5. 登录成功不自动启用规则或业务,仍需用户明确配置和启动。

此决策取代 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,需要迁移。应用首次打开旧数据库时:

  1. 使用 SQLite backup API 在原受保护数据目录保存 before-onboarding-<随机ID>.sqlite3
  2. 在事务内重建账号表,保留原 ID、名称、角色、UID、归属、头像、昵称、规则及轮询位置。
  3. 检查外键一致性;失败回滚,备份保留。
  4. 恢复外键检查与归属触发器。

不迁移或复制 Cookie,不改账号目录,不修改既有任务、事件或历史。安装包 AppId 保持不变,版本升至 0.1.1。实际用户数据未被远程读取或迁移;迁移验证使用构造的旧版测试数据库。

测试结果

Linux 与 Windows

两端均通过 31 项 unittest;配置化 Pyright 为 0 error / 0 warningQt 冒烟与既有 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.log
  • browser-matrix-onboarding.json
  • build-onboarding.log
  • .build-cache\smoke-packaged.json
  • dist\DouyinAccounts\build-manifest.json
  • release\SHA256SUMS.txt

构建仍使用 requirements-build-windows.txtpython build_windows.py;没有新增运行依赖。源码保持未提交状态。