手机号注册模式
This commit is contained in:
+57
-35
@@ -14,13 +14,13 @@
|
||||
|
||||
它的核心价值不是“打开一个页面点几个按钮”,而是把下面这些环节串成一条完整可恢复的自动化链路:
|
||||
|
||||
- 生成或选取注册邮箱
|
||||
- 生成注册邮箱,或在接码开启时申请注册手机号
|
||||
- 打开 ChatGPT / OpenAI 注册入口
|
||||
- 提交邮箱和密码
|
||||
- 轮询注册验证码
|
||||
- 提交邮箱/手机号和密码
|
||||
- 轮询注册验证码(邮箱或短信)
|
||||
- 填写姓名和生日
|
||||
- 刷新 OAuth 链接并登录
|
||||
- 轮询登录验证码
|
||||
- 刷新 OAuth 链接并登录(邮箱或手机号)
|
||||
- 轮询登录验证码(邮箱或短信)
|
||||
- 自动确认 OAuth 同意页
|
||||
- 把 localhost 回调提交到 CPA、SUB2API 或 Codex2API
|
||||
|
||||
@@ -41,9 +41,9 @@
|
||||
- 在贡献模式下复用同一套主自动流程启动,并在面板内展示贡献链路的 `OAUTH / 回调 / 总状态` 三块实时状态
|
||||
- 在顶部“贡献/使用”按钮下方展示一个非强制的内容更新轻提示;提示来源于 `apikey.qzz.io` 的公开公告 / 教程摘要,用户关闭后仅对当前 `promptVersion` 静默,下次内容版本变化后会重新出现
|
||||
- 在 sidepanel 初始化和点击“自动”按钮前刷新一次贡献站公开内容摘要;如果刷新失败,不阻塞主自动流程
|
||||
- 在日志区通过“记录”按钮打开独立的邮箱记录覆盖层,并展示成功/失败/停止/重试统计与分页列表
|
||||
- 在日志区通过“记录”按钮打开独立的账号记录覆盖层,并展示成功/失败/停止/重试统计与分页列表;phone-only 记录会回退展示手机号
|
||||
- 查询 GitHub Releases 并展示更新卡片;当前更新服务会区分 `Ultra`、历史 `Pro` 与 legacy `v` 三个版本族,排序时固定以 `Ultra` 为最高正式系列,同时会在读取缓存后重新排序,避免历史 `Pro` 或 `v` 版本误显示为比 `Ultra` 更新
|
||||
- 展示一个单独的“接码”开关与“接码平台”下拉;接码平台当前支持 HeroSMS / 5sim,开启后才展示所选平台的国家、API Key、价格上限等设置,用于 OAuth 登录链路命中手机号验证页时直接续跑手机验证
|
||||
- 展示一个单独的“接码”开关、注册方式 `signupMethod` 与“接码平台”下拉;接码平台当前支持 HeroSMS / 5sim / NexSMS。普通模式下开启接码后可把注册方式切到手机号注册,并在 OAuth 登录链路命中手机号登录验证码页时继续复用同一手机号续跑短信验证
|
||||
- 展示 `Plus 模式` 开关与 Plus 支付方式配置;支付方式支持 PayPal / GoPay,PayPal 展示账号池下拉与添加按钮,GoPay 展示手机号和 PIN;步骤列表切换为 Plus 模式 13 步定义,普通模式的 Cookie 清理步骤不再显示或执行,登录验证码步骤会移动到 Plus 可见第 11 步
|
||||
- 为 Hotmail / 2925 账号池复用同一套“添加账号 / 取消添加 / 批量导入 / 收起列表”表单交互;共享的显隐控制放在 `sidepanel/account-pool-ui.js`,各自 manager 只保留 provider 相关字段校验与业务操作
|
||||
|
||||
@@ -145,7 +145,10 @@
|
||||
- `contributionStatusMessage`
|
||||
- `contributionLastPollAt`
|
||||
- OAuth 链接
|
||||
- 当前轮冻结后的注册方式 `resolvedSignupMethod`
|
||||
- 当前统一账号标识 `accountIdentifierType / accountIdentifier`
|
||||
- 当前邮箱 / 密码
|
||||
- 当前手机号注册运行态 `signupPhoneNumber / signupPhoneActivation / signupPhoneCompletedActivation`
|
||||
- 第 8 步固定的验证码页显示邮箱 `step8VerificationTargetEmail`
|
||||
- 当前手机号验证激活记录 `currentPhoneActivation`
|
||||
- 可复用的手机号验证激活记录 `reusablePhoneActivation`
|
||||
@@ -178,12 +181,13 @@
|
||||
- 2925 是否启用号池模式 `mail2925UseAccountPool`
|
||||
- 2925 当前选中的号池账号 ID `currentMail2925AccountId`
|
||||
- Cloudflare / Temp Email 设置
|
||||
- 注册方式 `signupMethod`
|
||||
- 接码开关、接码平台 `phoneSmsProvider`,以及 HeroSMS / 5sim 各自的 API Key、国家/地区、价格上限和平台扩展设置
|
||||
- iCloud 相关偏好
|
||||
- LuckMail API 配置
|
||||
- 自动运行默认配置
|
||||
- OAuth 授权后链总超时开关 `oauthFlowTimeoutEnabled`:默认开启;关闭后会立即清空已存在的 OAuth 总预算 deadline,仅保留各步骤本地等待超时
|
||||
- 账号运行历史 `accountRunHistory`(以邮箱为主键,保存该邮箱最近一次状态:成功/失败/停止)
|
||||
- 账号运行历史 `accountRunHistory`(以统一账号标识为主键,邮箱账号保留邮箱主键;phone-only 账号改存 `accountIdentifierType / accountIdentifier / phoneNumber`,保存最近一次状态:成功/失败/停止)
|
||||
- 账号运行历史本地同步 helper 地址
|
||||
|
||||
注意:
|
||||
@@ -311,14 +315,15 @@ IP 代理模块在同步、切换、Change、出口探测和自动运行成功
|
||||
|
||||
流程:
|
||||
|
||||
1. 解析本轮应使用的邮箱
|
||||
1. 解析本轮应使用的注册方式:默认邮箱注册,开启接码且普通模式下可切到手机号注册
|
||||
2. 打开或复用注册页
|
||||
3. 如果注册弹窗默认停留在手机号输入模式,会先尝试点击 `继续使用电子邮件地址登录 / Continue using email address` 一类按钮切回邮箱输入模式
|
||||
4. 在邮箱输入模式下提交邮箱;邮箱输入框识别同时兼容本地化占位与 `aria-label`
|
||||
5. 以当前邮箱先写入一条“停止(流程尚未完成)”的记录占位
|
||||
6. 等待邮箱提交后的真实落地页
|
||||
7. 如果进入密码页,则继续执行 Step 3
|
||||
8. 如果直接进入邮箱验证码页,则自动跳过 Step 3 并进入 Step 4
|
||||
3. 邮箱注册时,如果注册弹窗默认停留在手机号输入模式,会先尝试点击 `继续使用电子邮件地址登录 / Continue using email address` 一类按钮切回邮箱输入模式
|
||||
4. 邮箱注册分支:提交邮箱;邮箱输入框识别同时兼容本地化占位与 `aria-label`
|
||||
5. 手机号注册分支:从接码平台申请号码,切换到手机号注册入口,必要时展开更多选项,填写手机号并提交
|
||||
6. 以当前统一账号标识先写入一条“停止(流程尚未完成)”的记录占位;邮箱账号占位邮箱,phone-only 账号占位手机号
|
||||
7. 等待身份提交后的真实落地页
|
||||
8. 如果进入密码页,则继续执行 Step 3
|
||||
9. 如果直接进入邮箱验证码页或手机验证码页,则自动跳过 Step 3 并进入 Step 4
|
||||
|
||||
### Step 3
|
||||
|
||||
@@ -331,13 +336,17 @@ IP 代理模块在同步、切换、Change、出口探测和自动运行成功
|
||||
1. 生成或读取密码
|
||||
2. 更新运行态密码
|
||||
3. 记录账号快照
|
||||
4. 让内容脚本填写密码
|
||||
4. 让内容脚本按当前账号身份填写密码
|
||||
5. 内容脚本先上报 Step 3 完成信号
|
||||
6. 上报完成后再异步点击提交,避免页面跳转打断响应通道
|
||||
7. 延迟提交真正触发前会再次检查 Stop 状态,避免用户已停止时页面仍继续自动提交
|
||||
8. 后台在真正确认 Step 3 完成前,会额外检查提交后是否切换页面;如果出现认证页 `Try again / 重试` 页面,或 `/email-verification` 上的 `405 / Route Error` 重试页,会先通过共享恢复逻辑最多自动点击 5 次 `重试` 尝试恢复,再继续后续链路
|
||||
9. Step 3 收尾阶段如果页面切换导致旧内容脚本失联,后台会把单次消息等待收口到当前收尾预算内,优先尽快重试重连;若最终仍未恢复,则输出中文的步骤级错误,而不是直接暴露底层英文通信超时
|
||||
|
||||
补充:
|
||||
|
||||
- 手机号注册如果在 Step 2 后直接落到短信验证码页、资料页或已登录页,Step 3 会按页面状态自动跳过,不再因为缺少邮箱而失败。
|
||||
|
||||
### Step 4 / Step 8
|
||||
|
||||
文件:
|
||||
@@ -348,12 +357,15 @@ IP 代理模块在同步、切换、Change、出口探测和自动运行成功
|
||||
|
||||
这两步共享验证码主流程:
|
||||
|
||||
1. 确定 provider
|
||||
2. 必要时重发验证码
|
||||
3. 轮询邮箱或 API
|
||||
4. 提取验证码
|
||||
5. 回填页面
|
||||
6. 若页面拒绝,则重试或回退
|
||||
1. 先按账号身份分流验证码通道:
|
||||
Step 4:邮箱注册走邮箱验证码,手机号注册走短信验证码
|
||||
Step 8:邮箱登录走邮箱验证码,手机号登录走短信验证码
|
||||
2. 确定 provider
|
||||
3. 必要时重发验证码
|
||||
4. 轮询邮箱、短信 API 或对应 provider 通道
|
||||
5. 提取验证码
|
||||
6. 回填页面
|
||||
7. 若页面拒绝,则重试或回退
|
||||
|
||||
补充行为:
|
||||
|
||||
@@ -413,11 +425,15 @@ IP 代理模块在同步、切换、Change、出口探测和自动运行成功
|
||||
- SUB2API:打开后台并生成 OAuth 地址
|
||||
- Codex2API:直接调用后台协议 `/api/admin/oauth/generate-auth-url`
|
||||
2. 打开最新 OAuth 链接
|
||||
3. 登录;如果进入密码页且当前有密码,则填写并提交密码;如果当前没有密码但检测到一次性验证码入口,则直接切换到一次性验证码登录
|
||||
4. 确保真正进入验证码页
|
||||
5. 如果未进入验证码页,则按可恢复逻辑最多重试 3 次;但一旦当前失败已经明确进入 `https://auth.openai.com/add-phone`,则立即退出步骤 7 内部重试,不再继续第 2 / 3 次尝试
|
||||
6. 自动运行一旦进入步骤 7 之后的链路,若后续步骤报错且认证页未进入 `https://auth.openai.com/add-phone`,则统一回到步骤 7 重新开始授权流程
|
||||
7. CPA 回调阶段固定为步骤 9,不再支持“第七步回调”跳过步骤 7/8
|
||||
3. 根据统一账号标识选择登录身份:
|
||||
- 邮箱账号:沿用现有邮箱登录链路
|
||||
- 手机号账号:优先探测登录页是否存在手机号登录入口,必要时展开更多选项或从邮箱页切到手机号页
|
||||
4. 登录;如果进入密码页且当前有密码,则填写并提交密码;如果当前没有密码但检测到一次性验证码入口,则直接切换到一次性验证码登录
|
||||
5. 确保真正进入验证码页;手机号登录允许以 `phone-verification` 作为 Step 7 的成功落点
|
||||
6. 如果页面没有可用的手机号登录入口,则 Step 7 直接抛出明确业务错误,不再误进入 Step 8 邮箱轮询
|
||||
7. 如果未进入验证码页,则按可恢复逻辑最多重试 3 次;但一旦当前失败已经明确进入 `https://auth.openai.com/add-phone`,则立即退出步骤 7 内部重试,不再继续第 2 / 3 次尝试
|
||||
8. 自动运行一旦进入步骤 7 之后的链路,若后续步骤报错且认证页未进入 `https://auth.openai.com/add-phone`,则统一回到步骤 7 重新开始授权流程
|
||||
9. CPA 回调阶段固定为步骤 9,不再支持“第七步回调”跳过步骤 7/8
|
||||
|
||||
贡献模式补充:
|
||||
|
||||
@@ -432,14 +448,19 @@ IP 代理模块在同步、切换、Change、出口探测和自动运行成功
|
||||
|
||||
流程:
|
||||
|
||||
1. 确认当前认证页已经进入登录验证码页
|
||||
2. 对非 2925 provider,固定当前验证码页显示邮箱为本次 Step 8 的目标邮箱
|
||||
3. 打开邮箱页或 API 轮询入口
|
||||
4. 轮询登录验证码
|
||||
5. 回填登录验证码
|
||||
6. 如果登录验证码提交后页面进入 `add-phone / 手机号页`,则步骤 8 会保留“登录验证码已提交成功”的结果,并把后续手机号验证需求继续交给步骤 9 处理
|
||||
7. 如遇邮箱轮询类失败或显式的 `STEP8_RESTART_STEP7` 恢复错误,则按有限次数回到 Step 7 重试
|
||||
8. 获取到登录验证码后不再触发“刷新 OAuth 并重走 Step 7”的前置回放,直接在当前验证码页提交并继续进入 Step 9
|
||||
1. 先按账号身份判断当前登录验证码通道
|
||||
2. 邮箱账号:
|
||||
- 确认当前认证页已经进入邮箱验证码页
|
||||
- 对非 2925 provider,固定当前验证码页显示邮箱为本次 Step 8 的目标邮箱
|
||||
- 打开邮箱页或 API 轮询入口
|
||||
- 轮询登录验证码并回填
|
||||
3. 手机号账号:
|
||||
- 直接复用注册成功后的同一手机号订单,不重新申请新号码
|
||||
- 重新激活该号码,轮询短信验证码
|
||||
- 在当前 `phone-verification` 页回填短信验证码
|
||||
4. 如果登录验证码提交后页面进入 `add-phone / 手机号页`,则步骤 8 会保留“登录验证码已提交成功”的结果,并把后续手机号验证需求继续交给步骤 9 处理
|
||||
5. 如遇邮箱轮询类失败或显式的 `STEP8_RESTART_STEP7` 恢复错误,则按有限次数回到 Step 7 重试
|
||||
6. 获取到登录验证码后不再触发“刷新 OAuth 并重走 Step 7”的前置回放,直接在当前验证码页提交并继续进入 Step 9
|
||||
|
||||
补充:
|
||||
|
||||
@@ -447,6 +468,7 @@ IP 代理模块在同步、切换、Change、出口探测和自动运行成功
|
||||
- 对 `2925 receive` 而言,Step 8 会把当前目标注册邮箱一并传给 2925 内容脚本;只有当邮件里显式写出了其他邮箱时才会跳过,从而在不破坏历史兼容性的前提下,尽量降低误收验证码的概率。
|
||||
- 对 `custom` provider 而言,Step 8 仍使用手动验证码确认弹窗;弹窗当前额外提供“出现手机号验证”按钮,点击后会直接抛出与真实 `add-phone` 页面一致的 fatal 错误,供 Auto 按既有 add-phone 分支继续下一邮箱。
|
||||
- 当登录验证码提交后进入 `phone-verification` 页时,内容脚本会显式把该页面识别为“手机验证码页”,避免与邮箱验证码页混淆。
|
||||
- 手机号登录分支不会再读取邮箱 provider 配置,也不会误调用邮箱轮询;如果缺少可复用的注册手机号激活记录,会直接要求回到步骤 7 重新开始登录。
|
||||
|
||||
### Step 9
|
||||
|
||||
|
||||
Reference in New Issue
Block a user