若干国内访问 ChatGPT 的方法

Guikong
Guikong
发布于 2024-08-01 / 223 阅读
0

若干国内访问 ChatGPT 的方法

ChatGPT镜像站作为国内突破网络障碍访问GPT模型的一种形式,其实很长一段时间并没有调用API访问GPT模型的关注度更高,其中重要的原因就是,API调用的网络限制相对更少,完全可以通过设置一个CloudFlare Worker就完成中转调用。

但是随着ChatGPT网页版功能的丰富、各式各样GPTs的出现,ChatGPT Plus的强大功能越来越受到关注。去年大火的Pandora-Next项目因其可以非常便捷快速地在国内无障碍使用ChatGPT而受到大量追捧,但由于OpenAI的高强度封堵,Pandora-Next项目最终不得不停止。

下面将分享一些无需科学上网便可直接访问 ChatGPT 的方式,支持自行部署。

需要声明的是,本站与下述的任何项目均无关,仅因为使用方便,来推荐给需要的朋友。

1.新Pandora

Pandora 目前已经进行了多次更新,可以重新满足日常使用。与 6 月介绍该方式时不同,目前 Pandora 的 ChatGPT 代理访问不仅支持 ChatGPT Plus/Team 用户,同时也支持了普通账号的用户。

使用者可以通过访问 https://new.oaifree.com 访问代理站点。登录 ChatGPT 账号需要获取 Access Token,这里有三种获取 Access Token 的方式。

1.1 Pandora 提供的获取方式

Pandora 官方给到的获取地址是https://token.oaifree.com/auth ,输入自己的 ChatGPT 账号密码登录即可获得一个 10 天有效期的 Access Token。获取 Access Token 的权限需要登录由 Pandora 作者创建的 LinuxDo 社区账号。不清楚该论坛目前是否是邀请注册制,大家可以自行访问查看一下。

1.2 ChatGPT 官网获取

我们可以提供科学上网的方式访问 ChatGPT 官网,登录后在浏览器按 F12 打开开发者管理工具,在“应用程序”窗口中,找到站点的 cookie 信息,找到 Access Token 的信息复制即可。

1.3 使用其他的代理站点获取

通常情况下如果我们使用其他的反向代理站点,其实可以就不用 Pandora 了,但是这里介绍这个方法,主要还是因为目前在所有的代理访问项目中,我个人认为 Pandora 仍然是最稳定最快的。所以,通过其他的反代站点获取 Access Token 后,在 Pandora 使用更稳定的服务,也是可以的。这里举个例子,我是使用的 xyhelper (后面也要介绍的一个访问 ChatGPT的方式)的代理站点获取的 Access Token。

这里大家自行再去从头获取站点地址单纯为了获取 Access Token 也挺麻烦,我将获取地址分享出来,限制了每个 IP 每天只可以获取 2 次,为了防止攻击和过度使用。访问 https://get-token.wslll.cn/applelogin ,该服务通过 cloudflare worker 部署,仅进行中转访问,不会保存任何信息。

2.xyhelper

xyhelper的官网地址是www.xyhelper.cn,如果感兴趣可以直接访问官方查看其相关服务内容也可以。xyhelper 提供一些共享账号的服务,对于小白比较友好。对于有一定服务器基础知识的朋友,或者需要搭建后小范围内共享使用的用户,可以自行购买接入点搭建接入站点。

我使用的是 xyhelper 接入点的共享车队,每天调用 300 次,一个月 12¥,也不贵。不过共享车队的接入有 IP 访问限制,你需要提前将自己的 IP 地址设置在白名单,才可以正常使用代理访问。

如果你会使用 cloudflare,也可以通过 worker 的方式,手动设置请求头中的 IP 地址,这样就可以避免本地 IP 变化而无法访问的情况。同时也可以自定义域名进行访问。下面是一个参考的 cloudflare worker 的代码,其功能就是代理访问 xyhelper 共享车队接入点的地址,同时在请求头中加入固定的 IP 地址满足白名单,并且改代码还屏蔽了/applelogin 路径,防止有人恶意调用:

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request));
});

async function handleRequest(request) {
  const url = new URL(request.url);

  // 检查请求路径是否为 /applelogin,禁止改路径的访问
  if (url.pathname === '/applelogin') {
    return new Response('Forbidden', { status: 403 });
  }

  url.hostname = '在这里输入你的接入点地址';
  const newRequest = new Request(url, request);
  newRequest.headers.set('X-Forwarded-For', '这里输入你的白名单 IP 地址');
  let response = await fetch(newRequest);

  // 克隆响应对象以修改响应头
  response = new Response(response.body, response);

  // 添加 CORS 头部
  response.headers.set('Access-Control-Allow-Origin', '*');
  response.headers.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
  response.headers.set('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Accept, Origin, Authorization');

  // 修改或删除可能阻止在 iframe 中加载的其他响应头
  response.headers.delete('X-Frame-Options');
  response.headers.set('Content-Security-Policy', "frame-ancestors 'self' chat");

  // 返回修改后的响应
  return response;
}