[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80249":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":13,"stars7d":15,"stars30d":16,"stars90d":14,"forks30d":14,"starsTrendScore":17,"compositeScore":18,"rankGlobal":8,"rankLanguage":8,"license":8,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":21,"createdAt":8,"pushedAt":8,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":14,"starSnapshotCount":14,"syncStatus":15,"lastSyncTime":25,"discoverSource":26},80249,"plus-pp-helper","systemoutprintlnhelloworld\u002Fplus-pp-helper","systemoutprintlnhelloworld",null,"JavaScript",57,29,52,1,0,2,4,3,4.43,false,"main",[],"2026-06-12 02:04:00","# Plus PP Helper\n\u003Cp align=\"center\">\n    \u003Ca href=\"https:\u002F\u002Flinux.do\" alt=\"LINUX DO\">\u003Cimg src=\"https:\u002F\u002Fshorturl.at\u002FggSqS\" \u002F>\u003C\u002Fa>\n\u003C\u002Fp>\nChrome MV3 扩展，用于 CTF \u002F competition sandbox 场景中的账号流程自动化。当前主流程只面向可配置的 sandbox\u002Fmock 目标：从邮箱 API 获取未注册邮箱、打开登录页、轮询并回填验证码、填写基础资料，最后读取 sandbox session endpoint，把 JSON 复制到剪贴板，并填入支付长链生成页。\n\n本项目不会默认自动化真实 `chatgpt.com` \u002F OpenAI 注册流程；如果 Session URL 指向真实 ChatGPT\u002FOpenAI 域名，扩展会拒绝执行。\n\n扩展首次加载时会自动打开一次 `https:\u002F\u002Fgist.github.com\u002Fsystemoutprintlnhelloworld\u002Fbd72f38ddd35e32b10f5ce8efc328bcc\u002Fraw\u002Fc97bfb561894cbff77e993c032e54a5ff387310a\u002Fpaypal-autofiller.user.js`，打开成功后在 `chrome.storage.local` 记录标记，后续启动不会重复打开。\n\n## 快速开始\n\n1. 打开 `chrome:\u002F\u002Fextensions\u002F`\n2. 开启“开发者模式”\n3. 点击“加载已解压的扩展程序”\n4. 选择当前项目目录\n5. 打开扩展 Side Panel，填写配置并点击 `自动运行`\n\n运行中如页面卡在邮箱填写或跳转阶段，可点击顶部 `快速中断`，扩展会立刻广播停止信号并把当前 running 步骤置为可重试状态。日志区的 `Stick end` 开关可控制刷新时是否始终滚动到底部。\n\n## 必要配置\n\n- `API Key`\n  Sandbox 邮箱 API Key。\n- `邮箱 API URL`\n  邮箱服务地址，例如 `http:\u002F\u002Flocalhost:5000`。\n- `邮箱后台登录`\n  自动运行前会先打开 `邮箱 API URL` 对应的 Web 后台，例如 `http:\u002F\u002Flocalhost:5000\u002F`。邮箱后台密码独立于 API Key，默认 `admini123`，扩展会自动输入并确认登录态。\n- `登录页 URL`\n  Sandbox 登录页，例如 `http:\u002F\u002Flocalhost:5000\u002Fauth\u002Flogin`。\n- `Session URL`\n  Sandbox session JSON endpoint，例如 `http:\u002F\u002Flocalhost:5000\u002Fapi\u002Fauth\u002Fsession`。\n- `Session 保护`\n  默认开启。开启时，Session URL 只能是 localhost，或与登录页 \u002F 邮箱 API 同 host 的 sandbox 地址。\n- `关闭保护密码`\n  如比赛环境必须访问另一个 sandbox host，可取消勾选 `Session 保护` 并输入 `CTF-SANDBOX` 保存。此操作只放宽 sandbox allowlist；真实 `chatgpt.com` \u002F OpenAI 域仍会被拒绝。\n- `默认姓名`\n  基础资料页默认填写值，默认 `nicai`。\n- `默认年龄`\n  基础资料页默认填写值，默认 `25`。\n- `轮询间隔 \u002F 轮询超时`\n  验证码邮件轮询参数。\n\n## 自动流程\n\n0. 打开邮箱 API URL 对应的邮箱后台页面，用独立邮箱后台密码自动登录并确认登录态\n1. 从 sandbox 邮箱 API 获取一个未注册邮箱\n2. 打开配置的 sandbox 登录页\n3. 填写并提交邮箱，等待验证码页 DOM \u002F URL 变化；未检测到变化时至少等待 10 秒\n4. 轮询邮箱验证码并回填，等待资料页 DOM \u002F URL 变化；未检测到变化时至少等待 10 秒\n5. 填写基础资料后持续监控后续引导页：遇到 `What brings you to ChatGPT?` 立即点击 `Skip`，遇到 `You're all set` 立即点击 `Continue`；若页面暂未出现，保留最多 45 秒的自动观察窗口\n6. 打开 session endpoint 页面，复制完整 session JSON\n7. 打开 `https:\u002F\u002Fpayurl.ark2.cn\u002F`，填入 `Access Token 或 session JSON` 文本框并点击生成支付长链\n\n流程完成后会给当前邮箱打 `plus` 标签，并写入本地 `usedAccounts` 账本。后续选号会跳过已有 `plus`、`已注册` 或 `registered` 标签的账号。\n\n## 时序图\n\n```mermaid\nsequenceDiagram\n  autonumber\n  participant U as 操作员\n  participant P as Side Panel\n  participant B as Background\n  participant W as Mail Web UI\n  participant M as Sandbox Mail API\n  participant L as Sandbox Login Page\n  participant S as Sandbox Session API\n  participant C as Clipboard\n  participant Pay as Pay URL Page\n\n  U->>P: 保存 API URL \u002F 登录页 \u002F Session URL\n  P->>B: SAVE_SETTINGS\n  B->>B: 校验 Session 保护配置\n  U->>P: 自动运行\n  P->>B: AUTO_RUN_CURRENT\n  B->>W: 打开 mailApiBaseUrl 对应 Web 后台\n  B->>W: 自动输入 mailUiPassword\n  W-->>B: 登录态确认\n  B->>M: GET \u002Fapi\u002Fexternal\u002Faccounts?status=unregistered\n  M-->>B: 未注册邮箱\n  B->>L: 打开登录页并注入 content script\n  B->>L: 填写邮箱\n  L-->>B: DOM\u002FURL 证据或 10 秒等待\n  loop 轮询验证码\n    B->>M: GET \u002Fapi\u002Fexternal\u002Femails?email=\u003Caddress>\n    M-->>B: 邮件列表 \u002F 验证码\n  end\n  B->>L: 回填验证码\n  L-->>B: DOM\u002FURL 证据或 10 秒等待\n  B->>L: 填写姓名和年龄\n  L-->>B: 至少等待 25 秒\n  B->>L: 如出现用途页则点击 Skip\n  B->>L: 如出现完成页则点击 Continue\n  B->>B: 校验 Session URL\n  B->>S: 打开 session endpoint 页面\n  S-->>B: JSON 页面\n  B->>C: 复制完整 JSON\n  B->>Pay: 打开并粘贴 session JSON\n  Pay-->>B: 点击生成支付长链\n  B->>M: 用 Web session 给邮箱打 plus 标签\n  B->>B: 标记 usedAccounts\n```\n\n```mermaid\nsequenceDiagram\n  autonumber\n  participant P as Side Panel\n  participant B as Background\n  participant V as Session Validator\n\n  P->>B: SAVE_SETTINGS(sessionProtectionEnabled=true)\n  B->>V: 默认启用 allowlist\n  V-->>B: 保存通过\n  P->>B: SAVE_SETTINGS(sessionProtectionEnabled=false,password)\n  alt password == CTF-SANDBOX\n    B->>V: 关闭 allowlist 限制\n    V-->>B: 非 OpenAI\u002FChatGPT host 可继续\n  else password 错误\n    B-->>P: 拒绝保存\n  end\n  B->>V: 校验 Session URL\n  alt URL 是 chatgpt.com \u002F *.openai.com\n    V-->>B: 永久拒绝\n  else localhost 或 sandbox host\n    V-->>B: 允许执行\n  end\n```\n\n## 手动调试\n\nSide Panel 的“高级 \u002F 手动调试”保留 7 个步骤按钮：\n\n1. 获取未注册邮箱\n2. 打开登录页\n3. 填写邮箱\n4. 邮箱验证码：取码 \u002F 回填\n5. 填写基础资料\n6. 复制 Session JSON\n7. 生成支付长链\n\n手动跑完后可以点击 `完成流程`，会尝试给当前邮箱打 `plus` 标签并标记本地已用。\n\n## Release 自动化\n\n仓库包含 GitHub Actions 工作流 `.github\u002Fworkflows\u002Frelease.yml`。任意分支 push、tag push 或手动触发 workflow 后，都会运行测试、整理扩展文件，并产出：\n\n- `plus-pp-helper.zip`\n- `plus-pp-helper.crx`\n\n分支 push 会创建 `auto-\u003Crun_number>` 正式 Release，并标记为 latest；tag push 会使用 tag 名创建正式 Release。如需稳定的 CRX extension id，在仓库 Secrets 中配置 `CRX_PRIVATE_KEY_B64`，内容为 CRX 私钥 PEM 的 base64。未配置时 workflow 会让 Chrome 临时生成打包密钥，适合测试发布。\n\n## Sandbox 邮箱 API 兼容\n\n默认账号接口为：\n\n```text\nGET {邮箱 API URL}\u002Fapi\u002Fexternal\u002Faccounts?status=unregistered\n```\n\n默认邮件接口为：\n\n```text\nGET {邮箱 API URL}\u002Fapi\u002Fexternal\u002Femails?email=\u003Caddress>&folder=all&top=10\n```\n\n账号响应支持以下常见形状：\n\n```json\n{ \"accounts\": [{ \"email\": \"user@example.test\" }] }\n```\n\n```json\n{ \"email\": \"user@example.test\" }\n```\n\n邮件响应支持 `emails`、`mails`、`messages`、`items` 等数组字段，并会从邮件主题、正文或详情中提取 4-8 位验证码。\n\n## 项目结构\n\n```text\nhotmail-register-extension\u002F\n├── background.js\n├── manifest.json\n├── content\u002F\n│   ├── sandbox-login-page.js\n│   ├── signup-page.js\n│   ├── vps-panel.js\n│   └── utils.js\n├── shared\u002F\n│   ├── sandbox-flow.js\n│   ├── sandbox-mail-client.js\n│   ├── sandbox-session.js\n│   ├── verification-poller.js\n│   └── ...\n├── sidepanel\u002F\n│   ├── sidepanel.html\n│   ├── sidepanel.css\n│   └── sidepanel.js\n├── tests\u002F\n└── docs\u002F\n```\n\n# 友链\nLINUX DO - The New Ideal Community\n\u003Cp align=\"center\">\n    \u003Ca href=\"https:\u002F\u002Flinux.do\" alt=\"LINUX DO\">\u003Cimg src=\"https:\u002F\u002Fshorturl.at\u002FggSqS\" \u002F>\u003C\u002Fa>\n\u003C\u002Fp>\n","Plus PP Helper 是一个 Chrome MV3 扩展程序，专为 CTF 或竞赛沙箱环境设计，旨在自动化账号注册流程。其核心功能包括从邮箱 API 获取未注册邮箱、自动填写并提交登录信息、轮询并回填验证码、填写基础资料，并最终读取 sandbox session endpoint 将 JSON 复制到剪贴板以生成支付长链。该扩展支持配置多个参数如邮箱 API URL 和登录页 URL 等，确保在指定的沙箱环境中安全运行，同时禁止对真实 ChatGPT\u002FOpenAI 域名的操作。适用于需要快速批量创建测试账号或模拟用户行为的技术竞赛场景。","2026-06-11 03:59:49","CREATED_QUERY"]