一个用于批量跑通 ChatGPT OAuth 注册/登录流程的 Chrome 扩展。
当前版本基于侧边栏控制,支持单步执行、整套自动执行、停止当前流程、保存常用配置,以及通过 DuckDuckGo / QQ / 163 / Inbucket / Hotmail 协助获取验证码。
一百五十个号,一个401:
|
|
佬们觉得好用的话,也可以打赏小弟一杯奶茶哦
|
|
<img alt="Star History Chart" src="https://api.star-history.com/chart?repos=QLHazyCoder/codex-oauth-automation-extension&type=timeline&logscale&legend=top-left" />
Sign up / RegisterHotmail:继续使用 邮箱 + 客户端 ID + 刷新令牌(refresh token),并可在远程服务与本地助手两种模式间切换QQ Mail、163 Mail、Inbucket mailbox@duck.com 地址birthdayageAuto 多轮运行Stop@duck.com + QQ / 163 / Inbucket 转发QQ / 163 / Inbucket,对应页面需要提前能正常打开chrome://extensions/如果你只是想先跑通一套最稳的组合,建议直接按下面三种方案之一配置。
CPA + QQ / 163 / 163 VIPCPA 填你的管理面板 OAuth 页面地址Mail 选择 QQ Mail、163 Mail 或 163 VIP Mail邮箱生成 选择 DuckDuckGo 或 CloudflareCloudflare,先按下文把 Cloudflare Email Routing 配好获取 生成邮箱,或手动粘贴一个你能收信的邮箱Step 1 ~ Step 4AutoSUB2API + QQ / 163 / 163 VIP来源 选择 SUB2APISUB2API 地址、登录邮箱、登录密码、分组名Mail 与 邮箱生成 的配置方式同方案 AHotmail 账号池Mail 选择 HotmailHotmail 账号池 中添加 邮箱 / Client ID / Refresh Token校验,再点 测试收信AutoMail = Hotmail 时会直接使用账号池里的邮箱作为注册邮箱,不再走 Duck / Cloudflare 自动生成CPA你的管理面板 OAuth 页面地址,例如:
http(s)://<your-host>/management.html#/oauth
Step 1 和 Step 9 都依赖这个地址。
Mail支持五种验证码来源:
Hotmail163 Mail163 VIP MailQQ MailInbucket说明:
Hotmail 通过侧边栏里的 Hotmail 账号池选择账号,可切换为远程服务模式或本地助手模式QQ、163、163 VIP 用于直接轮询网页邮箱Inbucket 通过你在侧边栏里配置的 host 访问 mailbox 页面:https://<your-inbucket-host>/m/<mailbox>/Hotmail 账号池仅当 Mail = Hotmail 时使用。
可配置项:
接码模式远程服务地址本地助手地址每条账号支持保存:
emailclientIdrefreshToken使用方式:
http://127.0.0.1:17373)start-hotmail-helper.batstart-hotmail-helper.command校验测试收信Windows:
.\start-hotmail-helper.bat
macOS:
chmod +x ./start-hotmail-helper.command
./start-hotmail-helper.command
如果你不想走启动脚本,也可以直接运行 Python 程序本体:
python scripts/hotmail_helper.py
如果你的环境里命令是 python3:
python3 scripts/hotmail_helper.py
本地 helper 启动成功后,终端会输出:
Hotmail helper listening on http://127.0.0.1:17373
看到这行再回到扩展里点 校验 或 复制最新验证码。
Python 3 not found,先安装 Python 3.10+本地助手http://127.0.0.1:17373Mailbox仅当 Mail = Inbucket 时显示。
填写 Inbucket mailbox 名称,例如:
tmp-mailbox
脚本会自动打开:
https://<your-inbucket-host>/m/<mailbox>/
并且只检索未读邮件:
.message-list-entry.unseenInbucket仅当 Mail = Inbucket 时显示。
这里填写 Inbucket host,支持两种格式:
your-inbucket-hosthttps://your-inbucket-host脚本会自动规范化成 origin 后再拼接 mailbox URL。
EmailStep 3 使用的注册邮箱。
来源有两种:
获取 自动生成邮箱(DuckDuckGo 或 Cloudflare)注意:
邮箱生成 = Cloudflare,插件里只需要维护 CF 域名CF 域名 支持保存多个,并通过下拉框切换当前要生成的域名Mail = Hotmail 时,这个输入框由账号池自动同步当前账号邮箱Mail = Hotmail 时,Step 3 会直接使用 Hotmail 账号池里的邮箱;Duck / Cloudflare 不参与自动邮箱生成Cloudflare,更推荐把 Mail 设为 QQ / 163 / 163 VIP;Inbucket 仅在它能真实接收外部邮件并完成 Cloudflare 验证时再使用Auto 按钮只负责 DuckDuckGo 地址获取邮箱生成 = Cloudflare 时的配置CF 域名:例如 example.xyz添加 / 保存:用于保存多个可切换的域名Cloudflare 模式下,插件不会再调用 Cloudflare API 创建路由。
它现在只做一件事:
CF 域名6 个小写字母 + 4 个数字 组成,顺序随机打乱a3b9cd1e2f@example.xyz 的注册邮箱也就是说,插件默认认为:
163 / QQ / Inbucket 收件链路接住在 Cloudflare 后台,至少保证下面一条成立:
否则插件虽然能生成 @你的域名 邮箱,但验证码邮件最后没人接收,后面的 Step 4 / Step 7 还是会失败。
Mail = QQ Mail:Cloudflare 的 Destination address / Destination addresses 填你的 QQ 邮箱全地址Mail = 163 Mail:Cloudflare 的 Destination address / Destination addresses 填你的 163 邮箱全地址Mail = 163 VIP Mail:Cloudflare 的 Destination address / Destination addresses 填你的 163 VIP 邮箱全地址Mail = Inbucket:仅当你的 Inbucket 实例本身就是一个真实可收外部邮件、且能收到 Cloudflare 验证邮件的地址时再使用Mail = Hotmail:当前项目的自动流程不推荐和 Cloudflare 同时使用;因为 Mail = Hotmail 时,注册邮箱会直接使用 Hotmail 账号池邮箱下面按钮名称以 Cloudflare 官方英文界面为准,括号内中文仅用于对照理解,不保证是 Cloudflare 的官方中文翻译。
Email > Email RoutingAdd records and enable(添加记录并启用)Routing rules(路由规则) 或 Routes(路由)Create address(创建地址)Custom address(自定义地址) 里填一个固定前缀,例如 cf-initAction(动作) 中选择 Send to an email(转发到邮箱)Destination / Destination addresses(目标邮箱) 中填你真正收验证码的邮箱Save(保存)Verify email address(验证邮箱地址)Go to Email Routing(前往 Email Routing)Verified(已验证)Continue(继续)Add records and finish(添加记录并完成)Catch-all address(Catch-all 地址)Active(启用)Action(动作) 中选择 Send to an email(转发到邮箱)Destination(目标邮箱),就选你刚刚已经验证通过的那个邮箱Save(保存)邮箱生成 选择 CloudflareCF 域名 里点 添加保存获取获取,拿到一个随机前缀邮箱Mail 选的是 QQ / 163 / 163 VIP / Inbucket,就去对应收件链路里确认这封测试邮件能否到达邮箱生成 = CloudflareCF 域名 里点 添加保存获取,插件就会基于这个域名生成一个随机邮箱Password保存 按钮手动保存一次配置 按钮支持导出当前配置到 JSON 文件,也支持从 JSON 文件覆盖导入配置扩展会把本轮实际使用的密码同步回侧边栏,便于查看和复制。
Auto整套流程自动跑。
支持多轮运行,运行次数由右上角数字框决定。
延迟 里的“启动前倒计时”只控制整轮 Auto 开始前要不要先倒计时多少分钟。
步间随机 控制 Auto 流程里每一步真正执行前的额外等待秒数。这个设置只影响 Auto,不影响你手动单步点击执行;填 0 或留空表示不延迟。
如果当前面板里已经存在未完成进度,点击 Auto 时会弹出选择:
重新开始:重置当前流程进度,从 Step 1 开始新一轮继续当前:把 已完成 / 已跳过 视为已处理,从第一个未处理步骤继续往后执行侧边栏共有 9 个步骤按钮,可逐步执行:
Open ChatGPTSignup + EmailFill PasswordGet Signup CodeFill Name / BirthdayLogin via OAuthGet Login CodeManual OAuth ConfirmCPA Verify点击右上角 Auto 后,后台会按顺序跑完整流程。
当前 Auto 逻辑是:
https://chatgpt.com/Mail 选择邮箱来源Mail = Hotmail,会从账号池自动分配一个可用账号Continue也就是说:
继续当前 时,后台不会先做大而全的前置校验,而是从当前步骤状态直接继续;缺什么条件,就在运行到那一步时再报错或暂停步间随机 的秒数额外等待;填 0 或留空表示不延迟通过动态注入的 content/signup-page.js:
https://chatgpt.com/这一步不再获取 OAuth 链接;OAuth 链接会在 Step 6 内部按需刷新。
通过 content/signup-page.js:
免费注册 / Sign up / Register / 创建账户继续https://auth.openai.com/create-account/password 时继续 Step 3,进入 https://auth.openai.com/email-verification 时自动跳过 Step 3 直接进入 Step 4实际使用的密码会写入会话状态,并同步到侧边栏显示。
根据 Mail 配置,轮询邮箱并提取 6 位验证码。
进入邮箱轮询前,脚本会先确认认证页是否已经进入验证码页面;如果密码页出现 糟糕,出错了 / 操作超时(Operation timed out) 并带有 重试 按钮,会先自动点击 重试、回到密码页重新提交,再继续等待验证码页面。
支持:
Hotmail(远程服务 / 本地助手)content/qq-mail.jscontent/mail-163.jscontent/inbucket-mail.js邮件匹配规则以以下关键词为主:
openai、noreply、verify、auth、duckduckgo、forwardverify、verification、code、验证、confirm随机生成人名与生日。
当前脚本支持两种页面结构:
birthdayage如果页面是生日模式,会填写年月日;如果页面上存在 input[name='age'],则直接填写年龄。
点击 完成帐户创建 后,Step 5 会立刻记为完成,不再等待页面跳转结果;自动运行在进入 Step 6 前只会等待当前页面加载完成,不再接管 ChatGPT 跳转或 onboarding 跳过逻辑。
在登录前会先重新获取一遍最新的 CPA OAuth 链接,再使用刚注册的账号登录。
当前 Step 6 的完成标准不是“邮箱/密码已提交”,而是:
chatgpt.com / openai.com 相关 cookies支持:
Step 7 默认要求当前认证页已经处于登录验证码页。
它只负责:
与 Step 4 类似,但会使用稍微不同的关键词组合去找登录验证码邮件。
严格回调捕获规则:
http(s)://localhost:<port>/auth/callback?code=...&state=... 或 http(s)://127.0.0.1:<port>/auth/callback?code=...&state=...localhost 页面,包括本地部署的 CPA 面板,不会再被误判为回调地址虽然按钮名称还是 Manual OAuth Confirm,但当前代码已经做了自动尝试:
debugger 的输入事件点击该按钮chrome.webNavigation.onBeforeNavigateCallback注意:
校验规则:
/auth/callback,或缺少 code / state 的本地回调地址/auth 这一类真实回调标签页,不会再泛化清理任意 localhost 路径全部回调全部回调 时,即使 CPA 部署在本地,也会执行步骤 9跳过第9步 时,仅当本地 CPA 且步骤 8 已拿到回调地址时,才会直接跳过步骤 9回到 CPA 面板:
认证成功! 状态徽标后,才判定成功http://localhost:1455/auth 这一类前缀的 localhost 残留页面通过 content/duck-mail.js:
Generate Private Duck Address@duck.com 地址这个功能会被:
Email 旁边的 Auto 按钮使用Auto Run 流程优先尝试使用扩展内置了停止当前流程的能力:
StopSTOP_FLOW适合以下场景:
运行时状态主要使用 chrome.storage.session 保存:
配置项另外使用 chrome.storage.local 持久化保存:
特点:
storage.session 对 content script 的访问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
hotmail-utils.js Hotmail 收信相关通用辅助
content/duck-mail.js Duck 邮箱自动获取
content/qq-mail.js QQ 邮箱验证码轮询
content/mail-163.js 163 邮箱验证码轮询
content/inbucket-mail.js Inbucket mailbox 验证码轮询
sidepanel/ 侧边栏 UI
推荐先手动跑通一次:
确认邮箱和验证码链路稳定后,再使用 Auto。
当前
$ claude mcp add FlowPilot \
-- python -m otcore.mcp_server <graph>