Tabbit 是一款基于 Chromium 的国产 AI 浏览器,内置了 21 个 AI 模型(Claude-Opus-4.8、GPT-5.5、Gemini-3.5-Flash、DeepSeek-V4-Pro 等)。正常情况下你必须打开 Tabbit 浏览器才能用这些模型。
你的客户端 ──OpenAI格式──▶ Tabbit2API(本地服务) ──翻译+签名──▶ web.tabbit.ai
▲ │
└────────────── OpenAI 格式回复 ◀─────────── SSE 流 ◀────────────────┘
- 装了 Tabbit 浏览器并能登录账号(tabbit.ai 下载)
- Pro 会员:在 Tabbit 设置里"设为默认浏览器"可解锁(免费),premium 模型(Claude/GPT/Gemini)必需
- Node.js 18+(本项目零依赖,无需
npm install)
Tabbit 的登录态存在 Cookie 里(含一个 HttpOnly 的 JWT token),需要从浏览器导出一次。
用本项目自带的 Chrome 扩展(推荐):
- 打开 Chrome 或 Tabbit 浏览器,地址栏输入
chrome://extensions/ - 右上角打开**「开发者模式」**
- 点**「加载已解压的扩展程序」**,选
D:\toy\tabbit2api\cookie-helper-extension文件夹 - 访问
https://web.tabbit.ai/并登录 - 点浏览器工具栏上的扩展图标 → 点**「复制 Cookie」**
- 准备粘贴(下一步用)
也可以手动:F12 → Application → Cookies →
https://web.tabbit.ai→ 把每条name=value用;拼起来
在 Tabbit 浏览器的 web.tabbit.ai 页面按 F12,Console 里执行:
chrome.tabInstance.getDeviceInfo().then(d => console.log(d.tabbitVersion))会输出类似 1.1.39(10101039),记下这个值。
复制配置模板:
cp .env.example .env用记事本打开 .env,填两个字段:
TABBIT_COOKIE=粘贴第1步复制的整串 Cookie
TABBIT_VERSION=1.1.39(10101039) # 填第2步拿到的值node src/server.mjs看到下面的输出就说明启动成功:
═══════════════════════════════════════════════════════════
Tabbit2API · OpenAI 兼容代理
端口: 8787
鉴权: 未开启
版本: 1.1.39(10101039)
═══════════════════════════════════════════════════════════
命令行测试:
# 非流式
curl http://localhost:8787/v1/chat/completions ^
-H "Content-Type: application/json" ^
-d "{\"model\":\"Default\",\"messages\":[{\"role\":\"user\",\"content\":\"你好\"}]}"
# 流式
curl http://localhost:8787/v1/chat/completions ^
-H "Content-Type: application/json" ^
-d "{\"model\":\"Claude-Opus-4.8\",\"messages\":[{\"role\":\"user\",\"content\":\"你好\"}],\"stream\":true}"接入 Cherry Studio / NextChat 等客户端:
| 设置项 | 填什么 |
|---|---|
| API 地址 (baseURL) | http://localhost:8787/v1 |
| API Key | 随便填(如 sk-anything),不校验 |
| 模型名 | Default / Claude-Opus-4.8 / GPT-5.5 等(见下方列表) |
| 方法 | 路径 | 说明 |
|---|---|---|
GET |
/v1/models |
模型列表(OpenAI 格式) |
POST |
/v1/chat/completions |
聊天补全(支持 stream: true/false) |
GET |
/healthz |
健康检查(Cookie 是否有效 + 会话数) |
| 模型 | 类型 |
|---|---|
Default |
免费无限 |
GLM-5.2 GLM-5.1 |
免费计量 |
DeepSeek-V4-Pro DeepSeek-V4-Flash DeepSeek-V3.2 |
免费计量 |
Kimi-K2.6 Kimi-K2.5 |
免费计量 |
MiniMax-M3 MiniMax-M2.7 |
免费计量 |
Claude-Haiku-4.5 |
免费计量 |
GPT-5.2-Chat |
免费计量 |
Qwen3.5-Plus Doubao-Seed-1.8 |
免费计量 |
Claude-Opus-4.8 Claude-Opus-4.7 Claude-Sonnet-4.6 |
⭐ Pro 会员 |
GPT-5.5 GPT-5.4 |
⭐ Pro 会员 |
Gemini-3.5-Flash Gemini-3.1-Pro |
⭐ Pro 会员 |
⭐ Pro 会员模型需要:① 账号设过默认浏览器 ② 请求头
unique-uuid标记位 = 1(本项目已自动处理)
| 变量 | 必填 | 默认 | 说明 |
|---|---|---|---|
TABBIT_COOKIE |
✅ 是 | — | web.tabbit.ai 域下完整 Cookie |
TABBIT_VERSION |
✅ 是 | 1.1.39(10101039) |
真实版本号(来自 getDeviceInfo) |
TABBIT_SIGN_KEY |
❌ 否 | 自动拉取 | HMAC 签名 key |
PORT |
❌ 否 | 8787 |
服务端口 |
API_KEY |
❌ 否 | 空(不校验) | 代理鉴权 key |
tabbit2api/
├── src/
│ ├── server.mjs # OpenAI 兼容 HTTP 服务(原生 http,零依赖)
│ └── config.mjs # 配置加载
├── scripts/
│ ├── probe.mjs # 探测脚本(验证 Cookie/签名/聊天是否通)
│ └── lib/
│ └── tabbit.mjs # ★ 逆向核心:签名/指纹/SSE/会话/聊天
├── cookie-helper-extension/ # Chrome 扩展:导出 Cookie + 抓请求
├── docs/ # 协议文档 + 实现路线图
├── .env.example # 配置模板
└── package.json
Cookie 过期了怎么办?
JWT token 有效期约 7 天。过期后用扩展重新导出一次 Cookie,更新 .env 里的 TABBIT_COOKIE 重启服务即可。
报错 "premium users only"?
premium 模型(Claude/GPT/Gemini)需要 Pro 会员:在 Tabbit 浏览器设置里"设为默认浏览器"解锁。本项目的 unique-uuid 标记位已自动设为 1。
报错 "AI service temporarily unavailable"?
通常是 chat_session_id 失效。服务会自动从 /newtab 拉取会话列表,如果账号下没有会话,先在 Tabbit 浏览器里随便发一条消息创建一个对话即可。
报错 493 "update_version"?
TABBIT_VERSION 格式不对。必须是真实格式(如 1.1.39(10101039)),用第 2 步的方法从 getDeviceInfo() 获取。
- docs/逆向流程与协议.md — 协议细节(端点/签名/SSE/Pro 机制)
- docs/实现路线图.md — 项目结构与技术栈
⚠️ Cookie 等同账号控制权,.env已加入.gitignore,切勿提交到 git⚠️ 仅供个人学习研究,不要商用、高并发滥用、二次分发账号- 本项目基于逆向分析,Tabbit 更新后协议可能变化,需要重新适配,如果觉得本项目对学习研究有用,请您给我一个免费的star
本项目仅供个人学习与技术研究,不提供任何明示或暗示的担保,使用风险由使用者自行承担。
- 与官方无关:本项目非 Tabbit 官方产品,与 Tabbit 及其关联方无任何合作、代言或隶属关系。"Tabbit" 等商标版权归原权利人所有,本项目仅作为技术研究对象。
- 合规风险:本项目通过分析 Tabbit Web 端协议实现。使用前请自行评估法律风险,由此产生的一切后果由使用者自行承担,作者不承担任何责任。
- 账号风险:Cookie 等同于账号控制权,因泄露、滥用导致账号被封、数据丢失等损失,作者不承担责任。请妥善保管
.env,切勿提交到任何公开仓库。 - 稳定性:Tabbit 更新后协议可能随时变化导致失效,作者不保证持续维护或可用性。
- 使用限制:禁止将本项目用于商业用途、禁止二次分发账号/Token、禁止高并发滥用。因违规使用产生的一切后果由使用者承担。