之前跟着站内的教程入坑了s8赛季,并部署了new api。但在建立渠道过程中,发现因为IP原因,无法使用始皇的oai free进行chat转API从而愉快的薅我的PLUS账户(服务器位置在波兰,被Ban了)。因此开始寻找有无替代方案。因为本人比较菜,只能当个脚本小子,在尝试构建chat2api失败后,我发现了https://github.com/xqdoo00o/ChatGPT-to-API这个项目(Aurora的参考项目),该项目是golang写的,能够直接在serv00编译成功并使用。我看站内目前没有搭建这个项目的教程,就打算抛砖引玉,分享一下我部署的过程与遇到的坑。
对于serv00中部署应用,站内有很多教程,跟着步骤走就行,这里简单说一下。
首先,访问你的serv00,在serv00中,点击Additional services->Run your own applications->Status->Enable
然后点击Port reservation->Add port,random根据你的情况选择
之后就是建一个website,点击WWW websites->Add new website->Advanced settings,域名填入你的域名,具体可以参考站内教程( 【serv00系列教程】部署go-proxy-bingai演示站 - 软件分享 - LINUX DO和 在serv00上搭建DNS管理系统并绑定cloudflare - 软件分享 - LINUX DO),website type选proxy,proxy port选择你刚刚开启的端口。
以上操作结束后,用ssh工具连接到你的服务器,你可以建立一个临时文件夹,从GitHub上clone下来ChatgptToAPI项目,构建和使用的教程可以直接参考作者项目的中文文档xqdoo00o/ChatGPT-to-API/README_ZH.md
git clone https://github.com/xqdoo00o/ChatGPT-to-API
cd ChatGPT-to-API
go build
./freechatgpt
将构建好的程序放入domains/<你的域名>/public_html
中,然后建立并编写一份.env
SERVER_PORT=填入你在serv00中开启的端口
ADMIN_PASSWORD=默认是"TotallySecurePassword",为管理员密码,可以不填,如有需求,参考项目中文教程中的用户管理文档部分
GIN_MODE=可选环境变量,debug或者release
因为服务器在波兰,可以直连chatgpt,我这里没有设置代理,因此不用创建proxies.txt。
然后就是配置账号,如果你是chatgpt的账号,那么直接在程序同级目录建立accounts.txt
,里面填写你的账号密码,格式
邮箱A:密码
邮箱B:密码:2
邮箱C:密码:2/5
...
密码后的数字表示轮询次数,默认为1次。上例表示第一次对话使用账户A,而后两次对话使用账户B,账户C为Teams账户,接着五次对话使用账户C的Teams,然后两次使用账户C的个人,如此循环。
所有登录后的Access tokens和PUID会存放在access_tokens.json
,并且项目每天会自动更新Access tokens和PUID。
如果你和我一样,是第三方登录的用户,则还需要在同级目录下建立cookies.json
,在accounts.txt
添加第三方账户和任意密码(第一方账号也同样适用)。文件内容如下
{
"第三方账户名如[email protected]": [
{
"Name": "__Secure-next-auth.session-token",
"Value": "网页登录第三方账户后,cookies中的__Secure-next-auth.session-token值",
"Path": "/",
"Domain": "",
"Expires": "0001-01-01T00:00:00Z",
"MaxAge": 0,
"Secure": true,
"HttpOnly": true,
"SameSite": 2,
"Unparsed": null
}
]
}
如果使用refresh_token,把Name的值改为"refresh_token",Value的值改为refresh_token。第三方用户获取refresh token参见站内大佬教程 ( 苹果设备获取device token教程 帮助非三级号(不包括俺 已经三级了)实现refresh token自由 - 软件分享 - LINUX DO和自己搞 refresh token - 常规话题 / 精华神贴 - LINUX DO)
然后还需要在程序同级目录下建立一个harPool
文件夹,里面放入HAR文件,HAR文件获取见项目中文教程。完成以上后,应该程序就可以正常运行了
可以看到程序提供的接口,注意带admin的接口就需要ADMIN_PASSWORD去认证,具体管理接口参见API Documentation
然后就是serv00程序保活,这里直接参考站内教程即可 重大更新:serv00部署服务加保活脚本 - 软件分享 - LINUX DO,注意保活前需要先在程序目录中新建一个
start.sh
和restart.sh
(也可以其他目录,只要程序的路径正确即可)。然后就可以将 http://127.0.0.1:<你程序的端口>/v1/chat/completions放入new api或者one api进行测试并使用啦
【后续】为这个项目添加IP白名单防止被白嫖 【配置调整】为CHATGPT-TO-API添加IP访问白名单 - 软件分享 - LINUX DO
【再后续】十分感谢 @setmefree 佬友的解答,不用添加IP白名单,只需要配置api_key.txt即可,在文件中放入虚拟的api key(自己设置),调用的使用在请求头加入-H "Authorization:
或者接入new api时填写这个虚拟密钥就行。果然论坛里能学到好多东西!