cc-sync—将cc-switch的codex凭证导出至CPA等中转的工具

cc-sync

一款可以从 cc-switch 导出 ChatGPT OAuth 登录凭证,支持 CPA / Sub2API / Cockpit / 9Router 四种代理格式,的工具

项目背景

cc-switch 是一个 AI 客户端配置管理工具,把多个 OpenAI ChatGPT 账号的 OAuth session 信息(id_token、access_token、refresh_token、session_token)统一存储在 SQLite 中。

但 cc-switch 的数据库格式和各个代理工具(cli-proxy-api、Sub2API、Anti-Gravity Cockpit、9Router 等)所需的导入格式不同。cc-sync 就是中间的格式转换桥 + 令牌刷新工具。

为什么需要代理?

refresh_token 换新令牌需要调用 Auth0 端点:

复制代码
POST https://auth0.openai.com/oauth/token

这里有两个问题:

1. client_id 未公开

Auth0 的 client_id 参数(app_EMoamEEZ73f0CkXaXp7hrann)不是公开文档里的值 ------ 它是从已有的 OAuth id_token 的 aud 声明中提取出来的。没有这个参数,refresh 请求会返回 unauthorized_client。

2. Cloudflare 阻断非浏览器请求

auth0.openai.com 前面有 Cloudflare 防护。Python 的 urllib / requests 的 TLS 指纹与真实浏览器差异明显,Cloudflare 会直接返回 403 Forbidden。

解决方案是使用 curl(它有更接近浏览器的 TLS 指纹)并通过本地代理中转:

bash 复制代码
curl -s -x http://127.0.0.1:7897 \
  -H "Content-Type: application/json" \
  -H "User-Agent: Mozilla/5.0 ..." \
  -H "Origin: https://chatgpt.com" \
  -d '{"grant_type":"refresh_token","client_id":"app_EMoam...","refresh_token":"rt_..."}' \
  https://auth0.openai.com/oauth/token

脚本内置了这一逻辑,只需传入 --proxy 参数即可。

不需要代理的情况: 如果只用 --no-refresh 导出数据库中已有的令牌,则不需要代理。

安装

依赖

  • Python 3.12+
  • curl(用于令牌刷新)
bash 复制代码
git clone https://github.com/hzhsec/cc-sync.git
cd cc-sync
pip install -r requirements.txt  # 实际上无外部依赖,仅 Python 标准库

快速开始

1. 查看帮助

bash 复制代码
python export_codex.py --help

2. 只导出不刷新(适用于已有有效令牌)

bash 复制代码
python export_codex.py --no-refresh

输出到当前目录:

复制代码
xx@gmail.com.cpa.2026-05-12_09-26-01.json
xx@gmail.com.sub2api.2026-05-12_09-26-01.json
xx@gmail.com.cockpit.2026-05-12_09-26-01.json
xx@gmail.com.9router.2026-05-12_09-26-01.json
...

3. 刷新令牌后导出(如果令牌失效)

bash 复制代码
python export_codex.py --proxy http://127.0.0.1:7897

4. 指定输出目录

bash 复制代码
python export_codex.py --output ./exports

5. 只导出特定格式

bash 复制代码
python export_codex.py --formats cpa sub2api

6. 只导出某个账号

bash 复制代码
python export_codex.py --account quposev825dd

7. 指定数据库路径

bash 复制代码
python export_codex.py --db ~/.cc-switch/cc-switch.db

实测CPA可以用

输出格式

CPA

用于 cli-proxy-api 等 OpenAI Codex 代理工具。

json 复制代码
{
  "type": "codex",
  "account_id": "00000000-0000-4000-9000-000000000000",
  "email": "mark@example.com",
  "plan_type": "plus",
  "id_token": "eyJhbGciOiJub25l...",
  "id_token_synthetic": true,
  "access_token": "eyJhbGciOiJSUzI1Ni...",
  "session_token": "eyJhbGciOiJkaXIi...",
  "last_refresh": "2026-05-12T04:43:58.105Z",
  "expired": "2026-08-06T14:29:36.155Z"
}

Sub2API

Sub2API 格式 ------ 订阅转 API 代理配置。

json 复制代码
{
  "accounts": [{
    "platform": "openai",
    "type": "oauth",
    "credentials": {
      "access_token": "eyJ...",
      "chatgpt_account_id": "...",
      "expires_in": 7465538
    }
  }]
}

Cockpit

Anti-Gravity Cockpit 格式。

json 复制代码
{
  "type": "codex",
  "id_token": "eyJhbGciOiJub25l...",
  "access_token": "eyJ...",
  "account_id": "...",
  "email": "mark@example.com",
  "expired": "2026-08-06T14:29:36.155Z"
}

9Router

9Router 格式。

json 复制代码
{
  "accessToken": "eyJ...",
  "testStatus": "active",
  "providerSpecificData": {
    "chatgptAccountId": "...",
    "chatgptPlanType": "plus"
  },
  "provider": "codex",
  "authType": "oauth"
}

完整示例见 examples/ 目录。

项目结构

复制代码
cc-sync/
├── export_codex.py          # 主脚本
├── examples/                # 各格式示例(占位符)
│   ├── mark@example.cpa.2026-05-12_12-44-36.json
│   ├── mark@example.sub2api.2026-05-12_12-44-12.json
│   ├── mark@example.cockpit.2026-05-12_12-44-24.json
│   └── mark@example.9router.2026-05-12_12-44-31.json
├── LICENSE
└── README.md

项目地址
https://github.com/hzhsec/cc-sync

✨ 文末小福利 ✨

一直在找流量够用、月租不贵的手机卡?

这款我们读者都在用的19元/29元超值大流量卡,推荐给你:

✅ 长期套餐,资费稳定

✅ 全国通用,不限速

✅ 免费申请,包邮到家

👇 点击下方卡片扫码,立即领卡 👇

或者复制链接

https://haokawx.lot-ml.com/ProductEn/Index/93fd8b5503249bce

相关推荐
ksueh4 天前
AI网文创作软件实测:蛙趣拼文是我筛完留下的一款
人工智能·ai写作·ai工具·ai写小说
VIP_CQCRE5 天前
把 Codex CLI 变成全能 AI 工作台:一键接入 Ace Data Cloud MCP
codex·ai工具·开发者工具·mcp·acedatacloud
ksueh6 天前
平台围剿AI网文能持久吗:更新量指标一日不改AI一日停不下来
人工智能·ai写作·ai工具·ai写小说
一级新生16 天前
Agent Skill 是什么?概念、架构与开发指南
人工智能·ai agent·ai工具·提示词工程·agent skill
ksueh16 天前
2026网文有声化新规落地:AI配音的边界划在了哪里
人工智能·ai写作·ai工具·ai写小说
台风护盾16 天前
模型解析|老磁带、旧录像的音频分离难吗?老化素材分离的三个难点
音频处理·ai工具·人声分离
honvin_17 天前
costrict-router工具使用
ai工具·costrict-router
一级新生18 天前
WorkBuddy 完全入门指南(小白版)
办公自动化·效率工具·ai工具·workbuddy·新手指南
EDA365电子论坛18 天前
画得出来≠做得出来:0.4mm BGA 时代的 DFM 良率红线
人工智能·ai工具·pcb制造
台风护盾19 天前
音频处理实战|音频剪辑之高切、低切、搁架、峰值,EQ的四种滤波器什么时候用哪个?
音频处理·ai工具·人声分离