抽取cookie清理逻辑为新的第六步

This commit is contained in:
QLHazyCoder
2026-04-17 15:56:19 +08:00
parent b387ebfa91
commit cbe9b1fabf
30 changed files with 630 additions and 603 deletions
+35 -26
View File
@@ -126,7 +126,7 @@
2. 填好 `SUB2API` 地址、登录邮箱、登录密码、分组名
3. `Mail``邮箱生成` 的配置方式同方案 A
4. Step 1 会直接在 SUB2API 后台生成 OAuth 链接
5. Step 9 会把 localhost 回调提交回 SUB2API,并直接创建 OpenAI 账号
5. Step 10 会把 localhost 回调提交回 SUB2API,并直接创建 OpenAI 账号
### 方案 C`Hotmail 账号池`
@@ -146,7 +146,7 @@
http(s)://<your-host>/management.html#/oauth
```
Step 1 和 Step 9 都依赖这个地址。
Step 1 和 Step 10 都依赖这个地址。
### `Mail`
@@ -416,17 +416,18 @@ Cloudflare 模式下,插件不会再调用 Cloudflare API 创建路由。
### 单步模式
侧边栏共有 9 个步骤按钮,可逐步执行:
侧边栏共有 10 个步骤按钮,可逐步执行:
1. `Open ChatGPT`
2. `Signup + Email`
3. `Fill Password`
4. `Get Signup Code`
5. `Fill Name / Birthday`
6. `Login via OAuth`
7. `Get Login Code`
8. `Manual OAuth Confirm`
9. `CPA Verify`
6. `Clear Login Cookies`
7. `Login via OAuth`
8. `Get Login Code`
9. `Manual OAuth Confirm`
10. `CPA Verify`
### Auto 模式
@@ -440,7 +441,7 @@ Cloudflare 模式下,插件不会再调用 Cloudflare API 创建路由。
4. 如果不是 Hotmail,则按当前“邮箱生成”配置尝试自动获取邮箱(Duck / Cloudflare / iCloud 等)
5. Step 2 点击注册、填写邮箱,并按真实落地页进入密码页或直接进入邮箱验证码页
6. 如果自动获取失败,暂停并等待你在侧边栏填写邮箱后点击 `Continue`
7. 继续执行 Step 3 ~ Step 9
7. 继续执行 Step 3 ~ Step 10
也就是说:
@@ -511,18 +512,26 @@ Cloudflare 模式下,插件不会再调用 Cloudflare API 创建路由。
如果页面是生日模式,会填写年月日;如果页面上存在 `input[name='age']`,则直接填写年龄。
点击 `完成帐户创建` 后,Step 5 会立刻记为完成,不再等待页面跳转结果;自动运行在进入 Step 6 前只会等待当前页面加载完成,不再接管 ChatGPT 跳转或 onboarding 跳过逻辑。
### Step 6: Login via OAuth
### Step 6: Clear Login Cookies
在登录前会先重新获取一遍最新的 CPA OAuth 链接,再使用刚注册的账号登录。
当前 Step 6 的完成标准不是“邮箱/密码已提交”,而是:
这一步只负责登录前清理环境:
- 开始前先等待 10 秒
- 直接删除 `chatgpt.com / openai.com` 相关 cookies
- 再去 CPA / SUB2API 刷新最新 OAuth 链接
- 必要时再用 `browsingData` 补扫一次
把 cookies 清理独立成单独步骤后,后续登录链路的重开锚点就不再落在这里。
### Step 7: Login via OAuth
这一步会重新获取一遍最新的 CPA OAuth 链接,再使用刚注册的账号登录。
当前 Step 7 的完成标准不是“邮箱/密码已提交”,而是:
- 已刷新到最新 OAuth 链接
- 认证页已经真正进入登录验证码页面
- 如遇登录超时报错,会先尝试自动点击认证页上的 `重试` 恢复当前页面,再由后台按既有逻辑重跑整个 Step 6
- 如遇登录页长时间停滞,会由后台刷新 OAuth 后重跑整个 Step 6
- 如遇登录超时报错,会先尝试自动点击认证页上的 `重试` 恢复当前页面,再由后台按既有逻辑重跑整个 Step 7
- 如遇登录页长时间停滞,会由后台刷新 OAuth 后重跑整个 Step 7
支持:
@@ -530,23 +539,23 @@ Cloudflare 模式下,插件不会再调用 Cloudflare API 创建路由。
- 必要时切换到一次性验证码登录
- 直到登录验证码页就绪才算步骤完成
### Step 7: Get Login Code
### Step 8: Get Login Code
Step 7 默认要求当前认证页已经处于登录验证码页。
Step 8 默认要求当前认证页已经处于登录验证码页。
它只负责:
- 打开邮箱并轮询登录验证码
- 填写并提交登录验证码
- 验证码链路失败后按有限次数回退到 Step 6
- 验证码链路失败后按有限次数回退到 Step 7
与 Step 4 类似,但会使用稍微不同的关键词组合去找登录验证码邮件。
### Step 8: Manual OAuth Confirm
### Step 9: Manual OAuth Confirm
严格回调捕获规则:
- 步骤 8 现在只接受 `http(s)://localhost:<port>/auth/callback?code=...&state=...``http(s)://127.0.0.1:<port>/auth/callback?code=...&state=...`
- 步骤 9 现在只接受 `http(s)://localhost:<port>/auth/callback?code=...&state=...``http(s)://127.0.0.1:<port>/auth/callback?code=...&state=...`
- 监听范围只限于当前 OAuth 认证标签页的主 frame 跳转
- 普通 `localhost` 页面,包括本地部署的 CPA 面板,不会再被误判为回调地址
@@ -566,15 +575,15 @@ Step 7 默认要求当前认证页已经处于登录验证码页。
- 如果 120 秒内没有捕获到 localhost 回调,会报错超时
- README 中的按钮名称沿用了旧文案,但代码行为是“自动尝试点击”
### Step 9: CPA Verify
### Step 10: CPA Verify
校验规则:
- 步骤 9 会拒绝任何不是真实 `/auth/callback`,或缺少 `code` / `state` 的本地回调地址
- 步骤 10 会拒绝任何不是真实 `/auth/callback`,或缺少 `code` / `state` 的本地回调地址
- 成功后的清理只会针对 `/auth` 这一类真实回调标签页,不会再泛化清理任意 localhost 路径
- 侧边栏可切换“本地 CPA”策略,默认是 `全部回调`
- 选择 `全部回调` 时,即使 CPA 部署在本地,也会执行步骤 9
- 选择 `跳过第9步` 时,仅当本地 CPA 且步骤 8 已拿到回调地址时,才会直接跳过步骤 9
- 选择 `全部回调` 时,即使 CPA 部署在本地,也会执行步骤 10
- 选择 `跳过第10步` 时,仅当本地 CPA 且步骤 9 已拿到回调地址时,才会直接跳过步骤 10
回到 CPA 面板:
@@ -653,8 +662,8 @@ background.js 后台主控,编排 1~9 步、Tab 复用、状态
manifest.json 扩展清单
data/names.js 随机姓名、生日数据
content/utils.js 通用工具:等待元素、点击、日志、停止控制
content/vps-panel.js CPA 面板步骤:内部 OAuth 刷新 / Step 9
content/signup-page.js ChatGPT 官网 + OpenAI 注册/登录页步骤:Step 1 / 2 / 3 / 5 / 6 / 8
content/vps-panel.js CPA 面板步骤:内部 OAuth 刷新 / Step 10
content/signup-page.js ChatGPT 官网 + OpenAI 注册/登录页步骤:Step 1 / 2 / 3 / 5 / 7 / 9
hotmail-utils.js Hotmail 收信相关通用辅助
content/duck-mail.js Duck 邮箱自动获取
content/qq-mail.js QQ 邮箱验证码轮询