linweiyuan / go-chatgpt-api

一个尝试绕过 Cloudflare 来使用 ChatGPT 接口的程序
MIT License
1.43k stars 445 forks source link

频繁出现 [OpenAI] 服务器拒绝访问,请稍后再试 | Server refused to access, please try again later #93

Closed huangwb8 closed 1 year ago

huangwb8 commented 1 year ago

我很早就开始使用本项目了 (ฅ´ω`ฅ)

昨天我看到本项目的更新,即不再需要chatgpt-proxy-server,所以我尝试了最新的方案。

我使用的go-chatgpt-api版本是:

[
    {
        "Id": "952e6c260ebd9c6c812836b93cc96308c11be589800a85ba4ce9f29f377f52be",
        "Created": "2023-04-29T23:54:32.930107483Z",
        "Path": "/app/go-chatgpt-api",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 466863,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2023-04-29T23:54:34.372380033Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:52df78ab127aafeccae0c2d8ae2d2415cf9e4e752258385f3c93888480f109fc",
        ...
    }
]

但是,我发现它会频繁出现报错: [OpenAI] 服务器拒绝访问,请稍后再试 | Server refused to access, please try again later。刷新一下可以正常输出。这和以前我们直接访问网页时非常相似。 我感觉没有之前使用chatgpt-proxy-server的时候稳定。

不知大家有没有这种情况?

Beckjiang commented 1 year ago

我遇到同样的问题403,使用了warp也一样。机器在东京

huangwb8 commented 1 year ago

@Beckjiang

是啊,作者昨天一波更新,以为已经稳定了,大意了!

PwBrHcGx84

希望大佬 @linweiyuan 可以出一个稳定的旧版本镜像,使用旧的方案,让咱们过渡一下。 旧的方案很稳 (ฅ´ω`ฅ)

现在只有latest,不知道怎么下载旧的镜像

linweiyuan commented 1 year ago

刷新一下是重启 API 吗?

huangwb8 commented 1 year ago

刷新一下是重启 API 吗?

我是这样做的。 之前的版本的docker-compose.yml内容是:

services:
  go-chatgpt-api:
    container_name: go-chatgpt-api
    image: linweiyuan/go-chatgpt-api
    ports:
      - 8080:8080 # 宿主机8080端口可按需改为其它端口
    environment:
      - GIN_MODE=release
      - CHATGPT_PROXY_SERVER=http://chatgpt-proxy-server:9515
      - NETWORK_PROXY_SERVER=socks5://chatgpt-proxy-server-warp:65535
    depends_on:
      - chatgpt-proxy-server
      - chatgpt-proxy-server-warp
    restart: unless-stopped

  chatgpt-proxy-server:
    container_name: chatgpt-proxy-server
    image: linweiyuan/chatgpt-proxy-server
    environment:
      - LOG_LEVEL=INFO
    restart: unless-stopped

  chatgpt-proxy-server-warp:
    container_name: chatgpt-proxy-server-warp
    image: linweiyuan/chatgpt-proxy-server-warp
    environment:
      - LOG_LEVEL=INFO
    restart: unless-stopped

昨天,我用docker-compose pull更新镜像后,用的是新的方案:

services:
  go-chatgpt-api:
    container_name: go-chatgpt-api
    image: linweiyuan/go-chatgpt-api
    ports:
      - 8080:8080
    environment:
      - GIN_MODE=release
      - GO_CHATGPT_API_PROXY=socks5://chatgpt-proxy-server-warp:65535
    depends_on:
      - chatgpt-proxy-server-warp
    restart: unless-stopped

  chatgpt-proxy-server-warp:
    container_name: chatgpt-proxy-server-warp
    image: linweiyuan/chatgpt-proxy-server-warp
    environment:
      - LOG_LEVEL=INFO
    restart: unless-stopped

这个新的方案是非常不稳定的,经常出现[OpenAI] 服务器拒绝访问,请稍后再试 | Server refused to access, please try again later

huangwb8 commented 1 year ago

刷新一下是重启 API 吗?

其实不太懂大佬您要问什么。 我使用的并不是API模式,而是Access Token的模式。 API模式我不需要用这个反向代理。


我知道您问什么了 ~ 刷新一下是指如果chatgpt返回了一个错误,是有一个刷新按钮可以刷新的;应该是重新发送提问的请求吧。 并不是重启api。

nephen commented 1 year ago

我的报403

[GIN] 2023/04/30 - 07:52:01 | 403 |  1.762843867s |             ::1 | GET      "/conversations?limit=5&offset=0"
huangwb8 commented 1 year ago

我请小伙伴build了一个旧版本的go-chatgpt-api,供大家过渡使用:

docker pull ddsderek/go-chatgpt-api:latest

使用旧的方法和参数:

services:
  go-chatgpt-api:
    container_name: go-chatgpt-api
    image: ddsderek/go-chatgpt-api
    ports:
      - 8080:8080 # 宿主机8080端口可按需改为其它端口
    environment:
      - GIN_MODE=release
      - CHATGPT_PROXY_SERVER=http://chatgpt-proxy-server:9515
      - NETWORK_PROXY_SERVER=socks5://chatgpt-proxy-server-warp:65535
    depends_on:
      - chatgpt-proxy-server
      - chatgpt-proxy-server-warp
    restart: unless-stopped

  chatgpt-proxy-server:
    container_name: chatgpt-proxy-server
    image: linweiyuan/chatgpt-proxy-server
    restart: unless-stopped
    environment:
      - LOG_LEVEL=INFO

  chatgpt-proxy-server-warp:
    container_name: chatgpt-proxy-server-warp
    image: linweiyuan/chatgpt-proxy-server-warp
    restart: unless-stopped
    environment:
      - LOG_LEVEL=INFO

希望大佬们能尽快修复这个bug ヾ(≧∇≦*)ゝ 加油

linweiyuan commented 1 year ago

是超过30分钟不用就 403,还是用着用着突然 403

试出来了

huangwb8 commented 1 year ago

是超过30分钟不用就 403,还是用着用着突然 403

不用30分钟。 可能有1-2分钟不用就会出现。所以会比较annoying

nephen commented 1 year ago

~是超过30分钟不用就 403,还是用着用着突然 403~

试出来了

我没用镜像,没有成功过,都是403,不知道啥原因

linweiyuan commented 1 year ago

我在本地挂机长时间正常,服务器上挂机2分钟403,感觉和 warp 有关

@nephen 全部接口都403吗?还是平时只用一个接口

nephen commented 1 year ago

conversations接口403,其他的不知道,获取不了会话,conversation接口也用不了

nephen commented 1 year ago

我在本地挂机长时间正常,服务器上挂机2分钟403,感觉和 warp 有关

@nephen 全部接口都403吗?还是平时只用一个接口

本地跑的裸程序也正常吗?我的环境跑原来的版本是正常的

linweiyuan commented 1 year ago

应该是没有配 GO_CHATGPT_API_PROXY

nephen commented 1 year ago

应该是没有配 GO_CHATGPT_API_PROXY

配了的,我直接放在境外服务器跑也不行

linweiyuan commented 1 year ago

之前的最新分支:https://github.com/linweiyuan/go-chatgpt-api/commits/legacy

整了个 linweiyuan/go-chatgpt-api:legacy,或者你自己打个先用

有点玄学,我现在服务器挂机十几分钟也没有 403 了

dqzboy commented 1 year ago

我这边测试了下最新版本,没出现403;环境国内服务器+代理

aldington-david commented 1 year ago

没用warp,没复现

huangwb8 commented 1 year ago

有点玄学,我现在服务器挂机十几分钟也没有 403 了

大佬在使用的时候有用WARP吗?

linweiyuan commented 1 year ago

经过测试,总结了这么几个情况:

目前来看,本地跑或者服务器上加魔法是最稳的,上了 warp 就会 403 (不上也会 403,但那个是 1020)

服务器 403 的时候输出的 IP 地址也是 Cloudflare 的地址,但少了个 cookie:_cfuvid

目前来看,问题出现在 warp 上,但是我并不熟这个东西,所以可能会尝试用一些奇怪的方法来修复

有兴趣可以找那些一键 warp 脚本试下好不好使,还没试过

相同 warp 镜像,旧版为什么可以,也不清楚

huangwb8 commented 1 year ago

经过测试,总结了这么几个情况:

  • 本地镜像+魔法,正常
  • 本地二进制+魔法,正常
  • 服务器上镜像+魔法,正常
  • 服务器上二进制+魔法,正常
  • 服务器上镜像+WARP,有时 403 但重试 200,有时一直 200
  • 服务器上二进制+WARP,一直 403

目前来看,本地跑或者服务器上加魔法是最稳的,上了 warp 就会 403 (不上也会 403,但那个是 1020)

服务器 403 的时候输出的 IP 地址也是 Cloudflare 的地址,但少了个 cookie:_cfuvid

目前来看,问题出现在 warp 上,但是我并不熟这个东西,所以可能会尝试用一些奇怪的方法来修复

有兴趣可以找那些一键 warp 脚本试下好不好使,还没试过

相同 warp 镜像,旧版为什么可以,也不清楚

我属于这种情况: 服务器上镜像+WARP,有时 403 但重试 200,有时一直 200

nephen commented 1 year ago

经过测试,总结了这么几个情况:

  • 本地镜像+魔法,正常
  • 本地二进制+魔法,正常
  • 服务器上镜像+魔法,正常
  • 服务器上二进制+魔法,正常
  • 服务器上镜像+WARP,有时 403 但重试 200,有时一直 200
  • 服务器上二进制+WARP,一直 403

目前来看,本地跑或者服务器上加魔法是最稳的,上了 warp 就会 403 (不上也会 403,但那个是 1020)

服务器 403 的时候输出的 IP 地址也是 Cloudflare 的地址,但少了个 cookie:_cfuvid

目前来看,问题出现在 warp 上,但是我并不熟这个东西,所以可能会尝试用一些奇怪的方法来修复

有兴趣可以找那些一键 warp 脚本试下好不好使,还没试过

相同 warp 镜像,旧版为什么可以,也不清楚

我没用warp,就是本地二进制加魔法403

{403 Forbidden 403 HTTP/2.0 2 0 map[Alt-Svc:[h3=":443"; ma=86400, h3-29=":443"; ma=86400] Cache-Control:[private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0] Cf-Mitigated:[challenge] Cf-Ray:[7bfe502ab9eb2ad3-LAX] Content-Encoding:[br] Content-Type:[text/html; charset=UTF-8] Cross-Origin-Embedder-Policy:[require-corp] Cross-Origin-Opener-Policy:[same-origin] Cross-Origin-Resource-Policy:[same-origin] Date:[Sun, 30 Apr 2023 08:11:17 GMT] Expires:[Thu, 01 Jan 1970 00:00:01 GMT] Permissions-Policy:[accelerometer=(),autoplay=(),camera=(),clipboard-read=(),clipboard-write=(),fullscreen=(),geolocation=(),gyroscope=(),hid=(),interest-cohort=(),magnetometer=(),microphone=(),payment=(),publickey-credentials-get=(),screen-wake-lock=(),serial=(),sync-xhr=(),usb=()] Referrer-Policy:[same-origin] Server:[cloudflare] Set-Cookie:[__cf_bm=E1BLY7p8.r8AiSwwz07rG1uoWGffED9D6MXcR63CYIk-1682842277-0-AY9jQg8ck6oe7iQmM3/4COc4YGr+RJhLeMBFcYuvKFpx84cQbst3/rOQ/9mIPcPWooT50f+JkcQ/7UujLbi1gxo=; path=/; expires=Sun, 30-Apr-23 08:41:17 GMT; domain=.chat.openai.com; HttpOnly; Secure; SameSite=None] Vary:[Accept-Encoding] X-Frame-Options:[SAMEORIGIN] X-Robots-Tag:[nofollow]] 0xc000036040 -1 [] false true map[] 0xc0004de500 0xc0003b4270}
linweiyuan commented 1 year ago
Client, _ = tls_client.NewHttpClient(tls_client.NewNoopLogger(), []tls_client.HttpClientOption{
    tls_client.WithCookieJar(tls_client.NewCookieJar()),
    tls_client.WithDebug(),
}...)

这种 403,Access denied:

2023-04-30_16-24

这种 403,挂机 2 分钟左右出现,重试 200:

2023-04-30_16-26

AKGO47 commented 1 year ago

给大哥提供连个线索 不知道有没有帮助 (和本项目无关) https://p3terx.com/archives/cloudflare-warp-configuration-script.html https://mailberry.com.cn/2023/02/cf-solve-it-completely-error-code-1020-by-warp/ 我在仅使用xray扶墙 然后把openai.com分流到127.0.0.1:40000上 这种情况下 开无痕模式 第一次登录还是要通过一个cf真人校验

linweiyuan commented 1 year ago

给大哥提供连个线索 不知道有没有帮助 (和本项目无关) https://p3terx.com/archives/cloudflare-warp-configuration-script.html https://mailberry.com.cn/2023/02/cf-solve-it-completely-error-code-1020-by-warp/ 我在仅使用xray扶墙 然后把openai.com分流到127.0.0.1:40000上 这种情况下 开无痕模式 第一次登录还是要通过一个cf真人校验

目前基本上就是这样做的,相同的做法,老版本(基于浏览器)正常,新版本(API 直连)有时可以有时不可

AKGO47 commented 1 year ago

还有个建议 大哥你的容器镜像 能不能做个版本管理 现在只有latest 实在是难受 一不知道是否有更新 二没办法回退 望采纳 :)

huangwb8 commented 1 year ago

还有个建议 大哥你的容器镜像 能不能做个版本管理 现在只有latest 实在是难受 一不知道是否有更新 二没办法回退 望采纳 :)

赞同。 根据我使用bitwarden镜像的经验,开发者一般会有一个test的tag,该tag会频繁更新,表明容器处于beta版本。而latest和最新版本号是同步发布的,一般代表stable版本。 建议 @linweiyuan 大佬采用这种方式维护go-chatgpt-api,这样会比较规范些(ฅ´ω`ฅ)

linweiyuan commented 1 year ago

这个汇总有例子如何让镜像自动更新到最新:https://github.com/linweiyuan/go-chatgpt-api/issues/74

更新了之后,其实旧镜像不删还是在本地的,改回来名字就可以直接用了

下回打包除了 latest,再打个当前时间戳

linweiyuan commented 1 year ago

这个 bug 已修复

huangwb8 commented 1 year ago

这个 bug 已修复

大佬方便大致讲一下问题发生在哪里吗?

Beckjiang commented 1 year ago

更新了linweiyuan/go-chatgpt-api镜像,还是403,大家更新后OK吗

huangwb8 commented 1 year ago

更新了linweiyuan/go-chatgpt-api镜像,还是403,大家更新后OK吗

比昨天要稳定很多,暂时只出现了1次网络连接问题。 如果是403,说明你的安装或使用的过程有某些问题。

linweiyuan commented 1 year ago

这个 bug 已修复

大佬方便大致讲一下问题发生在哪里吗?

https://github.com/linweiyuan/go-chatgpt-api/commit/cb31b2e93d21010162f6ccf97992b97e212e9e61

测试的时候发现只要频繁刷新,就不会 403,旧版本因为浏览器的局限性强制每分钟后台自动刷一次,所以旧版本没有 403

那么我抄了过来,发现靠谱,但是如果问具体的原理,不清楚,我把它称为一个类似保持心跳的魔改功能

huangwb8 commented 1 year ago

@linweiyuan

谢谢。 虽然简单粗暴但有效。点赞 (ฅ´ω`ฅ)

linweiyuan commented 1 year ago

更新了linweiyuan/go-chatgpt-api镜像,还是403,大家更新后OK吗

测试的时候,程序启动完去调用,有机会会出现 403,但是只要 200 了,后面就没有看到了

我也感觉是哪里的配置不对

huangwb8 commented 1 year ago

@linweiyuan

今天测试发现,刚刚开始布署的时候挺正常。 但是到后面,会持续出现 频繁出现 [OpenAI] 服务器拒绝访问,请稍后再试,完全没法使用。不能通过重启该docker stack解决。

部署方案是服务器上镜像+WARP

问题应该还是没有实质性解决。重开issue Σ( ° △ °|||)︴

nephen commented 1 year ago

很奇怪,我的就没有成功过,裸程序+魔法跑的,现在一直是报500错误

huangwb8 commented 1 year ago

很奇怪,我的就没有成功过,裸程序+魔法跑的,现在一直是报500错误

@nephen

你可以按我的博客教程操作一下: Docker系列 基于OpenAI API和Access Token自建ChatGPT

旧方法还是挺稳的,新方法不好说 Σ( ° △ °|||)︴

linweiyuan commented 1 year ago

有人用旧方法 CPU 不知为何长时间占用 100%,被 VPS 商封了号,但我测试占用都比较低

我用新镜像早上到现在挂机,测试依旧正常


服务器容器+WARP:

2023-04-30_16-26

本地裸跑+魔法:

2023-05-01_21-28

本地容器+魔法:

2023-05-01_21-29


@huangwb8 他非常熟悉旧版本,是本项目代码贡献者之一。。。


@nephen 不是 403 吗,怎么变 500 了,回到 403 的场景,试下加这一行代码看下会不会 200 req.Header.Set("Cookie", "cf_clearance=xxx; _cfuvid=xxx;"),值从官方网站拿,有点怀疑和这个有关,有另外的人也是一直 403

huangwb8 commented 1 year ago

@linweiyuan

是的,我知道的,因为 @nephen 的角色是author呀 (ฅ´ω`ฅ)

我之前旧方法也出现过CPU占用很高,但后面比较少出现了。 现在占用还好吧。推测与磁盘空间大小/SWP大小有关。

nephen commented 1 year ago

有人用旧方法 CPU 不知为何长时间占用 100%,被 VPS 商封了号,但我测试占用都比较低

我用新镜像早上到现在挂机,测试依旧正常

服务器容器+WARP:

2023-04-30_16-26

本地裸跑+魔法:

2023-05-01_21-28

本地容器+魔法:

2023-05-01_21-29

@huangwb8 他非常熟悉旧版本,是本项目代码贡献者之一。。。

@nephen 不是 403 吗,怎么变 500 了,回到 403 的场景,试下加这一行代码看下会不会 200 req.Header.Set("Cookie", "cf_clearance=xxx; _cfuvid=xxx;"),值从官方网站拿,有点怀疑和这个有关,有另外的人也是一直 403

  1. 更新到最新的是出现500错误,刚又去看了下,是我的出口ip变了,导致魔法有问题,现在是403了,我试了设置cookie也不行
  2. 我用最新的打标签的那个旧版本cpu是正常的,如果再老一点是有可能cpu一直高的,因为没有做异常退出处理
linweiyuan commented 1 year ago

看,我本地裸跑无论如何都是正常的,代码也是最新的,也无未提交的改动

这个 403 目前我无法测试,因为没遇到,所以可能 403 的同学先用回旧版

或者方便的话提供一下你们目前用的网络代理供我测试一下(不确定是否有关),或者有条件的可以自行调试

https://user-images.githubusercontent.com/49076004/235468576-2e79c145-ae90-4097-ba19-8d1f5cdda6c4.mp4

fsyllkn commented 1 year ago

遇到奇怪的问题,微软azure服务器,curl检测和实际节点都可以访问openai。使用单独新镜像,只有一个容器提供反代服务接口,az200试用账号开的机器,可以成功访问,偶尔报403或者429;使用教育账号开的az服务器和RN小鸡,报错500.完全相同的配置文件: version: "3" services: go-chatgpt-api: container_name: go-chatgpt-api image: linweiyuan/go-chatgpt-api ports:

linweiyuan commented 1 year ago

我测试的时候,500 是 EOF,就是最近亚洲节点访问直接报错,像域名不存在的效果

你那么多服务器,有没有可能给一台我测试下

AKGO47 commented 1 year ago

我测试的时候,500 是 EOF,就是最近亚洲节点访问直接报错,像域名不存在的效果

你那么多服务器,有没有可能给一台我测试下

我提供一台新加坡的机器给你测试 怎么联系你

linweiyuan commented 1 year ago

发你的微信到邮箱 root@linweiyuan.com,我加你

njukiller commented 1 year ago

我用新版的镜像也有这个403的问题,昨天刚配置好的时候是ok的,但是今天就不行了,一直403,重新pull和restart都没用,换回老版镜像就好了。环境是AWS服务器+WARP

403的时候,在WARP上可以输出cloudflare IP,同时访问openai没有1020错误

linweiyuan commented 1 year ago

感觉是一时一时的,刚才 403 的测试机,现在又正常了

njukiller commented 1 year ago

可能需要拿到debug里面403和200时候的http request看看区别在哪里

nephen commented 1 year ago

最新的版本正常了,没有403了,赞