feat: 新增 socks 环境变量配置 \n 移除单次对话次数限制

This commit is contained in:
adams549659584 2023-05-09 07:04:01 +08:00
parent 319c4750bc
commit 8ba4b1e332
9 changed files with 118 additions and 31 deletions

7
.vscode/launch.json vendored
View File

@ -11,8 +11,11 @@
"mode": "auto",
"program": "${workspaceFolder}",
"env": {
"Go-Proxy-BingAI-Debug": "true",
"PORT": "8888"
"PORT": "8888",
"Go_Proxy_BingAI_Debug": "true",
"Go_Proxy_BingAI_SOCKS_URL": "192.168.0.88:1070",
// "Go_Proxy_BingAI_SOCKS_USER": "xxx",
// "Go_Proxy_BingAI_SOCKS_PWD": "xxx",
}
}
]

View File

@ -6,22 +6,25 @@
⭐ 无需登录即可畅聊
⭐ 无单次对话次数限制
⭐ 需要画图等高级功能时,可登录微软账号设置用户 Cookie 进行体验
⭐ 遇到一切问题,先点左下角 ![新主题](./docs/img/bing-clear.png) 试试不行使用刷新大法Shift + F5 或 Ctrl + Shift + R 或 右上角设置中的重置),最终大招就 清理浏览器缓存 及 Cookie 比如24小时限制、未登录提示等等
⭐ 遇到一切问题,先点左下角 ![新主题](./docs/img/bing-clear.png) 试试不行使用刷新大法Shift + F5 或 Ctrl + Shift + R 或 右上角设置中的重置),最终大招就 清理浏览器缓存 及 Cookie 比如24 小时限制、未登录提示等等)
- [go-proxy-bing](#go-proxy-bing)
- [网页展示](#网页展示)
- [侧边栏](#侧边栏)
- [演示站点](#演示站点)
- [获取Cookie](#获取Cookie)
- [部署](#部署)
- [Docker](#Docker)
- [Release](#Release)
- [Railway](#Railway)
- [Vercel](#Vercel)
- [Render](#Render)
- [TODO](#TODO)
- [网页展示](#网页展示)
- [侧边栏](#侧边栏)
- [演示站点](#演示站点)
- [获取 Cookie](#获取Cookie)
- [环境变量](#环境变量)
- [部署](#部署)
- [Docker](#Docker)
- [Release](#Release)
- [Railway](#Railway)
- [Vercel](#Vercel)
- [Render](#Render)
- [TODO](#TODO)
## 网页展示
@ -59,49 +62,87 @@
- https://bing.vcanbb.top
### Railway搭建
### Railway 搭建
- https://bing-railway.vcanbb.top
- https://go-proxy-bingai-production.up.railway.app
### Vercel搭建
### Vercel 搭建
- https://bing-vercel.vcanbb.top
- https://go-proxy-bingai-git-master-adams549659584.vercel.app
### Render搭建
### Render 搭建
- https://bing-render.vcanbb.top
- https://go-proxy-bingai.onrender.com
## 获取Cookie
## 获取 Cookie
- 访问 https://www.bing.com/ 或 https://cn.bing.com/ ,登录
- F12 或 Ctrl + Shift + I 打开控制台
- 拿到 Cookie 后在网站设置用户Cookie弹窗填入即可。
- 拿到 Cookie 后,在网站设置用户 Cookie 弹窗填入即可。
![获取Cookie](./docs/img/bing-cookie.png)
## 环境变量
```bash
# 运行端口 默认 8080 可选
PORT=8080
# Socks 环境变量 示例 可选
Go_Proxy_BingAI_SOCKS_URL=192.168.0.88:1070
# Socks 账号、密码 可选
Go_Proxy_BingAI_SOCKS_USER=xxx
Go_Proxy_BingAI_SOCKS_PWD=xxx
```
## 部署
> 需 https 域名 (自行配置 nginx 等)
> 支持 Linux (amd64 / arm64)、Windows (amd64 / arm64)
> 国内机器部署可配置 socks 环境变量
### Docker
> 参考 [Dockerfile](./docker/Dockerfile) 、[docker-compose.yml](./docker/docker-compose.yml)
示例
- docker 示例
```bash
# 运行容器 监听8080 端口
docker run -d -p 8080:8080 --name go-proxy-bingai --restart=unless-stopped adams549659584/go-proxy-bingai
# 配置 socks 环境变量
docker run -e Go_Proxy_BingAI_SOCKS_URL=192.168.0.88:1070 -e Go_Proxy_BingAI_SOCKS_USER=xxx -e Go_Proxy_BingAI_SOCKS_PWD=xxx -d -p 8080:8080 --name go-proxy-bingai --restart=unless-stopped adams549659584/go-proxy-bingai
```
- docker compose 示例
```bash
version: '3'
services:
go-proxy-bingai:
# 镜像名称
image: adams549659584/go-proxy-bingai
# 容器名称
container_name: go-proxy-bingai
# 自启动
restart: unless-stopped
ports:
- 8080:8080
# environment:
# - Go_Proxy_BingAI_SOCKS_URL=192.168.0.88:1070
# - Go_Proxy_BingAI_SOCKS_USER=xxx
# - Go_Proxy_BingAI_SOCKS_PWD=xxx
```
### Release
@ -116,7 +157,8 @@ docker run -d -p 8080:8080 --name go-proxy-bingai --restart=unless-stopped adams
PORT=8080
RAILWAY_DOCKERFILE_PATH=docker/Dockerfile
```
一键部署,点这里 => [![Deploy on Railway](https://railway.app/button.svg)](https://railway.app/template/uIckWS?referralCode=BBs747)
一键部署,点这里 => [![Deploy on Railway](https://railway.app/button.svg)](https://railway.app/template/uIckWS?referralCode=BBs747)
![Railway 模板部署](./docs/img/railway-1.png)
@ -142,12 +184,11 @@ RAILWAY_DOCKERFILE_PATH=docker/Dockerfile
![Render 域名](./docs/img/render-2.png)
## TODO
- [ ] 撰写
- [x] 撰写
- [ ] Vue3 重构
- [ ] 提示词
- [ ] 保存历史消息
- [ ] 导出消息到本地Markdown、图片、PDF
- [ ] 简单访问权限控制
- [ ] 简单访问权限控制

View File

@ -9,10 +9,12 @@ import (
"net/http"
"net/http/httputil"
"net/url"
"os"
"strconv"
"strings"
"github.com/andybalholm/brotli"
"golang.org/x/net/proxy"
)
var (
@ -164,7 +166,35 @@ func NewSingleHostReverseProxy(target *url.URL) *httputil.ReverseProxy {
// }
// 代理请求 请求回来的内容 报错自动调用
return &httputil.ReverseProxy{Director: director, ModifyResponse: modifyFunc, ErrorHandler: errorHandler}
reverseProxy := &httputil.ReverseProxy{
Director: director,
ModifyResponse: modifyFunc,
ErrorHandler: errorHandler,
}
// socks
socksUrl := os.Getenv("Go_Proxy_BingAI_SOCKS_URL")
if socksUrl != "" {
socksUser := os.Getenv("Go_Proxy_BingAI_SOCKS_USER")
socksPwd := os.Getenv("Go_Proxy_BingAI_SOCKS_PWD")
var socksAuth *proxy.Auth
if socksUser != "" && socksPwd != "" {
socksAuth = &proxy.Auth{
User: socksUser,
Password: socksPwd,
}
}
s5Proxy, err := proxy.SOCKS5("tcp", socksUrl, socksAuth, proxy.Direct)
if err != nil {
panic(err)
}
tr := &http.Transport{
Dial: s5Proxy.Dial,
}
reverseProxy.Transport = tr
}
return reverseProxy
}
func replaceResBody(originalBody string, originalScheme string, originalHost string) string {

View File

@ -10,6 +10,10 @@ services:
restart: unless-stopped
ports:
- 8080:8080
# environment:
# - Go_Proxy_BingAI_SOCKS_URL=192.168.0.88:1070
# - Go_Proxy_BingAI_SOCKS_USER=xxx
# - Go_Proxy_BingAI_SOCKS_PWD=xxx
# go-proxy-bingai:
# # 镜像名称
@ -25,7 +29,11 @@ services:
# networks:
# - MyNetwork
# ports:
# - 8888:8080
# - 8888:8080
# environment:
# - Go_Proxy_BingAI_SOCKS_URL=192.168.0.88:1070
# # - Go_Proxy_BingAI_SOCKS_USER=xxx
# # - Go_Proxy_BingAI_SOCKS_PWD=xxx
# networks:
# MyNetwork:

5
go.mod
View File

@ -2,4 +2,7 @@ module adams549659584/go-proxy-bingai
go 1.20
require github.com/andybalholm/brotli v1.0.5
require (
github.com/andybalholm/brotli v1.0.5
golang.org/x/net v0.10.0
)

2
go.sum
View File

@ -1,2 +1,4 @@
github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs=
github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
// 引入workbox 框架
importScripts('./js/sw/workbox-sw.js');
const SW_VERSION = 'v1.4.2';
const SW_VERSION = 'v1.5.0';
const CACHE_PREFIX = 'BingAI';
workbox.setConfig({ debug: false, logLevel: 'warn' });
@ -61,7 +61,7 @@ workbox.precaching.precacheAndRoute([
// html
{
url: '/web/chat.html',
revision: '2023.05.08',
revision: '2023.05.09',
},
{
url: '/web/compose.html',

View File

@ -16,7 +16,7 @@ var IS_DEBUG_MODE bool
var WEB_PATH_MAP = make(map[string]bool)
func init() {
IS_DEBUG_MODE = os.Getenv("Go-Proxy-BingAI-Debug") != ""
IS_DEBUG_MODE = os.Getenv("Go_Proxy_BingAI_Debug") != ""
var err error
if IS_DEBUG_MODE {