拒绝 API Key 迁徙劳顿:我写了个 OpenAI 路由代理,专治各种“白嫖”后遗症
😫 极客的痛点:当你的工具比你还能吃 Token
作为一个合格的极客,我们手里总有那么几个(或者几十个)OpenAI 兼容的 API Key:有各种平台送的额度,有自己薅的羊毛,还有几个“脆皮”但免费的测试 Key。
但问题接踵而至:
- 工具太“饿”:像 OpenClaw 这种神兵利器,功能强是强,但吞噬 Token 的速度简直像黑洞,单一个 Key 根本撑不过半天 。
- Key 太多太乱:每次这个 Key 欠费了,那个 Key 限流了,就得钻进各种客户端(Cherry Studio、OpenClaw 等)里改配置、切模型,手动挡操作直接拉低了极客的格调。
- 环境复杂:为了个简单的代理还要配置 MySQL?Duck 不必!我们追求的是轻量、快速、随用随走。
🚀 手搓解药:OpenAI 路由代理(SQLite + 可视化版)
既然现有的方案不爽,那就自己动手。我写了一个基于 SQLite 的 OpenAI 统一路由代理。它的核心逻辑只有一句话:客户端只管发请求,剩下的脏活累活(鉴权、分流、重试、切换)全部交给我。
为什么说它是“极客标配”?
- 零配置负担(SQLite Inside):拒绝臃肿的数据库镜像!单文件 SQLite 即可运行,一行
python openai_route.py直接起飞 。 - 死磕到底的自动切换(Failover):这是最爽的一点。当你的某个上游 Key 触发了
429限速、401失效或5xx服务器崩溃,代理会自动在毫秒级切换到下一个可用 Key,直到请求成功 。 - 可视化“点将台”:谁说极客不看 UI?我内置了一个中文可视化后台。哪个 Key 挂了、哪个分组最稳、最近 14 天消耗了多少 Token,一眼望穿 。
- 强制参数重写:后台支持 JSON 强制参数覆盖。无论客户端怎么发,我都能在后端强行给它加上
stream: true或者锁定模型参数
没问题,咱们把“极客范儿”和“小白易上手”结合起来,把这篇博文写透、写扎实。
🛠️ 极客姿势:如何优雅地“白嫖”与调度
很多小白听不懂什么“反向代理”、“负载均衡”,他们只关心一件事:“我有一堆乱七八糟的 Key,能不能让我点一下就能用,而且永远不报错?”
答案是:能。 这个脚本就像是在你的客户端(如 OpenClaw)和那些脾气捉摸不定的 API 上游之间,架设了一个智能指挥部。
🧠 它是如何工作的?(技术流揭秘)
这个脚本的运行逻辑其实非常硬核且线性,保证了极高的稳定性 :
- 接管请求:你的客户端把请求发给代理,代理首先通过
.env里的OPENAI_PROXY_AUTH验证你是“自己人”。 - 智能识别:它会看你请求的是哪个
model。是中文名?还是数字编号?它会根据你设定的路由规则(分组、别名、甚至精确匹配)去数据库里捞出对应的上游池子 。 - 稳定优先派发:它不是盲目乱转,而是按照你配置的顺序,优先找那个最稳的上游 。
- 自动救火(Failover):这是最爽的一点。如果选中的上游报了
429(限速)或502(崩溃),代理不会把错误丢回给客户端,而是在后台默默尝试下一个上游,直到试满 5 次(可调)或者成功为止 。 - 冷却保护:报错的上游会被关 5分钟“禁闭”(冷却期),防止无效重试导致你的 Key 被彻底封禁 。
🎨 别说理论,看脸(可视化管理)
对于不喜欢改代码的小白,我直接搓了一个中文可视化后台 。
- 管理后台 (
/admin):在这里,你可以像填表一样新增、编辑、启用或停用上游 API 。 - 一键体检:有个按钮叫
测试连通性,点一下就知道这个 Key 还是不是活的 。 - 统计面板 (
/admin/stats):想知道哪个模型最勤快?哪天白嫖得最狠?近 14 天的请求曲线图清清楚楚 。 - 日志清理:SQLite 虽好,但日志多了也占地方,后台支持一键清理,保持系统轻盈 。
🚀 快速部署:从零到一的极客之路
不管你是放在 NAS 上、吃灰的云服务器上,还是自己的电脑上,部署只需要四步。
1. 环境准备
确保你的系统安装了 Python。然后一行命令搞定依赖 :
pip install flask requests2. 配置你的“灵魂” (.env)
复制模板文件 Copy-Item .env.example .env(Windows)或 cp .env.example .env(Linux) 。 打开 .env,你只需要修改这三处关键点 :
OPENAI_PROXY_AUTH: 设置一个你客户端连接用的 Token。OPENAI_PROXY_ADMIN_TOKEN: 设置你的后台登录口令。OPENAI_PROXY_SECRET_KEY: 随便填一串长字符,保证会话安全。
3. 初始化并启动
第一次运行需要初始化数据库,然后直接起飞 :
# 初始化数据库python openai_route.py --init-db
# 启动服务python openai_route.py现在,访问 http://127.0.0.1:8056/admin 开启你的可视化管理时代吧!
🔌 客户端对接:无缝切换
配置好代理后,你的客户端(如 Cherry Studio, OpenClaw, NextChat)只需要这么填 :
| 字段 | 填入内容 |
|---|---|
| API 地址 (Base URL) | http://你的IP:8056/v1 |
| API Key | 你在 .env 里设的 OPENAI_PROXY_AUTH |
| 模型 (Model) | 填你在后台设的 “中文别名” 或 “分组编号” |
🛡️ 安全运行补充(重要!)
如果你打算在公网服务器上运行,请务必注意安全防护:
- 修改监听地址:在
.env中,将OPENAI_PROXY_LISTEN_HOST从0.0.0.0改为127.0.0.1。这样可以防止后台直接暴露在公网被爆破。 - 反向代理:建议前面挂一个 Nginx 做反向代理,并配置 SSL 证书。这不仅能提升安全性,还能通过 Nginx 进一步优化高并发下的访问体验。
📦 仓库地址
项目已开源
极客不是为了炫技,而是为了让生活更简单。 这个脚本就是我的答案。