WarpGPT

WarpGPT

多功能ChatGPT接口代理与转换工具

WarpGPT是一个开源的ChatGPT接口代理工具,通过前端逆向技术绕过Cloudflare限制,并提供官方API代理和接口转换功能。项目支持多种端口,包括前端逆向接口、WebSocket通信和标准API转换,实现了灵活的访问方式。WarpGPT还具备session刷新和ArkoseToken获取功能,提高了使用便利性。目前主要支持GPT-3.5模型,对GPT-4的支持仍在完善中。

Warp-GPTChatGPTAPI代理Go语言逆向工程Github开源项目

Warp-GPT

由于需要准备毕业论文而没有时间修复问题,项目已归档。

作为一个刚开始学习Go语言的练手项目,仅供个人使用

  • 对ChatGPT前端进行逆向工程,实现绕过Cloudflare
  • 代理官方API
  • 将前端接口转换为标准API(通过access_token实现标准API的访问) 端口列表
/backend-api/* (前端逆向接口)
/backend-api/conversation/ws (前端WS逆向为原数据流格式)
/api/* (前端逆向接口)
/public-api/* (前端逆向接口)
/v1/* (官方api代理)
/r/v1/chat/completions (前端接口转标准api,支持流式)
/r/v1/chat/completions/ws (前端WS转标准api,支持流式)
/r/ws/v1/chat/completions (功能相同,提供兼容)
/r/v1/images/generations (前端接口转标准api,不支持流式,仅支持gpt-4的账户)
/getsession (实现__Secure-next-auth.session-token刷新session,返回session,或输入用户名和密码输出session)
/token (获取ArkoseToken)

目前ws逆向仅支持3.5,4存在一些问题,取决于ip纯度,纯度高就能输出

/r/v1/chat/completions 方法:["GET", "POST", "OPTIONS"]
输入:
{
  "model": "gpt-3.5-turbo-16k",
  "messages": [
    {
      "role": "user",
      "content": "你能做什么"
    }
  ]
}
输出:
{
    "id": "chatcmpl-m3mYrjKTZuoNARfQerON95UJlA9XSWBi",
    "object": "chat.completion",
    "created": 1701011706,
    "model": "gpt-3.5-turbo-16k",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "我可以执行各种任务并提供各种主题的信息。以下是我能做的一些事情:\n\n1. 回答问题:我可以提供各种主题的信息,包括科学、历史、技术、数学等。\n\n2. 生成文本:我可以为各种目的生成文本,如写文章、创作故事、撰写邮件等。\n\n3. 语言翻译:我可以将文本从一种语言翻译成另一种语言。\n\n4. 数学辅导:我可以帮助进行数学计算、解方程以及提供解释。\n\n5. 编程帮助:我可以协助解答编码和编程相关的问题。\n\n6. 写作辅助:我可以帮助改进语法和提供写作建议,包括编辑和校对。\n\n7. 通用知识:我可以提供各种主题的一般知识和事实。\n\n8. 推荐:我可以为书籍、电影、音乐、旅游目的地等提供推荐。\n\n9. 对话和聊天:我可以就各种话题进行日常对话和聊天。\n\n10. 学习和教育:我可以协助学习并为学术科目提供解释。\n\n11. 解决问题:我可以帮助你头脑风暴想法、解决问题和做决定。\n\n12. 琐事和测验:我可以创建并参与琐事测验,回答琐事问题。\n\n请注意,我没有实时信息访问权限,我的知识更新截止到2022年1月,所以一些信息可能已过时,我无法提供当前新闻或事件。如果你有特定的任务或问题,请随时询问,我会尽力协助你!"
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 0,
        "completion_tokens": 0,
        "total_tokens": 0
    }
}
/r/v1/images/generations 方法:["GET", "POST", "OPTIONS"]
输入:
{
  "model": "dall-e-3",
  "prompt": "一只可爱的小海獭",
  "n": 1,
  "size": "1024x1024"
}
输出:
{
  "created": 1701014049,
  "data": [
    {
      "revised_prompt": "一只可爱的小海獭,看起来毛茸茸且惹人喜爱,有着大大的好奇眼睛,正仰躺在平静的蓝色海洋中。海獭的小爪子里握着一个小贝壳,它湿润的皮毛在阳光下闪闪发光。背景是一片宁静的海景,有着轻柔的波浪和晴朗的天空。",
"url": "https://files.oaiusercontent.com/file-fqEmsHBijHGkBKo0CnYIAfCJ?se=2023-11-26T16%3A54%3A09Z&sp=r&sv=2021-08-06&sr=b&rscc=max-age%3D31536000%2C%20immutable&rscd=attachment%3B%20filename%3Daa87dac2-8142-419d-9fe1-afa90c0a376e.webp&sig=xjwmZhzC3fZSF7V6TJ5hTWkmxBOMiVQKs0v/wTJRvAM%3D"
    }
  ]
}
/getsession 方法:["POST"]
输入:
{
	"refreshCookie":""
}
或
{
	"username":"",
  "password":""
}
输出:
{
    "user": {
        "id": "",
        "name": "",
        "email": "",
        "image": "",
        "picture": "",
        "idp": "auth0",
        "iat": 1701014297,
        "mfa": false,
        "groups": [],
        "intercom_hash": ""
    },
    "expires": "2024-02-24T15:58:17.821Z",
    "accessToken": "",
    "authProvider": "auth0",
    "models": [
        {
            "slug": "text-davinci-002-render-sha",
            "max_tokens": 8191,
            "title": "默认(GPT-3.5)",
            "description": "我们最快的模型,适合大多数日常任务。",
            "tags": [
                "gpt3.5"
            ],
            "capabilities": {},
            "product_features": {}
        }
    ],
    "refreshCookie": ""
}
/token/:id 方法:["GET"]
例如:/token/0A1D34FC-659D-4E23-B17B-694DCFCF6A6C
输出:
{
    "token": ""
}

代码部署

配置文件

  • 在harPool目录中添加har文件,实现登录验证和gpt4对话验证(获取har教程
  • 复制一份.env.temp文件,并将其重命名为.env,修改配置项后保存
proxy = "http://127.0.0.1:10809" #代理地址(可选) port = 5000 #程序运行端口 host = '127.0.0.1' #可访问IP,0.0.0.0允许所有IP verify = false #是否对访问进行验证 auth_key = "" #若开启访问验证,则需要在Header中添加AuthKey字段,且值为auth_key的值才能访问(可选) arkose_must = false #是否强制gpt3.5进行验证 OpenAI_HOST = "chat.openai.com" #openai网页api接口地址(可选) openai_api_host = "api.openai.com" #openai官方api接口(可选) proxy_pool_url="" #ipidea代理池链接(可选) #示例http://api.proxy.ipidea.io/getProxyIp?num=10&return_type=json&lb=1&sb=0&flow=1&regions=us&protocol=http,根据访问频次设置num值 log_level = "debug" #日志等级 redis_address = "127.0.0.1:6379" #redis地址(若不开启代理池可选) redis_passwd = "" #redis密码 redis_db = 0 #选择的redis数据库

其中proxy_pool_url使用的是ipidea的代理池,注册赠送100M流量,无限IP,有效期一个月,足够用于测试 使用代理池后需要填写redis信息,redis版本需要7或以上

运行

go build && ./WarpGPT

Docker部署

首先克隆代码

git clone https://github.com/oliverkirk-sudo/WarpGPT.git cd WarpGPT

正确配置.env文件,在harPool中放入har文件 (其中host应该设置为0.0.0.0)

docker build -t warpgpt . docker run -d -p 5000:5000 warpgpt

许可证

Apache-2.0

编辑推荐精选