Skip to content

Releases: poxiao33/toSub2

toSub2 v1.7.1

Choose a tag to compare

@poxiao33 poxiao33 released this 27 Aug 12:07

更新内容

  • 修复密码含点号时,批量导入可能把密码拼入邮箱的问题。
  • 修复 Cloudflare 校验错误复用其他域名或过期 cf_clearance 的问题。
  • 修复重新登录、重新授权等新任务无法重新使用 TLS 指纹兜底的问题。

toSub2 v1.7.0

Choose a tag to compare

@poxiao33 poxiao33 released this 26 Aug 06:32

更新内容

  • 新增 Cloudflare 安全校验处理,并完善代理会话与 TLS 指纹兜底。
  • Sentinel 安全令牌改为动态生成,覆盖登录、验证和账号资料流程。
  • 邮件接码新增自定义 GET/POST 请求、统一请求头及账号独立请求体。
  • 优化最新邮件验证码筛选、任务恢复、配置持久化和相关错误处理。

toSub2 v1.6.2

Choose a tag to compare

@poxiao33 poxiao33 released this 20 Aug 01:47

更新内容

  • Sub2API 上传新增 Codex 指纹收敛配置,并支持号池巡检自动更新。
  • 修复密码和登录 2FA 验证缺少 Sentinel(安全校验令牌)的问题。
  • 修复手机号授权步骤失效后仍持续获取新号码的问题。

toSub2 v1.6.1

Choose a tag to compare

@poxiao33 poxiao33 released this 17 Aug 15:50

修复

  • 自定义手机接码支持从嵌套 JSON(结构化数据)的中文文本中提取严格 6 位验证码。
  • 按短信时间字段区分新旧验证码;数字相同但时间不同的短信也会自动提交。

toSub2 v1.6.0

Choose a tag to compare

@poxiao33 poxiao33 released this 17 Aug 05:26

更新内容

  • 新增单个和批量添加密码,ChatGPT 登录完成后即可操作,无需先完成手机号绑定或 Codex 授权。
  • 设置 2FA 同样支持未完成授权的账号,完成后可继续原授权流程,并增强服务重启恢复。
  • 批量导入支持智能识别邮箱、密码、邮件 API 和 2FA 密钥,兼容更多分隔符与字段顺序。
  • 新增最近操作时间和平台官网快捷入口,并修复多项任务状态与断点处理问题。

toSub2 v1.5.3

Choose a tag to compare

@poxiao33 poxiao33 released this 12 Aug 17:31

本版本主要优化协议请求环境的一致性和多任务运行效率:

  • 无代理账号共享 TLS 指纹探测,并将探测并发限制为 4。
  • User-Agent、Client Hints、OAuth 请求头与 Sentinel 环境统一跟随实际指纹。
  • 修复指纹降级结果同步、安全校验跳转识别及刷新令牌回退登录流程。
  • 补充相关自动化测试。

toSub2 v1.5.2

Choose a tag to compare

@poxiao33 poxiao33 released this 12 Aug 12:08

更新内容

  • 本机直连改为自动探测可用的桌面 Chrome 指纹,不再固定使用单一版本。
  • 指纹按版本分批探测,每批最多并发 4 个请求,并优先选择较新的可用结果。
  • 登录、账号资料和 OAuth 请求会同步使用探测到的浏览器版本标识。
  • 配置代理或显式指定指纹时继续沿用原有逻辑。

toSub2 v1.5.1

Choose a tag to compare

@poxiao33 poxiao33 released this 11 Aug 15:02

更新内容

  • 无代理直连默认改用 chrome142,配置代理时继续使用 chrome146
  • 修复代理请求超时或 TLS 连接失败后未自动更换会话的问题。
  • 修复手机号业务错误可能被旧登录失效日志误判的问题。

toSub2 v1.5.0

Choose a tag to compare

@poxiao33 poxiao33 released this 10 Aug 06:18

主要更新

  • 新增 Sub2API 号池监控:每 5 分钟检查异常账号,符合自动化条件的任务可自动重新登录、授权并更新远端账号。
  • 支持按号池巡检、手动立即检查、5 分钟失败冷却和永久不可用账号跳过。
  • 修复 Sub2API 更新中断后丢失任务的问题;下次巡检会继续上传,不会重复登录。
  • 优化代理风控:同一出口先重试 3 次,仍失败才轮换代理,并区分真实安全校验与普通 400/409 业务错误。
  • 增加 TLS 指纹自动降级,兼容不支持 chrome146curl_cffi 环境。
  • 手动输错邮箱验证码后可以继续重试;邮箱收码 API 单次请求超时调整为 60 秒。
  • 修复同一邮箱并发操作可能启动多个登录进程的问题。
  • Sub2API 上传账号默认启用调度,服务关闭时会安全停止巡检并保存任务。
  • 新增 PM2(Node.js 进程管理器)守护配置和管理命令。

升级说明

  • 可从 v1.4.0 直接升级,历史任务和授权文件不需要迁移。
  • 号池监控默认关闭,需要在 Sub2API 配置中手动启用。
  • PM2 为可选组件,仅在需要异常退出自动重启时安装。

验证

  • 完整自动测试通过。
  • 前端生产构建通过。
  • 生产依赖审计:0 个已知漏洞。

完整源码对比:v1.4.0...v1.5.0

toSub2 v1.4.0

Choose a tag to compare

@poxiao33 poxiao33 released this 09 Aug 18:49

版本概览

本版本基于 v1.3.1...v1.4.0 的源码差异整理,共改动 20 个文件,新增约 2090 行代码。主要更新包括账号 TOTP 2FA(基于时间的一次性密码)设置、强制重新登录授权、组织工作区优先选择、代理风控分层重试、任务与凭据恢复,以及一批登录流程判断修复。

新增:设置账号 2FA

  • 已完成授权的账号可以单个或批量设置 TOTP 2FA(基于时间的一次性密码)。
  • 程序会获取账号当前的 Access Token(访问令牌),检查 2FA 状态,创建 TOTP 密钥并自动生成当前 6 位验证码完成激活。
  • 自动验证码被服务端拒绝时,才会提示用户手动输入验证码。
  • 已经启用 2FA,或本地已经保存 2FA 密钥的账号,会自动跳过,防止重复设置。
  • 批量设置会显示实际启动数量和自动跳过数量。
  • 设置成功后立即更新账号资料,后续登录可以直接使用新密钥完成 2FA 验证。
  • 2FA 密钥不会写入协议日志;前端仅在需要手动激活时显示密钥,并提供复制按钮。
  • 激活接口已经成功,但后续状态确认接口失败时,不再把整个操作误判为失败,已经生成的密钥会继续保存。
  • 保存凭据失败、进程中断或服务重启时,会保留私有结果文件,避免已经激活的密钥丢失。

新增:重新登录并授权

  • 原“重新生成”统一改名为“重新授权”,其行为仍是优先使用 Refresh Token(刷新令牌),刷新令牌失效后再回退到完整登录。
  • 新增“重新登录并授权”:跳过刷新令牌,删除旧登录检查点,强制重新登录并自动完成 Codex 授权。
  • 支持单个和批量重新登录并授权;进行中的账号会自动跳过。
  • 重新登录前会尝试从系统凭据存储恢复密码、2FA 密钥和账号代理。
  • 当刷新令牌已失效,但用户希望确认账号当前登录状态时,不再需要手动删除历史文件。

登录与授权流程修复

  • 只有真正进入 /email-verification 页面时才启动邮箱验证码流程,避免安全校验页、设备确认页等未知页面被误判为已经发送验证码。
  • 只有进入 /log-in/password 页面时才要求输入密码;无法识别的页面会返回明确的 UNEXPECTED_LOGIN_PAGE 错误。
  • 邮箱验证码“重新发送”改为空 JSON 请求,修复错误使用表单 Content-Type(内容类型)导致的 HTTP 400。
  • 已有有效 ChatGPT Session(会话)时可以直接复用,不必重复获取邮箱验证码。
  • 普通 JSON 403、账号停用等响应会显示服务端真实 message,不再统一显示成代理或浏览器安全校验错误。
  • 手机号绑定阶段的 invalid_state 安全校验仍会保留为可手动重试状态,不会被错误当成代理风控。
  • 有多个工作区时优先选择组织工作区,而不是个人工作区。
  • 账号没有工作区选择步骤时自动跳过,继续完成 OAuth(授权登录),不再因找不到工作区而失败。

代理风控与重试

  • 可轮换代理遇到 HTTP 风控时,每轮只检测一个全新的代理会话,最多使用 10 个有响应的会话。
  • TLS、超时和连接中断等纯连接失败不占上述 10 次 HTTP 风控额度;连接失败单独最多重试 20 次,并逐步增加等待时间。
  • 登录、2FA 验证、手机号绑定、工作区选择和 OAuth(授权登录)任一阶段出现明确的 HTML 安全校验页时,控制台都会结束旧协议进程、生成新代理会话并重新开始当前流程。
  • 没有可识别会话编号的固定代理只检测一次,不再无意义地重复请求 10 次。
  • 同时支持用户名中的 sid-... 会话编号,以及密码中的 Kookeey 数字会话编号轮换。
  • 代理日志使用短哈希区分不同会话,不再输出真实会话编号。
  • 只有 HTML 安全校验页或 cf-mitigated 响应才算代理风控;普通 JSON 403、账号停用和手机号安全校验不会触发代理轮换。

任务恢复与文件可靠性

  • 任务元数据新增保存提示文字、最后错误、结果文件状态、完成时间、尝试次数、安全校验状态、代理重试次数和 2FA 状态。
  • 服务重启后会保留失败、取消、需要重新授权等真实状态,不再因为目录中存在旧授权文件就全部显示为“已完成”。
  • 即使账号最近一次操作失败或取消,只要旧授权文件仍然存在,就仍可单个下载、批量下载或上传到 sub2api。
  • 没有授权文件、也没有登录检查点的中断任务仍会恢复到任务列表,并标记为可重试的失败任务,不再直接消失。
  • 登录检查点仍然有效时恢复为可继续状态;只有原本处于排队状态的任务才会在重启后自动重新排队。
  • 完整授权文件、刷新授权文件和 Session(会话)文件改为原子写入:先写临时文件、重新解析确认 JSON 有效,再替换正式文件。
  • 服务收到 SIGTERM(终止信号)时,会等待进行中的任务取消、子进程退出和元数据写盘后再关闭,降低历史任务丢失或状态回退的概率。
  • 修复协议子进程异步收尾异常可能导致整个控制台进程退出的问题。

macOS 凭据存储升级

  • macOS Keychain(钥匙串)不再直接保存完整的密码、2FA 密钥和代理 JSON。
  • 登录资料改用 AES-256-GCM(高级加密标准)加密保存到 ~/Library/Application Support/toSub2/credentials/
  • Keychain(钥匙串)中只保存随机生成的 32 字节加密密钥,避免长字段被系统命令截断。
  • 完整密码和 2FA 密钥不再通过 security 命令行参数传递。
  • 兼容读取旧版 Keychain(钥匙串)JSON,并会尽可能恢复旧版本中被 128 字节截断、但前部仍完整的密码或 2FA 字段。
  • 删除账号时会同时删除对应的钥匙串条目和本地加密凭据文件。

导入与控制台界面

  • 新增 邮箱--------2FA密钥 导入格式,适合没有密码、登录时手动填写邮箱验证码的 2FA 账号。
  • 重复批量导入只有邮箱的记录时,会保留该邮箱已有的密码、邮箱收码 API(接口)和 2FA 密钥,不再把原资料清空。
  • 新增单个和批量“设置 2FA”按钮。
  • 新增单个和批量“重新登录并授权”按钮。
  • 状态列新增 2FA 准备、激活状态和具体错误提示。
  • 操作列扩大,按钮禁止压缩和换行,修复按钮文字挤压、溢出和错位。
  • 表格最小宽度调整为 1600px,使新增操作在桌面端保持可读。

测试与验证

本版本新增或扩展了以下自动测试:

  • 2FA 自动创建、自动验证码激活、重复设置跳过,以及激活成功后确认接口异常的恢复。
  • 单个和批量设置 2FA、重新登录并授权。
  • 多工作区时组织优先、无工作区时继续授权。
  • 邮箱验证码重新发送使用 JSON、未知登录页面识别、账号停用信息提取。
  • HTML 403 风控与普通 JSON 403 的区分,以及手机号安全校验不触发代理轮换。
  • 代理 HTTP 风控 10 次上限、连接失败独立 20 次上限和每轮新会话检测。
  • 重复邮箱导入保留原凭据。
  • 失败、取消、旧授权文件、无检查点中断任务的重启恢复。
  • 服务收到 SIGTERM(终止信号)后的任务元数据写盘。
  • macOS 加密凭据保存、旧版钥匙串兼容和截断字段恢复。

发布前验证结果:

  • npm run check:通过。
  • Vite(前端构建工具)生产构建:通过。
  • npm audit --omit=dev:0 个已知漏洞。

升级说明

  • v1.3.1 直接升级即可,不需要手动迁移历史任务。
  • macOS 旧凭据仍可直接读取;账号资料下一次保存时会写入新的加密文件格式,请保留系统 Keychain(钥匙串)访问权限。
  • 设置 2FA 前请确认账号已有可下载的授权结果;批量操作会自动过滤不符合条件的账号。

完整源码对比:v1.3.1...v1.4.0