惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
小众软件
小众软件
博客园_首页
T
Tailwind CSS Blog
美团技术团队
博客园 - 叶小钗
Microsoft Security Blog
Microsoft Security Blog
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
大猫的无限游戏
大猫的无限游戏
Microsoft Azure Blog
Microsoft Azure Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
I
InfoQ
MongoDB | Blog
MongoDB | Blog
The Cloudflare Blog
J
Java Code Geeks
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
Blog — PlanetScale
Blog — PlanetScale
IT之家
IT之家
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Y
Y Combinator Blog

博客园_首页

Linux实操--组管理、权限管理和定时任务 Java + EasyExcel 实现单个接口导出多个Excel Mem0 源码解析系列(二):提示词工程的深度剖析 Openclaw TaskFlow究竟是什么?和普通Skill技能有什么区别 博文阅读密码验证 - 博客园 嘉立创开源:应该是全网MicroPython教程最多的开发板 Hermes Agent 集成实践:从协议到生产 2026年AI编程工具横评:Cursor、Codex、Claude Code、Zed、Windsurf Java程序员必看的RAG入门教程 2026 AI效率神器:Superpowers + Claude Code 保姆级教程 本地大模型部署全攻略:从 0 到 1 玩转 Ollama 【从0到1构建一个ClaudeAgent】内存管理-上下文压缩 .NET 高级开发 | 设计、实现一个事件总线框架 电子小白入门之NE555 3. WorkBuddy:隐藏玩法,一键召唤专家,让 AI 以"专家身份"给你干活 和AI一起搞事情#3:Claude Teammate 游戏开发翻车实录 【OpenClaw】通过 Nanobot 源码学习架构---(7)Memory C# .NET 周刊|2026年3月3期 我在 Debian 11 上把 K8s 单机搭起来了,过程没你想的那么顺(/opt 目录版) 深度学习进阶(七)Data-efficient Image Transformer CLI+Skill搭建浏览器AI自动化框架,告别一切重复枯燥任务 告别Token账单无底洞:OpenClaw本地部署,重塑企业数据主权的唯一解 FastAPI+Vue:文件分片上传+秒传+断点续传,这坑我帮你踩平了! SBTI 爆火后,我做了个程序员版的 CBTI。。已开源 + 附开发过程 多模态检索开始进入工程期:用 Sentence Transformers 搭建可落地的 Multimodal RAG 100多行代码实现一个最简单的Agent(用ReAct) Claude Code 通关手册(八):推荐 5 个 Hooks,代码质量提升 3 倍 老板:“有人截图了!”。安全部门:“收到,马上查暗水印!” - why技术 技术之外,皆是人间 C#/.NET/.NET Core技术前沿周刊 | 第 69 期(2026年4.01-4.12)
cc-sync—将cc-switch的codex凭证导出至CPA等中转的工具
hzhsec · 2026-05-12 · via 博客园_首页

cc-sync

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

项目背景

cc-switch 是一个 AI 客户端配置管理工具,把多个 OpenAI ChatGPT 账号的 OAuth session 信息(id_tokenaccess_tokenrefresh_tokensession_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 指纹)并通过本地代理中转:

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(用于令牌刷新)
git clone https://github.com/hzhsec/cc-sync.git
cd cc-sync
pip install -r requirements.txt  # 实际上无外部依赖,仅 Python 标准库

快速开始

1. 查看帮助

python export_codex.py --help

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

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. 刷新令牌后导出(如果令牌失效)

python export_codex.py --proxy http://127.0.0.1:7897

4. 指定输出目录

python export_codex.py --output ./exports

5. 只导出特定格式

python export_codex.py --formats cpa sub2api

6. 只导出某个账号

python export_codex.py --account quposev825dd

7. 指定数据库路径

python export_codex.py --db ~/.cc-switch/cc-switch.db

实测CPA可以用
image.png

输出格式

CPA

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

{
  "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 代理配置。

{
  "accounts": [{
    "platform": "openai",
    "type": "oauth",
    "credentials": {
      "access_token": "eyJ...",
      "chatgpt_account_id": "...",
      "expires_in": 7465538
    }
  }]
}

Cockpit

Anti-Gravity Cockpit 格式。

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

9Router

9Router 格式。

{
  "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元超值大流量卡,推荐给你:

✅ 长期套餐,资费稳定
✅ 全国通用,不限速
✅ 免费申请,包邮到家

👇 点击下方卡片扫码,立即领卡 👇
微信图片_20260425192237_338_8.jpg
或者复制链接

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