Skip to content

Repository files navigation

gpt_nerver

一个用于批量维护 / 开通 ChatGPT Plus 的本地 PyQt6 桌面工具。核心能力:

  • 注册引擎:协议 / UI 双模式建号(vendor/register-protocol),支持 iCloud/Outlook/xpgmail/CF-Worker 邮箱源、密码 + TOTP + Passkey MFA、手机号注册。
  • 登录态维护:session cookie 刷 AT、AT 吊销自动密码 + TOTP 重登、代理体检 + SID 轮换。
  • 卡池 & 开通:Duola 虚拟卡自动开卡 / 补卡;PH-Link 提链 + Stripe 绑卡 + checkout/confirm 全链路开 Plus。
  • CDK 兑换:外部充值站(chong.nerver.cc 同协议)批量兑换,多渠道 CDK 池管理。
  • 附加变现链路:GCash 订阅 / PayPal 批量取链 / 手机号绑定 + Codex PKCE 生成 CPA。

⚠️ 本仓库仅用于学习与合规测试。使用者须自行确保遵守 OpenAI、Stripe、各代理服务商、 各地区法律法规的相关条款。作者不对任何滥用行为负责,不承诺代码稳定性或结果可用性。


目录


快速开始

环境要求

  • Python 3.10+(推荐 3.11 / 3.12;已在 3.14 上过 smoke)
  • Windows / macOS 均可;部分远端浏览器功能依赖 AdsPower 本地 API
  • 首次运行会自动下载并解压 Chromium(Playwright)

安装

git clone https://github.com/<你的用户名>/gpt_nerver.git
cd gpt_nerver
python -m pip install -r requirements.txt
python -m playwright install chromium

首次启动

python -m src.main

首次启动会:

  1. 复制 config.example.jsonconfig.json(本地文件,不进 git)
  2. 在仓库根目录建 gpt_nerver.db(SQLite,全部账号 / 卡 / CDK / 手机号池数据存这里)
  3. logs/data/output/ 三个目录
  4. 弹出 GUI(10 个 Tab)

能跑什么 / 不能跑什么

诚实矩阵。别人 clone 后立刻能用的、需要自己配一层的、必须联接外部 SaaS 才能跑的,分三档:

✅ 开箱即用(零外部服务)

场景 说明
GUI 启动 python -m src.main
手动导入 session-token / 邮箱-密码-TOTP-session-AT 多段格式 「账户列表」→ 粘贴导入
「完善 SESSION」刷新 → 输出完整 JSON 只依赖 chatgpt.com/api/auth/session?refresh=true
「查订阅」批量查 plan 只依赖 chatgpt.com API
SQLite 账户 / 卡 / CDK / 手机号池管理、CSV 导入导出 纯本地
单元测试 python tests/test_cdk_pool_and_geo.py / python tests/test_relogin_proxy_rotate.py

🔧 需要自己配一层(免费 / 自建)

依赖 用在哪 起步成本
住宅或数据中心代理 没代理 CF 直接 403 任意 socks5/http 都行,config.json.proxies 或"代理"Tab 粘一行
AdsPower(远端浏览器) UI 建号模式;协议模式不需要 免费版够用,默认 http://127.0.0.1:50325
CF Email Worker 邮箱域 「随机邮箱」注册模式收 OTP 自建 CF Worker,改 config.mail.email_domain,见 docs/SETUP.md
hCaptcha 求解器(可选) 注册风控高时 nonecap / yescaptcha 之类,付费

💰 必须联外部 SaaS 才能跑(硬依赖)

服务 用在哪 没有 key 会怎样
cha.nerver.cc API PH-Link 提链、优惠预检、PayPal 取链、GCash、订阅查询、UPI/PIX/iDEAL/Kakao 出码 直接失败,需 config.cha.api_key
chong.nerver.cc API CDK 兑换充值 走不通 CDK 开通模式
Duola 虚拟卡商 自动开卡 / 补卡 只能手动导入卡池
HeroSMS / SMSBower 手机号注册 + 手机号绑定 CPA 走不到这条路,转为纯 email 注册
IPWEB / IPRoyal 住宅代理 高抗封成功率 可换任意代理,但成功率显著下降
iCloud 邮箱池后台 icloud_mail_provider.py 客户端连的后台服务 只能改用 outlook / imap 模式手动导入

注意cha.nerver.cc / chong.nerver.cc 是本仓库作者维护的 SaaS 服务,需自行联系拿 key 或 按其公开 API 协议(docs/*.md 有部分描述)自建同协议后端。


目录结构

gpt_nerver/
├── src/
│   ├── main.py                 # 启动入口: python -m src.main
│   ├── ui/                     # PyQt6 桌面 UI
│   │   ├── main_window.py      # 10 个 Tab 挂载
│   │   ├── tabs/               # 每个 Tab 的实现
│   │   │   ├── sessions_tab.py       # 账户列表主 Tab(含右键批量动作)
│   │   │   ├── sessions/             # 从 sessions_tab.py 拆出的子模块
│   │   │   │   ├── workers.py        #   完善SESSION / 查订阅 / GCash 硬查 workers
│   │   │   │   ├── actions.py        #   右键批量操作 Mixin
│   │   │   │   ├── dialogs.py        #   详情 / 粘贴导入 / 出库对话框
│   │   │   │   └── ...
│   │   │   ├── emails_tab.py
│   │   │   ├── cards_tab.py
│   │   │   ├── cdk_tab.py
│   │   │   ├── phone_pool_tab.py
│   │   │   ├── proxy_tab.py
│   │   │   ├── billing_tab.py
│   │   │   ├── ads_tab.py
│   │   │   ├── run_tab.py
│   │   │   └── log_tab.py
│   │   └── *_dialog.py         # PayPal 批量 / 手机号绑定 / GCash 订阅 / QR 出码
│   ├── modules/                # 业务模块(一个模块 = 一条业务链路)
│   │   ├── register_account.py       # 注册主流程
│   │   ├── register_rpc.py           # 调 vendor/register-protocol RPC
│   │   ├── ads_ui_signup*.py         # AdsPower UI 建号
│   │   ├── open_plus.py              # 卡池开通 Plus
│   │   ├── refresh_at.py             # AT 刷新 / SID 轮换
│   │   ├── discount_eligibility.py   # 开通前优惠预检
│   │   ├── duola_cards.py            # Duola 卡商 SDK
│   │   ├── external_open.py          # CDK 开通(chong SaaS)
│   │   ├── external_redeem.py        # CDK 兑换(chong SaaS)
│   │   ├── paypal_links.py           # PayPal 批量取链
│   │   ├── gcash_*.py                # GCash 资格 / 订阅
│   │   ├── phone_bind.py             # 手机号绑定 + CPA
│   │   ├── cpa_pack.py               # CPA JSON 打包
│   │   └── cha_qr_test.py            # QR 出码测试
│   ├── workflow/               # 编排层
│   │   ├── account_workflow.py       # 单账户完整链路
│   │   ├── pool_runner.py            # 单池调度(注册 or 开通)
│   │   ├── dual_pool_runner.py       # 双池并发(注册补水位 + 开通消费)
│   │   ├── batch_runner.py           # 通用批量执行器
│   │   └── batch_opener.py           # 批量开通
│   └── shared/                 # 通用层
│       ├── db.py                     # SQLite 单写线程池
│       ├── config.py                 # config.json 读写
│       ├── logger.py                 # 双输出:文件 + Qt signal → UI
│       ├── ipweb_proxy.py            # IPWEB / IPRoyal 代理池
│       ├── ipweb_geo_data/           # 9 国州/市地理数据(IPWEB 格式,公开)
│       ├── card_pool.py              # 卡池抽卡 / 归还 / 补卡
│       ├── cdk_pool.py               # CDK 池(多渠道隔离)
│       ├── email_pool.py             # 邮箱池
│       ├── phone_pool.py             # 手机号池
│       ├── account_status.py         # 账户状态机
│       └── ...
├── vendor/
│   └── register-protocol/      # 自包含注册引擎(stdin/stdout JSON-RPC)
│       ├── rpc_server.py             # 主进程入口
│       ├── auth_flow.py              # OAuth 状态机
│       ├── password_setup.py         # 设密链路
│       ├── enable_totp_mfa.py        # TOTP 开启
│       ├── enable_passkey_mfa.py     # Passkey 开启
│       ├── relogin_with_password.py  # 密码 + TOTP 重登
│       ├── relogin_with_passkey.py   # 密码 + Passkey 重登
│       ├── phone_auth_flow.py        # 手机号注册
│       ├── sentinel_browser.py       # Playwright Sentinel token 采集
│       ├── icloud_mail_provider.py   # iCloud 邮箱池后台客户端
│       ├── outlook_provider.py       # Outlook Graph API
│       ├── imap_outlook_provider.py  # Outlook IMAP+OAuth
│       ├── xpg_mail_provider.py      # XPGMail 面板
│       ├── mail_provider.py          # CF Worker 邮箱
│       ├── smsbower_mail_provider.py # SMSBower 内建邮箱
│       ├── sms_provider.py           # HeroSMS 接码
│       ├── passkey_virtual_authenticator.py  # 本地 WebAuthn
│       └── ...
├── docs/
│   ├── ARCHITECTURE.md         # 架构与数据流
│   ├── SETUP.md                # 外部服务接入指南
│   ├── refresh-at.md           # session 刷新协议详解
│   ├── import-format.md        # 账号导入格式
│   ├── paypal-links.md         # PayPal 取链接口
│   ├── gcash-*.md              # GCash 相关
│   ├── phone-bind-cpa.md       # 手机号绑定 + CPA 生成
│   └── superpowers/            # 迭代过程中的规格文档
│       ├── plans/
│       └── specs/
├── scripts/
│   ├── extract_ipweb_geo.py    # 从 IPWEB xlsx 抽州市数据
│   └── fill_geo_zh_names.py    # 补中文城市名
├── tests/
│   ├── test_cdk_pool_and_geo.py
│   └── test_relogin_proxy_rotate.py
├── ph_plus_auto.py             # PH-Link 提链 + Stripe 绑卡 + checkout 全链路
├── ads_launcher.py             # AdsPower 远端浏览器管理
├── config.example.json         # 配置模板(首次启动自动复制为 config.json)
├── requirements.txt
├── LICENSE                     # MIT
├── SECURITY.md                 # 安全 / 隐私说明
└── README.md

十个 Tab 一览

Tab 主要能力
账户列表 导入 / 查看 / 筛选 / 批量右键(查订阅、GCash 硬查、PayPal 批量取链、手机号绑定 + CPA、复制完善 SESSION、出库 CSV、标记作废)
邮箱池 邮箱源管理(iCloud / Outlook / xpgmail / CF Worker)
卡池 抽卡 / 归还 / 补卡(Duola)/ 手动导入 / 卡状态
CDK 多渠道(upi / kakao / pix / gcash / ideal / paypal)CDK 池,导入 / 分配 / 状态跟踪
手机号池 E.164 手机号 + poll_url 批量导入,每号最多绑 3 号,供 CPA 生成用
代理 IPWEB / IPRoyal / 自定义 socks5 / http 代理列表,出口国切换
账单 各 SaaS 服务的 api_key / base_url 配置(cha / chong / duola / captcha)
ADS AdsPower 远端浏览器配置、profile 池管理
运行 双池并发调度:注册补水位 + 开通消费;单池单流程;停止/进度/统计
日志 分级 / 分账户 / 分线程 / 人话化的实时日志(Qt signal 转发)

外部服务接入

详见 docs/SETUP.md。这里只给结论:

  • 注册模式runtime.register_mode):remote-ui = AdsPower UI 建号;protocol = 走 vendor/register-protocol 协议链路(更快但风控更容易命中)。
  • 邮箱源mail.email_source):random(CF Worker) / outlook / xpgmail / icloud。四选一,icloud 需自建后台。
  • 开通模式runtime.open_mode):bind = 卡池 PH-Link 绑卡;cdk = CDK 兑换充值(需 chong SaaS)。
  • 代理ipweb / proxies / iproyal):至少配一样,ipweb.mode=http_sid 是最常用的动态住宅方案。
  • 风控:注册量大时打开 captcha.enabled=true 接 hCaptcha 求解器。

常见工作流

A. 单纯"完善 SESSION"(0 外部依赖)

  1. 启动 GUI
  2. 账户列表 → 粘贴导入:session-token 一行一个 / 或 email----password----totp----session----AT
  3. 右键 → 复制完善 SESSION → 剪贴板得到 chatgpt.com 官网同款 JSON

B. 批量查订阅

  1. 账户列表选中若干行
  2. 右键 → 查询订阅 → 列表显示 plan / plus_verified
  3. 支持 AT 失效自动密码 + TOTP 重登(前提是账号有 password + totp_secret)

C. 批量开通 Plus(需卡池 + PH-Link + 代理)

  1. 代理 Tab 配一条能过 CF 的代理
  2. 卡池 Tab 导入卡或配 Duola 自动开卡
  3. 账单 Tab 填 cha.api_key
  4. 账户列表选择状态 = REGISTERED / AT_OK 的账号
  5. 运行 Tab → 单池 open 模式 → 启动

D. CDK 兑换开通

  1. CDK Tab 导入 UPI / KakaoPay / 等 CDK 码
  2. 账单 Tab 填 chong.api_key
  3. runtime.open_mode = cdk,选好 cdk_channel
  4. 运行 Tab 启动

E. 手机号绑定 + 生成 CPA(Codex refresh_token)

docs/phone-bind-cpa.md


开发与测试

# 单元测试
python tests/test_cdk_pool_and_geo.py
python tests/test_relogin_proxy_rotate.py

# Headless UI smoke(不弹窗,验证组件能实例化)
python -c "from PyQt6.QtWidgets import QApplication; import sys; app=QApplication(sys.argv); from src.ui.main_window import MainWindow; MainWindow()"

编码风格约定

  • 新增业务模块 → src/modules/<name>.py,暴露一个纯函数入口(不要 QThread,UI 层再包)
  • 长时任务 → src/ui/tabs/sessions/workers.py 里加 QThread 子类,或用 src/workflow/batch_runner.py
  • DB 写 → 一律走 DBWriter.get().submit(sql, params)(单写线程避免锁竞争)
  • 日志 → logging.getLogger(__name__),用 LogCtx.bind(email); LogCtx.stage("register") 打上下文

调试脚本命名约定:以 _tmp_ / _test_ / _bind_ / _last_ 开头,.gitignore 会兜住不进 git。


进一步阅读

文档 内容
docs/ARCHITECTURE.md 五模块架构(注册 / 完善 / 开通 / 外部 / 变现),数据流、状态机、线程模型
docs/SETUP.md 外部服务接入清单、CF Email Worker 部署样例、Duola / cha / chong 配置示范
docs/refresh-at.md Session 刷新协议详解(对齐 cha 线上抓包)
docs/import-format.md 账号 3 种导入格式
docs/paypal-links.md PayPal 批量取链 API
docs/gcash-eligibility-check.md, docs/gcash-pay.md GCash 资格硬查 + 订阅创建
docs/phone-bind-cpa.md 手机号绑定 + Codex PKCE 生成 CPA
docs/superpowers/ 迭代过程中的 spec / plan(历史设计文档,未删)
SECURITY.md 提交前敏感串检查清单

免责声明

本项目按 MIT 协议开源,仅供技术研究

  • 仓库不附带任何真实账号、卡号、代理凭证、API Key、TOTP secret、Recovery code、cookie、 session token。示例配置全部是占位符,测试用例都是 mock。
  • 使用本代码接触真实 OpenAI 账号 / 真实支付流程 / 真实代理服务,产生的账号封停、支付纠纷、 法律风险,全部由使用者自行承担。
  • 作者 不对代码可用性、正确性、稳定性作任何保证。协议 / API / 风控随时可能被服务方 调整,历史 commit 里的抓包结论在你 clone 那一刻可能就已经过时。

About

ChatGPT Plus automation toolkit: PyQt6 desktop + JSON-RPC registration engine + card/CDK/PayPal/GCash flows

Resources

Contributing

Security policy

Stars

835 stars

Watchers

78 watching

Forks

Releases

Packages

Contributors

Languages