搞懂并自主搭建ChatGPT的Reverse代理

在本文中,我们将介绍如何通过Reverse反向代理来访问ChatGPT官网服务,以及如何使用Go和Docker技术进行自行搭建。

ChatGPT的代理的两种情况

在使用ChatGPT,我们会遇到需要进行反向代理的情况。大体上,反向代理分为API代理和Reverse代理。

  • API代理:它是用于调用OpenAI提供的ChatGPT的API接口api.openai.com而建立的代理,通常情况下,只需要使用范围内的国家区域的服务器,就可以直接进行反向代理。
  • Reverse代理:它是用于反代OpenAi的ChatGPT官网chat.openai.com而建立的代理。大多数情况下,需要想办法解决Cloudflare的问题,反代难度相比API代理更高。

本文主要讨论的是第二种代理。

公共Reverse代理

在实际使用中,如果你没有足够的资源或者不希望自己去搭建反向代理,你可以选择使用公共的反向代理。这里有两个公共的反向代理服务:

  • https://ai.fakeopen.com/api/conversation
  • https://api.pawan.krd/backend-api/conversation

这两个公共反向代理服务可以帮你直接访问ChatGPT官网服务,无需自行搭建代理服务。

自己搭建Reverse代理

然而,如果你希望有更大的控制权,或者出于安全性的考虑,你也可以自行搭建反向代理。下面我们将通过go-chatgpt-api项目和warp-cli项目来演示如何搭建。

首先安装Docker和Docker Compose,然后创建以下的docker-compose.yml文件:

version: "3.1"

services:
  gochatgptapi:
    image: linweiyuan/go-chatgpt-api:latest
    container_name: gochatgptapi
    restart: unless-stopped
    ports:
      - 8080:8080
    environment:
      - GO_CHATGPT_API_PROXY=socks5://warpcli:65535
    depends_on:
      - warpcli
    
  warpcli:
    image: surenkid/warp-cli:latest
    container_name: warpcli
    restart: unless-stopped
    ports:
      - 65535:65535

这段配置创建了两个服务:gochatgptapi和warpcli。其中,gochatgptapi是Reverse反向代理服务器,它将请求转发到warpcli。warpcli是实现socks5协议的Cloudflare WARP客户端,主要用于将来自gochatgptapi的请求通过cloudflare的warp节点转发到真正的ChatGPT服务端。如果你所在的服务器可以直接访问chat.openai.com官网,则不需要warp-cli这个服务。

如果最新版的gochatgptapi无法稳定使用,也可以使用旧版,旧版基于chromedrive,内存占用会更大一些:

version: "3.1"

services:
  gochatgptapi:
    image: surenkid/go-chatgpt-api:latest
    container_name: gochatgptapi
    hostname: gochatgptapi
    restart: unless-stopped
    ports:
      - 8080:8080
    environment:
      - GIN_MODE=release
      - CHATGPT_PROXY_SERVER=http://undetectedchromedriver:9515
      - NETWORK_PROXY_SERVER=socks5://warpcli:65535
    depends_on:
      - undetectedchromedriver2ktsee
      - warpcli2ktsee

  undetectedchromedriver:
    image: surenkid/undetected-chromedriver:latest
    container_name: undetectedchromedriver
    hostname: undetectedchromedriver
    restart: unless-stopped

  warpcli:
    image: surenkid/warp-cli:latest
    container_name: warpcli
    hostname: warpcli
    restart: unless-stopped
    ports:
      - "65535:65535"

在docker-compose.yml文件所在的目录运行

docker-compose up -d

这个命令将启动两个容器:gochatgptapi和warpcli。然后gochatgptapi服务将在本地的8080端口上监听,warpcli服务将在本地的65535端口上监听。

这样就成功地在本地搭建了一个ChatGPT的Reverse反向代理服务。你可以通过访问http://localhost:8080来测试这个服务是否工作正常。例如:

  • http://localhost:8080/chatgpt/conversation

更多该服务的接口,请参考作者的项目页面查看。

需要注意的是,使用这种方式搭建的反向代理服务,由于没有进行任何安全性的配置,因此建议仅在本地或者内网环境中使用。如果你希望将这个服务公开到互联网上,那么你需要配置相应的安全性措施,比如使用HTTPS、设置访问控制等。

希望通过本文,能帮助你理解反向代理,并能自己动手搭建一个反向代理服务。

评论

Popular Posts

Microsoft Office 2019(含Visio和Project)官方镜像下载

装修基础报价

太阳的后裔 Descendants of the Sun

Microsoft 365安装包下载(Office桌面应用)

ThinkPHP - 开源PHP框架

Discuz! 5.0 Lite 精简版(仅500多k大小)

实用PPT设计相关资源整合