【新手教程】oaifree 喂饭级 Step-by-step 一步步打开潘多拉

Table of Contents

  1. Step 1: 获取 Access Token
  2. Step 2: 获取 Share Token
    1. x: 获取 Refresh Token (等级够 3 了再说)
  3. Step 3: 网页版镜像站使用
    1. 登录方式
  4. (Optional) Step 4: API 使用(Chat2API)
    1. 测试
      1. model: gpt-4
      2. model: GPTs
      3. model: whisper
      4. model: tts
      5. model: dall-e
    2. 搭配起来使用
  5. (Optional) Step 5: 代理 backend-api/public-api(ChatGPT 后端接口)
  6. 总结(反代姿势):
  7. 注意:服务器资源问题,以上都只服务 ChatGPT Plus / Teams 账号(不过 Plus 账号的 3.5 可用)。

Step 1: 获取 Access Token

ChatGPT 官方的 Access Token

原帖: https://linux.do/t/topic/40591

Step 2: 获取 Share Token

使用 Step 1 获取到的 Access Token 来获取 Share Token。
Share Token 是基于 Access Token 套了一层,更短,更安全,可用来分享。
同一个名字的 Share Token 理论应该是保持不变的,access token 过期之后(7 天),
你需要做的事就是更新这个 Share Token 对应的 Access Token。

x: 获取 Refresh Token (等级够 3 了再说)

Step 3: 网页版镜像站使用

目前还未支持之前 pandora 的会话隔离,主要是是

Option 1: new.oaifree.com

  • 支持 GPTs!
  • 可以隔离!
  • 可以免墙!

Option 2: demo.oaifree.com (别被始皇这域名误导,此为 pandora classic)

  • 不支持 GPTs!
  • 但是:轻量速度快!
  • 同上!

鉴于始皇这个域名太随意了,建议使用自己的域名反代掉始皇域名!看下面总结的「反代姿势」:point_down:

登录方式

  1. 页面输入 Access Token 或 Share Token 登录

  2. 通过 https://chatfree.xxx.workers.dev/auth/login_share?token=fk-xxx 使用 Share Token 快捷登录

  3. 使用 https://chatfree.xxx.workers.dev/api/auth/oauth_token 接口创建 OAuth Token 登录。此种方式类似于 Share Token 快捷登录,但是不会泄露 Share Token ,便于集成。登录链接也只能使用一次,3分钟有效。接口使用方法如下:

     curl 'https://chatfree.xxx.workers.dev/api/auth/oauth_token' \
     -H 'Origin: https://chatfree.xxx.workers.dev' \
     -H 'Content-Type: application/json' \
     -d '{"share_token": "fk-xxx"}' | jq .login_url
    

会返回 JSON:

{
    "login_url": "https://chatfree.xxx.workers.dev/auth/login_oauth?token=xxx",
    "oauth_token": "xxx"
}

访问 login_url 即可直接登录。 这也太好用了!!

原帖: https://linux.do/t/topic/59728

(Optional) Step 4: API 使用(Chat2API)

不用多说了,有个 Plus/Team 基本就够自己个人 API Free 了!(另外用官方 platform API 也容易被封号)。

测试

model: gpt-4

curl https://apifree.xxx.workers.dev/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer sk-xxx' \
  -d '{
    "model": "gpt-4",
    "stream": false,
    "messages": [
      {
        "role": "user",
        "content": "you are ChatGPT based on GPT-3.5 or GPT-4? your knowledge cutoff date is? answer concisely: "
      }
    ]
  }' | jq .choices[0].message

{
  "role": "assistant",
  "content": "I am based on the GPT-4 architecture, and my knowledge cutoff date is December 2023."
}

model: GPTs

curl https://apifree.xxx.workers.dev/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer sk-xxx' \
  -d '{
    "model": "g-2DQzU5UZl",
    "stream": false,
    "messages": [
      {
        "role": "user",
        "content": "you are ChatGPT based on GPT-3.5 or GPT-4? your knowledge cutoff date is? answer concisely: "
      }
    ]
  }' | jq .choices[0].message

{
  "role": "assistant",
  "content": "I am based on GPT-4, and my knowledge cutoff date is December 2023."
}

model: whisper

model: tts

model: dall-e

原帖: https://linux.do/t/topic/50789

搭配起来使用

completions + whisper + tts

(Optional) Step 5: 代理 backend-api/public-api(ChatGPT 后端接口)

基于 ChatGPT 后端接口可以糊自己的 UI,也可以获取到一些未开放的数据,比如 GPTs 的详细数据。

原帖: https://linux.do/t/topic/53338

总结(反代姿势):

为了方便,我随便糊了两个 Cloudflare workers 反代,仅供参考

  1. 镜像站:
  • 新款(支持 GPTs): chatfree.xxx.workers.dev => new.oaifree.com
  • 经典款(不支持 GPTs 但是速度快,配合 fk-xx 完美的会话隔离):classic.xx.workers.dev 或者 pandora.xx.workers.dev => demo.oaifree.com
  1. 后端 API & Chat2API:

1. chatfree 镜像站

这个就随便用上面 Step 3 的就行。

新建一个 Worker,粘贴以下代码,部署,然后 Settings > Triggers > Add Custom Domain,填写你的域名(域名 必须解析到 Cloudflare)。

export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    url.host = 'new.oaifree.com'; // 'demo.oaifree.com'
    return fetch(new Request(url, request))
  }
}

2. 后端 API & Chat2API

在 wokers env vars 里配置下面几个字段食用:

  • API_KEY: 随便定义自己的 API Key
  • ACCESS_TOKEN: 暂时没有 Refresh Token, 填入获取到的 Access Token
  • CHATGPT_ACCOUNT_ID: 可选,Teams 账号填入账号 uuid
export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    // Determine the host based on the pathname initially
    if (url.pathname.startsWith('/v1/')) {
      url.host = 'api.oaifree.com';
    } else if (['/backend-api/', '/public-api/'].some((path) => url.pathname.startsWith(path))) {
      url.host = 'chat.oaifree.com';
      url.pathname = `/dad04481-fa3f-494e-b90c-b822128073e5${url.pathname}`;
    } else if (['/token', '/static', '/cdn-cgi'].some((path) => url.pathname.startsWith(path))) {
      url.host = 'chat.oaifree.com';
      return fetch(url.toString(), request); // Early return for paths that require no authorization
    } else {
      url.host = 'chat.oaifree.com'; // Default host for all other cases
    }

    // Check API key authorization
    const incomingApiKey = request.headers.get('Authorization')?.replace('Bearer ', '');
    if (incomingApiKey !== env.API_KEY) {
      return new Response('Invalid API Key', { status: 401 });
    }

    // Set authorization headers
    const headers = new Headers(request.headers);
    let authorizationKey = `Bearer ${env.ACCESS_TOKEN}`;
    if (env.CHATGPT_ACCOUNT_ID) {
      authorizationKey += `,${env.CHATGPT_ACCOUNT_ID}`;
    }
    headers.set('Authorization', authorizationKey);

    // Clean up headers
    for (const key of headers.keys()) {
      if (key.toLowerCase().startsWith('x-') && key !== 'x-api-key') {
        headers.delete(key);
      }
    }

    // Create and return the modified request
    url.protocol = 'https:';
    url.port = '';
    const modifiedRequest = new Request(url.toString(), {
      method: request.method,
      headers,
      body: request.body,
    });

    return fetch(modifiedRequest);
  },
};

注意:服务器资源问题,以上都只服务 ChatGPT Plus / Teams 账号(不过 Plus 账号的 3.5 可用)。

水第一贴(还不知道多少分)到手 [抱拳]

整理都来自: https://linux.do/t/topic/47799

141 个赞

感谢分享 慢慢学习

6 个赞

前排

5 个赞

佬,学到了 :smiling_face:

3 个赞

感谢整理

3 个赞

好好好,我承认你是最细的男银 :grinning:

4 个赞

感谢分享

4 个赞

感谢佬,整理辛苦了,很详细 :+1: :+1: :+1:

4 个赞

膜拜大佬

4 个赞

就冲你辛辛苦苦整理出来,点个赞 :+1:

4 个赞

感谢分享,对新手很友好。

5 个赞

新手友好,感谢感谢

4 个赞

佬厉害

5 个赞

真丶喂饭级教程

4 个赞

mark :bangbang:

4 个赞

喂得还是细糠

4 个赞

不戳,针不戳

3 个赞

缺一个 plus

3 个赞

逐渐疯狂。

4 个赞

没plus,全剧终

3 个赞