{"repo":"poxiao33/toSub2","free":true,"listed":false,"github":"https://github.com/poxiao33/toSub2","clone":"git clone https://github.com/poxiao33/toSub2.git","description":"通过协议登录 ChatGPT、完成 Codex 授权并生成 sub2api 导入文件","language":"JavaScript","stars":73,"topics":["chatgpt","codex","nodejs","oauth","sub2api"],"license":"MIT","category":"auth-billing-email","readme_excerpt":"toSub2 QQ 交流群： 1085165735 点击链接加入群聊【toSub2】 toSub2 是一个本地网页工具，通过协议请求完成 ChatGPT 登录和 Codex OAuth（授权登录），自动判断账号是否需要绑定手机号，并生成可供 sub2api 导入的 JSON（结构化数据）文件。 本项目不是 OpenAI 官方项目。上游登录接口随时可能变化。 工作流程 1. 通过邮箱验证码或密码登录 ChatGPT。 2. 账号启用 2FA（双重身份验证）时，自动生成并提交 TOTP（基于时间的一次性密码）。 3. 发起 Codex OAuth（授权登录）。 4. 根据服务端响应判断账号是否已经绑定手机号。 5. 未绑定手机号时进入短信验证，支持手动号码、LubanSMS（鲁班接码）、SMSBower（短信接码平台）或自定义接码 API（接口）。 6. 选择 workspace（工作区），兑换 OAuth Token（授权令牌）。 7. 生成标准 sub2api-data 导入文件。 主要功能 - 本地网页控制台，可同时管理多条登录任务。 - 最多同时运行 20 条任务，超出后自动排队。 - 支持手动邮箱验证码、邮箱收码 API（接口）自动取码。 - 支持密码登录，以及密码或邮箱验证码登录后的 2FA（双重身份验证）。 - 已完成 ChatGPT 登录的账号可以单个或批量创建新的 TOTP 2FA（基于时间的一次性密码），不要求先完成手机号绑定或 Codex 授权；程序会自动生成并提交激活验证码，密钥不会写入协议日志，设置完成后可继续原授权流程。 - 无密码账号可以单个或批量添加随机强密码，已有密码的账号会自动跳过；支持邮箱 API 自动收码或手动输入验证码，成功后会更新本地账号原始信息。账号只要已保存邮箱登录检查点即可添加密码，不要求先完成手机号绑定或 Codex 授权；添加后可继续原授权流程。 - 自动跳过已经完成手机号绑定的账号。 - 未绑定账号支持手动手机号、手动短信验证码，以及 LubanSMS、SMSBower、自定义号码池自动取号收码。 - 邮箱登录成功后立即保存 checkpoint（检查点），中断后可继续手机号流程。 - 支持单个和批量重新授权；“重新授权”优先使用已有 Refresh Token（刷新令牌），“重新登录并授权”会跳过刷新令牌和旧检查点，强制重新完成登录与授权。 - 支持分页、精确筛选、跨页多选、批量删除、停止全部、批量重新授权和批量下载。 - 可每 5 分钟巡检 Sub2API 异常账号，对上次全自动登录的任务自动重新登录并更新远端授权。 - 最终输出 sub2api 导入格式，下载文件名自动附带时间戳。 环境要求 - Node.js 20 或更高版本，建议使用 Node.js 22。 - Python 3.9 或更高版本；默认协议登录流程需要安装 curl cffi （浏览器 TLS 指纹请求库），即使不使用代理也需要。 - macOS 使用 Keychain（钥匙串）持久保存密码、2FA 密钥和账号代理。 - Windows 使用当前用户的 DPAPI（数据保护接口）加密保存上述数据，密文位于 %LOCALAPPDATA%\\toSub2\\credentials ，只能由同一个 Windows 用户解密。 - Linux 仍可使用邮箱验证码流程，但目前不持久保存密码、2FA 密钥和账号代理；服务重启后不会让原本配置代理的排队任务悄悄改用本机网络。 安装与启动 默认访问地址： 指定其他端口： 允许局域网设备访问：","default_branch":null,"files":null,"tree":[],"storefront":"/r/poxiao33","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/poxiao33/toSub2/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}