[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-152":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":14,"stars30d":14,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":15,"rankGlobal":9,"rankLanguage":9,"license":16,"archived":17,"fork":17,"defaultBranch":18,"hasWiki":19,"hasPages":17,"topics":20,"createdAt":9,"pushedAt":9,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":14,"starSnapshotCount":14,"syncStatus":24,"lastSyncTime":25,"discoverSource":26},152,"plus_gopay_gptp-plus","432539\u002Fplus_gopay_gptp-plus","432539","plus+gopay开通GPTPLUS会员,已经比较稳定,部分技术支持QQ1114639355",null,"JavaScript",172,122,111,0,6.27,"MIT License",false,"main",true,[],"2026-06-12 02:00:09","# plus-papay\n\n> **ChatGPT Plus 自动化开通工具（PayPal 通道）**  \n> 注册 OpenAI 账号 → 走 0 元 Stripe Checkout → PayPal 支付占位 → 拉取 OAuth 协议 token → 自动入库出货。  \n> 全流程后台管理、CDK 兑换、子进程并发、Playwright Stealth + 反指纹方案。\n\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)](LICENSE)\n![Node](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNode-%3E%3D20-339933?logo=node.js&logoColor=white)\n![MySQL](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FMySQL-8.0%2B-4479A1?logo=mysql&logoColor=white)\n![Playwright](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPlaywright-1.59-2EAD33?logo=playwright&logoColor=white)\n![Status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstatus-experimental-orange)\n\n仓库：\u003Chttps:\u002F\u002Fgithub.com\u002F432539\u002Fplus_gopay_gptp-plus>\n\n---\n\n## 截图\n\n> 后台「任务管理」页面：实时进度、状态徽章、Token 摘要、批量操作。\n\n![后台任务管理](docs\u002Fimages\u002Fadmin-tasks.png)\n\n---\n\n## 这是什么\n\n`plus-papay` 是一个用 **Node.js + Playwright** 写的服务端工具，配合一个 **MySQL** 数据库与一个简单的 Web 后台，把 ChatGPT Plus 的「**注册 → 0 元订单 → PayPal 占位支付 → 拉协议 token**」流程做成了**可批量、可重试、可观测**的成品生产系统。\n\n它的常见用途：\n\n- 给 CDK 自助兑换站做后端供货\n- 跑批量 ChatGPT Plus 协议 token，供 Plus API\u002F中转使用\n- 验证一种「PayPal hosted checkout + 风控对抗」的实战方案\n\n> ⚠️ **仅供学习与研究**：本项目涉及自动化注册、模拟支付、反指纹等技术，使用前请确保符合目标平台 ToS 与所在地法律法规。**作者不对任何滥用导致的封号、扣款、法律纠纷负责。**\n\n---\n\n## 架构\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│                          server.js (Express)                    │\n│  \u002Fapi\u002Fadmin\u002F*    \u002Fapi\u002Fcdk\u002F*    \u002Fapi\u002Fredeem\u002F*    \u002Fapi\u002Fpublic\u002F*   │\n└─────────────────────────────────────────────────────────────────┘\n                │                                       │\n                ▼                                       ▼\n┌──────────────────────────┐            ┌──────────────────────────┐\n│   product_activator.js   │            │    public\u002Fadmin.html     │\n│   • 任务调度 \u002F 重试       │            │    • 后台单页面 (SPA)     │\n│   • 资产池 reserve \u002F lock │            │    • 任务、CDK、资产池    │\n│   • 子进程错误分类        │            │    • 系统配置 \u002F 邮箱管理  │\n└──────────────────────────┘            └──────────────────────────┘\n        │              │\n        ▼              ▼\n┌──────────────┐  ┌──────────────┐\n│ register_*.js│  │   index.js   │\n│ OpenAI 注册   │  │ 0 元 Stripe  │\n│              │  │ + PayPal     │\n└──────────────┘  └──────────────┘\n        │              │\n        └──────┬───────┘\n               ▼\n┌─────────────────────────────────────┐\n│         oauth_login.js              │\n│  支付成功后用 OTP 二次登录拿 RT      │\n└─────────────────────────────────────┘\n               │\n               ▼\n┌─────────────────────────────────────┐\n│  MySQL（资产池 \u002F 任务 \u002F 配置 \u002F 成品） │\n└─────────────────────────────────────┘\n```\n\n每个任务由父进程 `product_activator` 调度，分三段子进程：\n\n1. **`register_openai.js`** —— 注册 OpenAI 账号，拿到 `access_token`\n2. **`index.js`** —— 用该 token 创建 0 元 Plus 订单，跑 Stripe Hosted Checkout，跳到 PayPal 走授权\n3. **`oauth_login.js`** —— 支付成功后用注册邮箱重新登录，取出 `refresh_token`，写回成品库\n\n任意一段失败都会被 `analyzeProcessOutput` 分类（如 `手机号被拒` \u002F `代理超时` \u002F `PayPal风控驳回` \u002F ...），父进程根据分类决定**禁用资产、换号重试、还是终止整批**。\n\n---\n\n## 主要特性\n\n### 1) 资产池 + 状态机\n- 手机号 \u002F 银行卡 \u002F 邮箱、代理 IP 全部入库管理\n- 任务级 `lock` + `release` 防止并发抢同一个号\n- 出错时自动 `is_active=0, status='已报废'`，避免反复重试坏资产\n\n### 2) 反指纹 \u002F 反风控\n- **Stealth Plugin** + 自定义 `addInitScript`：精修 `navigator.webdriver \u002F plugins \u002F userAgentData \u002F canvas \u002F WebGL` 等 30+ 指纹点\n- **同一内核全程一致**：UA 与 `userAgentData.brands` 强制对齐，避免 hCaptcha invisible 检出\n- **支持真 Chrome \u002F Edge channel**：`CHROMIUM_CHANNEL=chrome` 或 `=msedge`\n- **HEADFUL 模式**：`HEADFUL=1` 切到有头便于调试\n- **PayPal 字段 fast 填充**：模拟密码管理器粘贴节奏，反制「键盘事件过长」打分\n\n### 3) 多渠道邮箱\n- **Cloudflare temp_email** 协议（多域名随机选 + 失败黑名单）\n- **Microsoft Outlook IMAP \u002F XOAUTH2** 邮箱池\n- **OpenAI 自有随机域名** 三选一，可在后台动态切换\n\n### 4) 智能重试\n| 错误类型 | 处理 |\n|---|---|\n| `OpenAI 鉴权服务异常` | 换代理 + 同号重试 |\n| `手机号被拒\u002F收不到验证码` | **永久禁用手机号**，换号重试 |\n| `银行卡被拒` | 永久禁用银行卡，换卡重试 |\n| `PayPal\u002FStripe redirect_status=failed` | 换号重试 |\n| `PayPal 仅渲染欢迎页` | 自动 `reload` 2 次，再判定为致命 |\n| `资产池枯竭` | 终止整批，等待补货 |\n\n### 5) 支付成功多重判定\n- URL 跳到 `chatgpt.com` ✓\n- Stripe 标准回调 `redirect_status=succeeded` ✓\n- `redirect_status=failed\u002Fcanceled` → **立即失败**，不傻等 60s\n- `paypal.com\u002Fcheckoutweb\u002FgenericError` → **立即识别为风控**\n\n### 6) 实时运行日志\n- 后台「运行日志」页面环形缓冲，可按 jobKey 过滤\n- 子进程 stdout\u002Fstderr 全程透传 + 关键行进度条解析（如 `[结账] 等待 PayPal...` → 90%）\n\n---\n\n## 快速开始\n\n### 1. 准备环境\n\n| 组件 | 版本 |\n|---|---|\n| **Node.js** | ≥ 20.x（Playwright 1.59 要求） |\n| **MySQL** | ≥ 8.0 |\n| **OS** | Linux \u002F Windows \u002F macOS 均可，Linux 跑 headless 需要 `libgbm1 libnss3 libxkbcommon0` 等（用 `npx playwright install --with-deps` 一键装） |\n\n### 2. 拉代码 & 装依赖\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002F432539\u002Fplus_gopay_gptp-plus.git plus-papay\ncd plus-papay\nnpm install\nnpx playwright install chromium     # Linux 服务器：npx playwright install --with-deps chromium\n```\n\n### 3. 建库 & 配置\n\n```bash\n# 建库\nmysql -uroot -p -e \"CREATE DATABASE plus_papay CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\"\n\n# 复制环境变量模板，按注释填\ncp .env.example .env\n```\n\n`.env` 至少要填：\n```\nDB_PASSWORD=\u003Cyour-mysql-password>\nDB_NAME=plus_papay\nADMIN_PASSWORD=\u003Cyour-admin-password>\nPROXY=http:\u002F\u002Fuser:pass@your-proxy:port    # 强烈建议住宅代理\nSMS_API_KEY=\u003Csms-platform-key>\n```\n\n> 银行卡 \u002F 手机号 \u002F 邮箱建议**通过后台「资产池」入库管理**，而不是写在 `.env` 里。\n\n### 4. 启动\n\n```bash\n# Linux \u002F macOS\nDB_HOST=127.0.0.1 DB_PORT=3306 DB_USER=root DB_PASSWORD=xxx DB_NAME=plus_papay node server.js\n\n# Windows PowerShell（headful 调试）\n$env:HEADFUL='1'; node server.js\n```\n\n启动成功会看到：\n\n```\n🔓 [资产锁] 启动时已重置所有 in_use 标记\n数据库表检查完成\nhttp:\u002F\u002Flocalhost:3000\nMySQL => root@127.0.0.1:3306\u002Fplus_papay\n```\n\n打开 \u003Chttp:\u002F\u002Flocalhost:3000\u002Fadmin> 用 `ADMIN_PASSWORD` 登录即可。\n\n### 5. 第一次跑一单\n\n1. 后台 → **系统配置**：填好 PayPal 邮箱域名、临时邮箱 API、代理\n2. 后台 → **资产池**：导入手机号 \u002F 银行卡 \u002F Outlook 邮箱池\n3. 后台 → **任务管理** → **后台批量** → `count=1, workerCount=1` → 触发\n4. 在「运行日志」页面观察整个流程；成功后会在「成品列表」看到 `🟢 SUCCESS` 一行\n\n---\n\n## 目录结构\n\n```\n.\n├── server.js                # Express 入口、所有 REST API、WebSocket 推送\n├── product_activator.js     # 任务调度核心：fork 子进程 \u002F 错误分类 \u002F 资产管理\n├── register_openai.js       # OpenAI 注册流程（Playwright 子进程）\n├── index.js                 # Stripe + PayPal 支付流程（Playwright 子进程）\n├── oauth_login.js           # 支付后二次登录抓 refresh_token\n├── chatgpt.js               # OpenAI checkout \u002F order API 客户端\n├── inbox-email.js           # cloudflare_temp_email 适配\n├── pool-email-imap.js       # Outlook IMAP \u002F XOAUTH2 邮箱池\n├── imap-auth.js             # 自有 IMAP 服务的鉴权 token 缓存\n├── mysql-store.js           # 全部 MySQL CRUD：资产、配置、成品\n├── runtime-log.js           # 内存环形 buffer + WebSocket 广播\n├── mysql-schema.sql         # 全套表结构（启动时也会自动建表）\n├── public\u002F\n│   ├── admin.html           # 后台单页面 SPA（任务\u002FCDK\u002F资产\u002F配置\u002F邮箱\u002F日志）\n│   ├── admin-login.html\n│   └── index.html           # 用户侧 CDK 兑换页\n├── docs\u002F\n│   └── images\u002F              # README 截图\n├── .env.example\n├── .gitignore\n└── package.json\n```\n\n---\n\n## 后台管理\n\n后台一共五个标签页：\n\n- **任务管理**：手动创建批量任务、看任务流水、Token 摘要、状态徽章、删除\n- **CDK 管理**：批量生成、导入、导出、删除、出货\n- **资产池**：手机号 \u002F 银行卡 \u002F 临时邮箱池、批量导入、状态切换\n- **系统配置**：DB 连接、ADMIN 密码修改、代理列表、邮箱通道、并发上限、超时阈值\n- **运行日志**：实时滚动日志，按 jobKey 过滤，支持手动清空\n\n> 截图见上文「截图」一节。\n\n---\n\n## 接口\n\n完整 REST API 见 [`API_DOC.md`](API_DOC.md)（项目自带）。摘要：\n\n| 用途 | Method + Path | 鉴权 |\n|---|---|---|\n| 用户兑换 CDK | `POST \u002Fapi\u002Fredeem-product` | 无 |\n| 查询 CDK 状态 | `GET  \u002Fapi\u002Fcdk\u002Fquery?cdk=...` | 无 |\n| 后台登录 | `POST \u002Fapi\u002Fadmin\u002Flogin` | 密码 |\n| 后台数据全量 | `GET  \u002Fapi\u002Fadmin\u002Fdata` | Bearer |\n| 创建批量任务 | `POST \u002Fapi\u002Fadmin\u002Fproducts\u002Fgenerate` | Bearer |\n| 终止任务 | `POST \u002Fapi\u002Fadmin\u002Fproducts\u002Fgenerate-stop` | Bearer |\n| 实时日志 | `GET  \u002Fapi\u002Fadmin\u002Fruntime-logs?after=...` | Bearer |\n| 邮箱池 CRUD | `\u002Fapi\u002Fadmin\u002Fpool-emails(\u002F...)` | Bearer |\n| 代理批量测试 | `POST \u002Fapi\u002Fadmin\u002Fproxy\u002Ftest` | Bearer |\n| 配置读写 | `GET\u002FPOST \u002Fapi\u002Fadmin\u002Fconfig` | Bearer |\n\n---\n\n## 常见问题\n\n**Q: PayPal 一直 `redirect_status=failed`？**  \nA: 99% 是代理 IP 评分太低或银行卡 BIN 被 PayPal 标记。建议：①换更干净的住宅代理 ②换不同 BIN 段 ③`workerCount` 降到 1。\n\n**Q: PayPal 创建账户表单只显示购物袋盾牌图（welcome page）？**  \nA: 已内置自动 `reload` 2 次的兜底，仍不出现就视为 PayPal 风控直接放弃，让父进程换号。\n\n**Q: 短信平台一直返回 `no|暂无验证码`？**  \nA: 已内置「连续 12 次（约 60s）无验证码」→ 抛错 `手机号短信验证异常`，自动**永久禁用该号**并换号。\n\n**Q: 怎么看任务到底卡哪了？**  \nA: 后台「运行日志」按 jobKey 过滤；每个子进程的 stdout 都有时间戳前缀，可以精确到秒定位。\n\n**Q: 程序为什么不重启就能改 `index.js \u002F register_openai.js`？**  \nA: 这两个是子进程文件，每次任务 `fork` 时重新加载；只有 `server.js \u002F product_activator.js \u002F mysql-store.js` 改动需要重启 server。\n\n---\n\n## 路线图 \u002F 不在范围\n\n`plus-papay` 只解决 **PayPal 通道**。如果你需要 **GoPay \u002F 信用卡直付** 的版本，作者在另一个仓库里维护：\n\n- **plus-gopay**（同作者）：Python + Playwright + 自家 hCaptcha solver，通过 GoPay\u002F信用卡直付走 Stripe，机制完全独立。\n\n两个项目的资产池 schema、错误分类逻辑设计相似，但**不要共用进程跑**，PayPal 与信用卡两条链路对指纹一致性要求不同。\n\n---\n\n## 安全披露\n\n如果你发现可被恶意利用的漏洞（例如能绕过后台鉴权、读取他人 token），请 **不要直接开 issue**，而是发邮件到仓库 owner 的 GitHub 邮箱。  \n请给作者 7 天的修复窗口。\n\n---\n\n## 许可\n\n[MIT License](LICENSE) © 2026 plus-papay contributors\n\n---\n\n## 免责声明\n\n本项目所有代码以 **「AS IS」** 形式发布，作者**不对以下情形负责**：\n\n- 因使用本项目导致的 OpenAI 账号封禁、PayPal 账户冻结、银行卡风控\n- 因使用本项目违反目标平台 ToS、SaaS 服务条款、所在地法律法规所引起的任何后果\n- 因使用本项目导致的资金损失、数据泄露、第三方权益受损\n\n**使用即表示你已阅读、理解并接受以上条款。**\n\n---\n\n## 赞赏 \u002F Sponsor\n\n如果这个项目对你有帮助，欢迎请作者喝杯咖啡 ☕\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fimages\u002Fsponsor.png\" alt=\"赞赏码\" width=\"240\" \u002F>\n\u003C\u002Fp>\n\n> 把你的赞赏码图片保存到 `docs\u002Fimages\u002Fsponsor.png` 即可显示。\n","plus-papay 是一个用于自动化开通 ChatGPT Plus 会员的服务端工具，通过 PayPal 通道实现从注册到支付的全流程自动化。该项目基于 Node.js 和 Playwright 技术栈开发，并使用 MySQL 数据库进行数据管理，支持任务调度、子进程并发处理以及反指纹技术以规避风控。它适用于需要批量生成 ChatGPT Plus 协议 token 的场景，比如为自助兑换站提供后端支持或验证特定支付流程下的风控策略。请注意，此项目仅供学习与研究用途，在使用前需确保遵守相关服务条款及法律法规。",2,"2026-05-06 17:19:00","CREATED_QUERY"]