字
字节笔记本
2026年2月21日
chatgpt-next-share:ChatGPT 账号共享解决方案
API中转
¥120
本文介绍 chatgpt-next-share,一个基于 Go 语言开发的 ChatGPT 共享程序。该项目基于 ninja 提供 ChatGPT 反代能力,并在此基础上提供账号管理、会话隔离等基础功能,方便进行分享与用户管理。
项目简介
chatgpt-next-share 是一个开源的 ChatGPT 共享解决方案,由 zapll 开发维护。截至目前,该项目在 GitHub 上已获得 119 stars,主要使用 Go 语言编写,同时包含 HTML 和 JavaScript 代码。
该项目解决了以下问题:
- 多人共享 ChatGPT 账号时的会话隔离
- 账号的集中管理和过期控制
- 通过反代方式访问 ChatGPT 服务
核心特性
- 账号管理:支持多账号管理和配置
- 会话隔离:不同用户会话相互隔离,保护隐私
- 代理服务:基于 ninja 提供稳定的 ChatGPT 反代能力
- 管理后台:提供 Web 管理界面,方便账号管理
- 过期控制:支持设置账号过期时间
- API 拦截:可配置拦截特定 API 端点
技术栈
- Go (31.5%) - 后端代理服务核心
- HTML (36.7%) - 管理后台界面
- JavaScript (30.6%) - 前端交互逻辑
主要依赖库:
github.com/go-resty/resty/v2- HTTP 客户端github.com/samber/lo- Lodash 风格的 Go 工具库github.com/tidwall/gjson- JSON 解析github.com/tidwall/sjson- JSON 修改
项目结构
text
chatgpt-next-share/
├── admin/ # 管理后台(前端)
├── share/ # 代理服务(Go 后端)
│ ├── main.go # 主程序入口
│ ├── db.go # 数据库操作
│ ├── func.go # 功能函数
│ ├── proxy.go # 代理逻辑
│ └── login.html # 登录页面模板
├── Dockerfile # Docker 构建
├── docker-compose.yml
└── readme.md核心代码解析
main.go 主要逻辑
main.go 是整个代理服务的入口文件,主要功能包括:
-
环境变量配置:
CNS_DATA- 数据目录CNS_NINJA- ninja 服务地址CNS_OFFLINE_CODE- 离线控制码CNS_BLOCK_API- 需要拦截的 API 列表
-
代理处理逻辑 (
handleProxy):- API 拦截检查
- 离线模式控制
- 用户登录验证
- 会话 Token 管理
- 请求转发到 OpenAI
-
登录流程:
- 提供自定义登录页面
- 验证用户 Token
- 设置 Session Cookie
-
用户会话处理:
- 获取和缓存 AccessToken
- 用户信息脱敏处理
- 账号过期检查
关键代码片段
go
// 自定义代理逻辑
func handleProxy(res http.ResponseWriter, req *http.Request) {
// API 拦截
if lo.Contains(blockApi, req.URL.Path) {
http.Error(res, "Not found", http.StatusNotFound)
return
}
// 离线模式检查
if offline {
res.WriteHeader(http.StatusServiceUnavailable)
res.Write([]byte("Service is offline"))
return
}
// 登录验证
if req.URL.Path != "/auth/login" && req.Method == http.MethodGet {
token, err := req.Cookie("session_token")
if err != nil {
http.Redirect(res, req, "/auth/login", http.StatusFound)
return
}
// ...
}
// 请求转发
proxy.ServeHTTP(res, req)
}安装部署
前置要求
- 一个解锁 ChatGPT 的网络环境
- Docker 和 Docker Compose(推荐)
- 或 Go >= 1.20 和 Bun >= 1.0.26
Docker 部署
bash
git clone https://github.com/zapll/chatgpt-next-share.git
cd chatgpt-next-share
docker compose updocker-compose.yml 配置:
yaml
version: '3'
services:
chatgpt-next-share:
image: ghcr.io/zapll/chatgpt-next-share:latest
container_name: chatgpt-next-share
restart: unless-stopped
volumes:
- ./data:/data
ports:
- "3001:3001" # 后台服务端口
- "3000:3000" # 代理服务端口
environment:
- CNS_NINJA=http://ninja:7999
- CNS_DATA=/data
depends_on:
- ninja
ninja:
image: gngpp/ninja:latest
container_name: ninja
restart: unless-stopped
environment:
- TZ=Asia/Shanghai
command: run --enable-webui --arkose-endpoint http://172.17.0.1:7999源码编译部署
bash
# 设置环境变量
export CNS_DATA=$PWD/data
export CNS_NINJA=http://127.0.0.1:7999
# 启动后台服务
cd admin
bun install
bun run dev
# 启动代理服务
cd ../share
go run .使用说明
服务启动后
- ChatGPT 服务:http://127.0.0.1:3000
- 后台管理服务:http://127.0.0.1:3001
添加账号步骤
- 在 chat.openai.com 官网登录账号
- 右键检查,打开调试工具
- 点击 Application 选项卡
- 找到 Name 为
__Secure-next-auth.session-token的 Cookie - 复制其 Value
登录管理后台
- 默认账号:
nextshare - 默认密码:
cns@0001
在账号管理菜单下新建账号,粘贴上一步复制的 session-token 即可。
使用 ChatGPT
使用配置的 token(如 cns0001)即可登录使用 ChatGPT。
项目链接
- GitHub 仓库:https://github.com/zapll/chatgpt-next-share
- Telegram 群组:https://t.me/+ZmZ49HVYwU0zYjg1
- ninja 项目:https://github.com/gngpp/ninja
分享: