Hotmail-enhanced OpenAI / ChatGPT OAuth automation workflow
基于社区已有 fork 继续增强的版本:把 Chrome 扩展自动化流程与本地 Hotmail companion service 组合在一起,用于批量跑注册、收码、OAuth 回调与 CPA 验证。
这个项目不是从零开始的新工程,而是在已有工作的基础上继续往下补的版本。
- 原始上游仓库:https://github.com/QLHazyCoder/codex-oauth-automation-extension
- 相关帖子:https://linux.do/t/topic/1928372
- 当前这个版本,是在另一个 fork 分支基础上继续改进的,相关帖子:https://linux.do/t/topic/1914073
- Hotmail 能力参考项目:https://github.com/ZeroPointSix/outlookEmailPlus
- 拆出本地
hotmail-service
把 Hotmail / Outlook 收码逻辑从扩展运行时中拆出来,改成独立本地服务。 - 支持 Hotmail 批量账号数据库调度
账号导入后进入 SQLite,本地按pending -> claimed -> success / failed生命周期流转。 - 支持 Graph / IMAP / Playwright 多收码链路
当前支持:graphimap_newimap_oldplaywrightauto
- 补了 WebUI 和基础管理能力
可以直接查看 Hotmail 账号池、状态汇总、批量更新和清理。 - 保留了纯账号密码链路的实验入口
playwright方式可以尝试只有账号密码的 Hotmail 收码,但目前仍然更适合作为实验功能和后续开发基础。
从当前代码实现来看,这已经不是单一扩展,而是一个 双组件协作系统:
- Chrome Extension (
multiPagePlugins)
负责侧栏 UI、Step 1 ~ 9 自动化、页面注入、注册页 / OAuth 页面操作,以及 CPA API 对接。 - Hotmail Companion Service (
hotmail-service)
负责 Hotmail / Outlook 收码、OAuth helper、本地 SQLite 账号库、批量状态管理,以及 WebUI 管理页面。
当前 Step 1 与 Step 9 不再依赖旧式页面 DOM,而是直接走:
GET /v0/management/codex-auth-url?is_webui=truePOST /v0/management/oauth-callbackGET /v0/management/get-auth-status?state=...
扩展在 Hotmail 模式下,主要调用本地:
GET /healthPOST /fetch-code-directPOST /accounts/importGET /accounts/summaryPOST /accounts/claim-nextPOST /accounts/markPOST /accounts/reset-claimed
数据库默认位置:
hotmail-service/data/hotmail_accounts.db
状态流转:
pendingclaimedsuccessfailed
服务内置:
http://127.0.0.1:8001/accounts/ui
支持:
- 查看账号列表
- 按状态筛选
- 单条编辑状态 / 标签 / 备注 / OpenAI 密码
- 批量更新
- 批量删除
- 清空数据库
- 重置
claimed
/fetch-code-direct 当前支持:
autoplaywrightgraphimap_newimap_old
推荐使用方式:
- 有
client_id + refresh_token:优先graph/imap - 只有邮箱密码:可尝试
playwright,但视为实验功能
.
├─ README.md
├─ multiPagePlugins/ # Chrome 扩展主体
│ ├─ background.js # Step 1~9 主流程、状态管理、API 调用
│ ├─ manifest.json # MV3 扩展清单
│ ├─ sidepanel/ # 侧栏 UI
│ ├─ shared/ # provider / oauth / verification 公共逻辑
│ ├─ content/ # 页面自动化 content scripts
│ └─ data/
└─ hotmail-service/ # 本地 FastAPI companion service
├─ app/
│ ├─ main.py # FastAPI 入口与 API
│ ├─ account_db.py # SQLite 账号库
│ ├─ outlook_client.py # Playwright 收码逻辑
│ ├─ oauth_mail_client.py # Graph / IMAP / OAuth helper
│ ├─ models.py # API 请求/响应模型
│ ├─ accounts.py # CSV 账号加载
│ ├─ config.py # 环境变量配置
│ └─ session_cache.py # 会话缓存
├─ tests/
├─ requirements.txt
├─ start_hotmail_service.ps1
└─ API_INTEGRATION.md
| 组件 | 职责 |
|---|---|
multiPagePlugins |
UI、流程控制、页面自动化、邮箱来源切换、CPA API 调用 |
hotmail-service |
Hotmail 收码、账号 DB、WebUI、OAuth helper、会话缓存 |
- Google Chrome
- Python 3
- 可用的 CPA 地址与 Key
- 已克隆本仓库
建议准备:
emailpasswordclient_idrefresh_token
如果你只有:
emailpassword
也可以尝试 playwright,但当前更适合作为实验链路。
推荐按下面顺序来:
- 启动
hotmail-service - 加载 Chrome 扩展
- 配置 CPA
- 选择邮箱来源与收码方式
- 先单步验证,再跑自动任务
在仓库根目录执行:
powershell -ExecutionPolicy Bypass -File ".\hotmail-service\start_hotmail_service.ps1"手动方式:
cd .\hotmail-service
pip install -r requirements.txt
python -m playwright install chromium
uvicorn app.main:app --host 127.0.0.1 --port 8001默认地址:
http://127.0.0.1:8001
打开:
http://127.0.0.1:8001/health
扩展侧栏中也会显示 Service 状态:
- 绿色:Online
- 红色:Offline
- 橙色:Checking
- 打开
chrome://extensions/ - 开启开发者模式
- 点击 Load unpacked
- 选择:
./multiPagePlugins
当前侧栏中最关键的配置项有:
CPACPA KeySourceMailHotmail APIServiceOpen WebUICopy Start CmdBatchImport to DBRefresh DB SummaryEmailPasswordAutoStop
先填写:
CPACPA Key
然后点击:
Save
作用:
- Step 1 获取 OAuth URL
- Step 9 上报 callback 并确认最终认证状态
当前支持:
mail_2925hotmailduckduckgocloudflare_temp_emailrelay_firefox
当前支持:
2925cloudflare_temp_emailhotmail163qqinbucket
当 Source = hotmail 时:
Mail会自动绑定为hotmail- 扩展优先从 DB 领取账号
Hotmail API默认使用:
http://127.0.0.1:8001
- 可通过
Open WebUI直接打开账号管理页
Batch 中每行一个账号:
email----password----client_id----refresh_token
导入步骤:
- 粘贴到
Batch - 点击
Import to DB - 点击
Refresh DB Summary - 确认
pending数量正常
第一次建议先验证:
- Step 1
Get OAuth Link - Step 2
Open Signup - Step 3
Fill Email / Password - Step 4
Get Signup Code
点击 Auto 后,扩展会顺序执行 Step 1 ~ 9。
在 Hotmail 模式下,每轮大致流程:
- 领取下一条
pending - 标记为
claimed - 执行主流程
- 成功后写回
success - 失败后写回
failed - 继续下一条账号
Get OAuth LinkOpen SignupFill Email / PasswordGet Signup CodeFill Name / BirthdayLogin via OAuthGet Login CodeOAuth Auto ConfirmCPA Verify
支持 2925、Hotmail、DuckDuckGo、Cloudflare Temp Email、Firefox Relay。
支持批量导入、DB 状态汇总、自动领取账号、自动回写结果。
支持查看、编辑、批量更新、删除和清库。
扩展会持久化保存 CPA 与 Hotmail 基础设置,并在 session 中保存运行状态。
multiPagePlugins/background.js:主流程控制、状态管理、API 调用multiPagePlugins/sidepanel/:侧栏 UI 和交互逻辑multiPagePlugins/shared/:公共逻辑multiPagePlugins/content/:各页面 content scripts
hotmail-service/app/main.py:FastAPI 入口hotmail-service/app/account_db.py:SQLite 账号库hotmail-service/app/outlook_client.py:Playwright 收码逻辑hotmail-service/app/oauth_mail_client.py:Graph / IMAP / OAuth helperhotmail-service/app/models.py:API 模型
调用:
GET /v0/management/codex-auth-url?is_webui=true打开注册页并准备自动化操作。
在 Hotmail 模式下,邮箱优先来自 DB 领取账号。
普通邮箱继续使用原 content script 逻辑;Hotmail 调用 /fetch-code-direct。
自动填充页面信息。
进入 OAuth 登录链路。
再次获取登录验证码,Hotmail 模式同样通过本地服务。
自动处理授权页与本地回调。这一步目前最容易受页面变化影响。
调用:
POST /v0/management/oauth-callback
GET /v0/management/get-auth-status?state=...- 检查 service 健康状态
- 清理 stale
claimed - 领取下一条
pending - 执行主流程
- 写回
success或failed - 继续下一轮
GET /healthPOST /accounts/import
GET /accounts/summary
GET /accounts
GET /accounts/ui
POST /accounts/batch-update
POST /accounts/reset-claimed
POST /accounts/claim-next
POST /accounts/mark
PUT /accounts/{email}
DELETE /accounts/{email}
POST /accounts/batch-delete
POST /accounts/clearPOST /fetch-code
POST /fetch-code-direct
POST /release-sessionGET /oauth/auth-url
POST /oauth/exchange-tokennode --check .\multiPagePlugins\background.js
node --check .\multiPagePlugins\sidepanel\sidepanel.jscd .\hotmail-service
python -m pytest优先检查:
hotmail-service是否运行在127.0.0.1:8001Hotmail API是否填写正确http://127.0.0.1:8001/health是否能打开- Playwright Chromium 是否已安装
先确认导入格式是否正确:
email----password----client_id----refresh_token
说明当前数据库中已经没有可用的 pending。
建议优先检查:
access_method是否合理client_id + refresh_token是否有效- 当前账号质量是否过差
因为它最依赖真实授权页结构、点击定位和 localhost callback。
只有账号密码的 Playwright 收码 当前保留为实验功能。
建议定位为:
- 有一定成功率
- 和账号质量关系很大
- 尚未充分验证稳定性
- 更适合作为继续开发基础
- Step 8 容易受页面变化影响
hotmail-service需要用户自己先启动- Hotmail 模式下数据源以 DB 为准
- Playwright 链路会受风控与页面变化影响