Skip to content
This repository has been archived by the owner on Jul 14, 2024. It is now read-only.

3 Http 服务

gngpp edited this page Mar 1, 2024 · 3 revisions

公开接口, * 表示任意URL后缀

  • ChatGPT-API

    • /public-api/*
    • /backend-api/*
  • OpenAI-API

    • /v1/*
  • Platform-API

    • /dashboard/*
  • Files-API

    • /files/*

    图片和文件上下传API代理,/backend-api/files接口返回的API已经转为/files/*

  • Arkose-API

    • /auth/arkose_token/:pk

    其中pk为arkose类型的ID,比如请求GPT4的Arkose,/auth/arkose_token/35536E1E-65B4-4D96-9D97-6ADB7EFF8147,若GPT-4开始强制blob参数,需要带上AccessToken -> /auth/arkose_token/35536E1E-65B4-4D96-9D97-6ADB7EFF8147?blob=your_access_token

  • Authorization

    除了登录,都使用Authorization: Bearer xxxxPython Example

    • 登录: /auth/token,表单option可选参数,默认为web登录,返回AccessTokenSession;参数为apple/platform,返回AccessTokenRefreshToken。其中Apple平台ChatGPT App登录方式,需要提供preauth_cookie端点,启动参数设置--preauth-endpoint https://example.com/api,推荐使用xyhelper提供的免费端点: https://tcr9i.xyhelper.cn/auth/preauth
    • 刷新 RefreshToken: POST /auth/refresh_token,支持platform/apple撤销
    • 撤销 RefreshToken: POST /auth/revoke_token, 支持platform/apple撤销
    • 刷新 Session: POST /auth/refresh_session,使用web登录返回的Session刷新
    • 获取 Sess token: POST /auth/sess_token,使用platformAccessToken获取
    • 获取 Billing: GET /auth/billing,使用sess token获取

API文档

  • Platfrom API doc
  • Backend API doc1 or doc2

    例子只是部分,根据/backend-api/*代理了官方API

基本服务

  • ChatGPT WebUI
  • 公开ChatGPT-API/OpenAI-API代理
  • API前缀与官方一致
  • 可接入第三方客户端
  • 可接入IP代理池,提高并发
  • 支持获取RefreshToken
  • 支持以HAR格式文件特征池

参数说明

默认工作目录~/.ninja

  • --level,环境变量 LOG,日志级别: 默认info
  • --bind,环境变量 BIND, 服务监听地址: 默认0.0.0.0:7999,
  • --tls-cert,环境变量 TLS_CERT,TLS证书公钥,支持格式: EC/PKCS8/RSA
  • --tls-key,环境变量 TLS_KEY,TLS证书私钥
  • --enable-webui, 默认关闭自带的WebUI,使用此参数开启,必须设置--arkose-endpoint,设置为你的域名/主机,例如: http://127.0.0.1:7999
  • --enable-file-proxy,开启文件上下传API代理
  • --enable-arkose-proxy,开启获取Arkose Token端点
  • --enable-direct,开启直连,将绑定interface出口的IP的加入代理池
  • --ws-endpoint,配置代理WebSocket的端点,设置为你的域名/主机,例如: ws://127.0.0.1:7999
  • --proxies,代理,支持代理池,多个代理使用,隔开,格式: protocol://user:pass@ip:port
  • --no-keepalive 关闭Http Client Tcp保活
  • --fastest-dns 使用内置最快DNS组
  • --visitor-email-whitelist,白名单限制,限制针对AccessToken,参数为邮箱,多个邮箱用,隔开
  • --cookie-store,开启Cookie Store
  • --cf-site-key,Cloudflare turnstile captcha site key
  • --cf-secret-key,Cloudflare turnstile captcha secret key
  • --arkose-endpoint,ArkoseLabs endpoint,例如: https://client-api.arkoselabs.com
  • --arkose-solver,ArkoseLabs solver platform,例如: yescaptcha
  • --arkose-solver-key,ArkoseLabs solver client key
  • --impersonate-uas,可选随机模拟UA,多个使用,隔开,详细请看命令手册
  • --auth-key登录/HAR Manager/ArkoseAPI认证Key,使用Authorization Bearer格式发送
  • --preauth-endpoint, 启用Apple平台ChatGPT App登录的preauth_cookie端点
代理高阶用法

分代理内置协议和代理类型,内置协议: all/api/auth/arkose,其中all针对所有客户端,api针对所有OpenAI APIauth针对授权/登录,arkose针对ArkoseLabs;代理类型: interface/proxy/ipv6_subnet,其中interface表示绑定的出口IP地址,proxy表示上游代理协议: http/https/socks5/socks5hipv6_subnet表示用Ipv6子网段内随机IP地址作为代理。格式为proto|proxy,例子: all|socks5://192.168.1.1:1080, api|10.0.0.1, auth|2001:db8::/32, http://192.168.1.1:1081,不带内置协议,协议默认为all

关于代理http/https/socks5/socks5h,只有使用socks5h协议时,DNS解析才会走代理解析,否则将使用本地/内置DNS解析

代理使用规则
  1. 存在interface \ proxy \ ipv6_subnet

当开启--enable-direct,那么将使用proxy + interface作为代理池;未开启--enable-direct,只有proxy数量大于等于2才使用proxy,否则将使用 ipv6_subnet作为代理池,interface作为fallback地址。

  1. 存在interface \ proxy

当开启--enable-direct,那么将使用proxy + interface作为代理池;未开启--enable-direct,只使用proxy作为代理池。

  1. 存在proxy \ ipv6_subnet

规则同(1),只是没有interface作为fallback地址。

  1. 存在interface \ ipv6_subnet 当开启--enable-direct,同时interface数量大于等于2似,interface作为代理池;未开启--enable-direct,将使用 ipv6_subnet作为代理池,interface作为fallback地址。

  2. 存在proxy

当开启--enable-direct,使用proxy + 默认直连作为代理池;未开启--enable-direct,只使用proxy作为代理池

  1. 存在ipv6_subnet

无论是否开启--enable-direct,都将使用ipv6_subnet作为代理池

Clone this wiki locally