Skip to content
 
 

Repository files navigation

ChatGPT Session to CPA / sub2api / Cockpit / 9router / Codex / AxonHub / Codex-Manager

纯前端单页面工具,用来把 ChatGPT Web 登录 session JSON 转换成 CPA、sub2api、Cockpit Tools、9router、Codex auth.json、AxonHub 或 Codex-Manager 可导入 JSON。

本仓库 fork 自 gtxx3600/GPTSession2CPAandSub2API。 上游在线演示:gtxx3600.github.io/GPTSession2CPAandSub2API本 fork 的构建版本与 SHA256 以本仓库 npm run build 产物为准;处理真实 token 时建议本地打开或下载 Release 附件。

在线使用

构建并打开本地页面(推荐):

npm run build
# 然后用浏览器打开 docs/index.html

亦可使用上游 GitHub Pages(请自行核对页面内版本号与 SHA256,见 SECURITY.md)。

安全使用(推荐)

  • 处理真实 token:优先本地打开 docs/index.html,或下载 Release 附件
  • 使用在线版时:对比页面显示的 版本 · 日期 · SHA256 与仓库 dist/SHA256SUMSmeta[name=build-sha256-full]
  • 转换完成后立即清空输入并关闭标签页
  • 不要将 session JSON 发给他人或粘贴到不可信网页
  • 详见 SECURITY.mddocs/AUDIT_CHECKLIST.md

开发与验证

npm test          # 单元测试
npm run build     # 从 src/ 生成 docs/index.html
npm run verify    # 校验构建产物并跑测试
npm run acceptance  # 全量计划验收 + 生成 docs/ACCEPTANCE_REPORT.md

发布流程见 docs/RELEASE.md

部署到 GitHub Pages 与 Cloudflare Pages(推送 main 自动同步)见 docs/DEPLOY.md

使用提示

本项目现在主要用于不同工具之间的 JSON 格式转换。

OpenAI 已限制直接使用 ChatGPT Web 登录 session 转换后导入来跳过 Codex OAuth add phone / 手机绑定验证的方式。也就是说,本项目不能再用来绕过 Codex 登录时的手机绑定要求。

你仍然可以把已有的 ChatGPT Web session、9router OAuth JSON、Codex auth.json、AxonHub auth.json 或 Codex-Manager JSON 转换成其它受支持格式,但转换结果是否能被目标工具成功使用,取决于 OpenAI 和目标工具当前的认证限制、账号权限以及 token 是否仍然有效。

ChatGPT Web session 通常不包含 OAuth 文件里常见的 refresh_token,因此 access token 过期后不能自动刷新。Free 账号即使转换了,也可能没有权限调用需要付费账号权限的模型或功能。

缺少真实 id_token 时会构造带 id_token_synthetic 标记的占位 JWT;部分下游工具若校验签名可能失败。

支持输入

支持粘贴或拖入 ChatGPT Web session JSON,例如包含:

  • user.email
  • accessToken
  • sessionToken
  • expires
  • account.id
  • account.planType

也支持粘贴或拖入 9router Codex OAuth JSON,例如包含 accessTokenrefreshTokenexpiresAtproviderSpecificData.chatgptAccountIdproviderSpecificData.chatgptPlanType

也支持粘贴或拖入 Codex 原生 auth.json,例如包含 auth_modeOPENAI_API_KEYtokens.access_tokentokens.refresh_tokentokens.id_tokentokens.account_idlast_refresh

也支持粘贴或拖入 AxonHub Codex auth.json,例如包含 tokens.access_tokentokens.refresh_tokentokens.id_tokenlast_refresh

也支持粘贴或拖入 Codex-Manager 批量导入 JSON,例如包含 tokens.access_tokentokens.refresh_tokentokens.id_tokenmeta.label

页面也会尝试从 accessToken 的 JWT payload 中补充邮箱、账号 ID、用户 ID、计划类型和过期时间。

输出格式

  • CPA:生成 Codex CPA auth JSON,包含 type: "codex"access_tokensession_tokenid_tokenemailaccount_id、套餐和过期时间等字段;缺少真实 id_token 时会根据 session 与 access token claims 构造 Codex 可解析的占位 JWT claims。
  • sub2api:生成参考 CPA2sub2API 项目的 exported_at/proxies/accounts 结构,账号平台为 openai,类型为 oauth;每个账号对象包含 expires_atauto_pause_on_expired,其中 expires_at 来自该账号 access token 的 JWT exp 秒级时间戳。
  • Cockpit:生成 Cockpit Tools Codex JSON 导入可识别的扁平 token 格式,包含 id_tokenaccess_tokenrefresh_tokenaccount_idemailexpired 等字段。
  • 9router:生成 9router Codex OAuth JSON,包含 accessTokenrefreshTokenexpiresAtproviderSpecificDataproviderauthTypepriorityisActivecreatedAtupdatedAt 等字段。
  • Codex:生成原生 Codex auth.json,包含 auth_mode: "chatgpt"OPENAI_API_KEY: nulltokens.id_token/access_token/refresh_token/account_idlast_refresh。缺少真实 refresh_token 时保留空字符串,access token 过期后不能自动刷新。
  • AxonHub:生成 AxonHub Codex auth.json,包含 auth_mode: "chatgpt"last_refreshtokens.access_token/refresh_token/id_token。缺少真实 refresh_token 时会写入 __missing_refresh_token__ 占位值,方便在 access token 过期前试用;过期后不能自动刷新。
  • Codex-Manager:生成 Codex-Manager 批量导入 JSON,包含 tokens.access_token/refresh_token/id_tokenmeta.label/workspace_id/chatgpt_account_id/note。缺少真实 refresh_token 时保留空字符串,避免被 Codex-Manager 误判为可刷新账号。 ChatGPT Web session 通常不包含 OAuth 文件里常见的 refresh_token,因此 access token 过期后不能自动刷新。

本地使用

npm run build

然后打开:

docs/index.html

所有解析和转换都在浏览器本地完成,不上传 token,不写入本地存储(除本会话敏感确认偏好外)。

社区

社区讨论(非本工具技术支持入口):Discord 频道https://discord.gg/GFmHY2TZNy

About

No description, website, or topics provided.

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages