专属 Chrome 管理与淘宝登录检查(R2) #9

Open
opened 2026-09-02 16:09:13 +08:00 by ila · 0 comments
Owner

基本信息

  • 类型:需求 | 所属 Epic:#2 | 所属 MVP:#5 | 阶段:待实施

依赖与并行

  • 前置工单:#8(R1)
  • 允许并行:是;原因:本工单不依赖货憨憨数据,只要 config 可读即可。

要解决什么

启动并复用专属 Chrome,让使用者手动登录淘宝,并可靠判断登录是否有效。

参考实现在仓库外 D:\chengma\电商视频自动下载工具\已验证淘宝流程\正式脚本
(Python,纯标准库,已验证):浏览器管理.py、淘宝账号工具.py。

红线(AGENTS.md 第 10 节,违反即不可合并):

  • 登录必须由使用者手动完成。不得代填账号密码,不得绕过验证码、滑块或安全验证。
  • 淘宝登录态只存在于 Chrome 用户数据目录。程序不读取、不复制、不落盘、不上传 Cookie。
  • 同一 Profile 不得同时启动两个实例。

复用判断(四项全过才算可复用):PID 存在 → 进程命令行含本程序专属
--user-data-dir → CDP 端口可访问 → 存在 type == "page" 的目标。

登录判断两层,缺一不可:

  1. _m_h5_tk、_m_h5_tk_enc、_tb_token_、tracknick 四个 Cookie 都存在
  2. 导航到 https://i.taobao.com/my_itaobao,标题、最终地址、正文都不含阻断词:
    亲,请登录 / 淘宝账号登录 / 请登录 / 安全验证 / 验证码 / 访问受限

做什么 / 不做什么

  • 做:internal/taobao 包的 chrome_manager 与 login_service;CDP 连接
    (裸 WebSocket 即可,参考实现就是这么做的);界面「打开淘宝登录」「检查登录状态」。
  • 不做:不做以图搜和视频提取(下一个工单)。

预计修改文件

  • internal/taobao/chrome_manager.go、chrome_manager_test.go
  • internal/taobao/cdp_client.go
  • internal/taobao/login_service.go、login_service_test.go
  • internal/taobao/models.go
  • app.go(OpenTaobaoLogin、GetTaobaoStatus)
  • frontend/src/views/SettingsView.vue、components/Sidebar.vue(淘宝状态灯接真实数据)

验收标准

  • 首次点击能启动专属 Chrome 并打开淘宝
  • 第二次点击复用已有实例,不会开第二个
  • 状态文件丢失但端口上已有 Chrome 时,报错而不是再启一个
  • Cookie 缺失能识别为未登录,并返回缺了哪几个
  • 命中阻断词能识别,并返回命中的是哪个词与页面标题
  • 侧栏淘宝状态灯反映真实状态
  • 日志不出现完整 Cookie 与 _m_h5_tk 值
  • 端口扫描、归属校验、阻断词判断有单元测试(不需要真实 Chrome)

验证方式

go vet ./...
go test ./internal/taobao/...

真机验证由负责人操作:点「打开淘宝登录」→ 扫码 → 点「检查登录状态」。

交给 Codex 实施的约定

本工单由本机 Codex CLI(模型 gpt-5.6-sol)实施,由 Claude 审核。

Codex 必须遵守:

  • 先读仓库根目录 AGENTS.md,第 10 节「项目专用规则」是不可违反的红线。
  • 只改本工单「预计修改文件」列出的范围;发现别的问题记录下来,不要顺手改。
  • Wails 专有 API 只能出现在 main.go 和 app.go;internal/ 不许 import wails。
  • 不把账号、密码、token、Cookie 写入代码、日志、注释或测试固定值。
  • 面向初级维护者写代码:直白实现,注释解释「为什么」和边界,不逐行翻译代码。
  • 新增逻辑要有 go test 覆盖;不能联网的部分用假数据测,不要写需要真实账号才能跑的测试。
  • 完成后必须真实执行并贴出输出:go vet ./...、go build ./...、go test ./...。
  • 不要自行提交 Git,也不要改 docs/ 下的任何文件(那是 Wiki 镜像)。
## 基本信息 - 类型:需求 | 所属 Epic:#2 | 所属 MVP:#5 | 阶段:待实施 ## 依赖与并行 - 前置工单:#8(R1) - 允许并行:是;原因:本工单不依赖货憨憨数据,只要 config 可读即可。 ## 要解决什么 启动并复用专属 Chrome,让使用者手动登录淘宝,并可靠判断登录是否有效。 参考实现在仓库外 `D:\chengma\电商视频自动下载工具\已验证淘宝流程\正式脚本` (Python,纯标准库,已验证):`浏览器管理.py`、`淘宝账号工具.py`。 **红线(AGENTS.md 第 10 节,违反即不可合并)**: - 登录必须由使用者手动完成。不得代填账号密码,不得绕过验证码、滑块或安全验证。 - 淘宝登录态只存在于 Chrome 用户数据目录。程序不读取、不复制、不落盘、不上传 Cookie。 - 同一 Profile 不得同时启动两个实例。 复用判断(四项全过才算可复用):PID 存在 → 进程命令行含本程序专属 `--user-data-dir` → CDP 端口可访问 → 存在 `type == "page"` 的目标。 登录判断两层,缺一不可: 1. `_m_h5_tk`、`_m_h5_tk_enc`、`_tb_token_`、`tracknick` 四个 Cookie 都存在 2. 导航到 `https://i.taobao.com/my_itaobao`,标题、最终地址、正文都不含阻断词: 亲,请登录 / 淘宝账号登录 / 请登录 / 安全验证 / 验证码 / 访问受限 ## 做什么 / 不做什么 - 做:`internal/taobao` 包的 chrome_manager 与 login_service;CDP 连接 (裸 WebSocket 即可,参考实现就是这么做的);界面「打开淘宝登录」「检查登录状态」。 - 不做:不做以图搜和视频提取(下一个工单)。 ## 预计修改文件 - `internal/taobao/chrome_manager.go`、`chrome_manager_test.go` - `internal/taobao/cdp_client.go` - `internal/taobao/login_service.go`、`login_service_test.go` - `internal/taobao/models.go` - `app.go`(OpenTaobaoLogin、GetTaobaoStatus) - `frontend/src/views/SettingsView.vue`、`components/Sidebar.vue`(淘宝状态灯接真实数据) ## 验收标准 - [ ] 首次点击能启动专属 Chrome 并打开淘宝 - [ ] 第二次点击复用已有实例,不会开第二个 - [ ] 状态文件丢失但端口上已有 Chrome 时,报错而不是再启一个 - [ ] Cookie 缺失能识别为未登录,并返回缺了哪几个 - [ ] 命中阻断词能识别,并返回命中的是哪个词与页面标题 - [ ] 侧栏淘宝状态灯反映真实状态 - [ ] 日志不出现完整 Cookie 与 `_m_h5_tk` 值 - [ ] 端口扫描、归属校验、阻断词判断有单元测试(不需要真实 Chrome) ## 验证方式 ```powershell go vet ./... go test ./internal/taobao/... ``` 真机验证由负责人操作:点「打开淘宝登录」→ 扫码 → 点「检查登录状态」。 ## 交给 Codex 实施的约定 本工单由本机 Codex CLI(模型 `gpt-5.6-sol`)实施,由 Claude 审核。 Codex 必须遵守: - 先读仓库根目录 `AGENTS.md`,第 10 节「项目专用规则」是不可违反的红线。 - 只改本工单「预计修改文件」列出的范围;发现别的问题记录下来,不要顺手改。 - Wails 专有 API 只能出现在 `main.go` 和 `app.go`;`internal/` 不许 import wails。 - 不把账号、密码、token、Cookie 写入代码、日志、注释或测试固定值。 - 面向初级维护者写代码:直白实现,注释解释「为什么」和边界,不逐行翻译代码。 - 新增逻辑要有 `go test` 覆盖;不能联网的部分用假数据测,不要写需要真实账号才能跑的测试。 - 完成后必须真实执行并贴出输出:`go vet ./...`、`go build ./...`、`go test ./...`。 - 不要自行提交 Git,也不要改 `docs/` 下的任何文件(那是 Wiki 镜像)。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmsp#9