杂记 | 搭建反向代理防止OpenAI API被封禁(对于此次收到邮件提示7月9日后将被屏蔽的解决参考)

news2024/10/7 14:32:46

文章目录

  • 重要声明(免责)
  • 01 OpenAI封禁API的情况
  • 02 解决方案及原理
    • 2.1 原因分析
    • 2.2 解决方案
    • 2.3 步骤概述
  • 03 操作步骤
    • 3.1 购买一个海外服务器
    • 3.2 申请一个域名
    • 3.3 将域名指向代理服务器
    • 3.4 在代理服务器上安装nginx
    • 3.5 配置反向代理


重要声明(免责)

笔者本人一直以来使用本文中的代理方式,目前尚未收到封禁提示邮件,但不保证100%有效
本教程中使用的方案仅供参考,如果采用本方案后仍被封禁,本人对封禁结果及其一切损失不负责

(嫌啰嗦可以直接跳到03部分)

01 OpenAI封禁API的情况

今天(2024.06.25)一早,很多人收到OpenAI的邮件,提示将阻止来自不再支持的国家和地区名单上的地区的API流量。
在这里插入图片描述

我们的数据显示您的组织有来自OpenAI所不支持地区的流量。您可以点击查看当前受支持的国家和地区。我们将从7月9日起,采取额外的措施来阻止这些流量。要继续使用OpenAI的服务,您需要在受支持的地区访问。

02 解决方案及原理

2.1 原因分析

根据邮件内容,造成这种情况的原因可能是:

  1. 在调用OpenAI的API时,使用了国内的本地网络
  2. 使用了中国香港的代理节点(或是别的不受支持的地区的代理节点)
  3. 虽然使用了代理,但不是全局代理,造成代理没能隐藏真实的IP地址
  4. 代理的网络节点频繁变动,或者代理的节点本身是被OpenAI阻止的机房

2.2 解决方案

解决方案概述为:采用可靠的节点+反向代理的方式避免上述问题,从而避免被封禁。

传统模式下,我们可能习惯的是在本地使用正向代理(梯),请求的目标地址仍然是官方的https://api.openai.com,这种方式很容易触发上面提到的几个原因。

而使用反向代理的方案,可以保证每次请求都是从特定的代理节点发出的,即使本地网络是国内或者不断变动,都不影响OpenAI观测到的请求是来自可信节点。

2.3 步骤概述

  1. 购买一个海外的代理服务器
  2. 申请一个域名
  3. 将域名指向代理服务器
  4. 在代理服务器上安装nginx(以nginx proxy manager面板为例)
  5. 配置反向代理

03 操作步骤

3.1 购买一个海外服务器

首先不推荐购买阿里云或腾讯云的服务器,因为国内的服务提供商被封的可能性大,而且可能还有备案的要求,很麻烦。
买的时候建议选择美国节点,不要选香港节点。
笔者本人一共尝试过4家服务器提供商:

  1. bandwagonhost(搬瓦工)
    不推荐,因为我买来就发现被OpenAI屏蔽了,可能是因为这个提供商太多中国用户,被检测到了。好在可以退款。

  2. racknerd(便宜但线路一般)
    具体参考这位博主的文章(无法打开的话需要梯)
    优点是非常便宜,一年10刀就能拿下,缺点是网络线路是普通的BGP,可能影响代理的效果(但实际用下来感觉还好)。
    购买时建议选择洛杉矶的机房。

  3. hostdare(线路好但配置低)
    网址:https://bill.hostdare.com/store/premium-china-optimized-nvme-kvm
    优惠码可以自己搜索下看有没有。
    优点是支持CN2 GIA线路,质量好,缺点是带宽较小,流量偏少,价格偏高。
    购买时建议认准以下红框部分:
    在这里插入图片描述

  4. ZgoCloud(笔者正在用)
    网址:https://clients.zgovps.com/?affid=615
    优点是有CN2 GIA线路,质量较好且性价比高,没那么贵。缺点是不支持退货,有一定风险。
    购买时一定要选购针对中国线路做了优化的(可惜发文时好像暂时没有这种机了)
    这家提供商是我正在使用的,目前用下来没啥问题。

我用的ZgoCloud(暂时没货),个人轻度使用的话可以选择racknerd,不差钱选hostdare。

假设购买的代理服务器的公网ip为58.58.58.58,后文基于该示例IP讲解。

3.2 申请一个域名

我在阿里云购买的,也可以在腾讯云购买,这个无大所谓,便宜的.top域名一年只要10元左右。
(操作过程略)
假设购买的域名为example.com,后文基于该示例域名讲解。

3.3 将域名指向代理服务器

在购买域名的提供商管理控制台做DNS解析,将域名(最好是二级域名)指向购买的代理服务器。
(操作过程略)
例如:将api.example.com指向58.58.58.58,设置时选择A记录。

3.4 在代理服务器上安装nginx

使用SSH工具登录到代理服务器,安装好docker和docker compose。
推荐使用这个nginx面板项目进行配置:
https://github.com/NginxProxyManager/nginx-proxy-manager
docker-compose.yml:

version: '3.8'
services:
  app:
    image: 'docker.io/jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

安装完成后登录:http://58.58.58.58:81
在这里插入图片描述

初始账号:admin@example.com
初始密码:changeme

3.5 配置反向代理

参考我的配置,Domain Name那里填写刚才指向的域名:
在这里插入图片描述

然后申请一个免费证书(有几个月的有效期,快过期时记得登录面板点击renew):
在这里插入图片描述
接着是高级配置:
在这里插入图片描述

location / {
    proxy_pass https://api.openai.com/;
    proxy_ssl_server_name on;
    proxy_set_header Host api.openai.com;
    proxy_set_header Connection '';
    proxy_http_version 1.1;
    proxy_buffering off;
    proxy_cache off;
}

完成后浏览器访问配置好的这个代理域名(不挂梯直接访问),如果出现这样的界面,说明成功了:
在这里插入图片描述
然后,在所有需要调用OpenAI API的地方,将官方的api.openai.com替换成自己的api.example.com就可以了。

代理其他服务提供商同理。

再次声明:本方案仅供参考,不保证一定不会被封,如果仍然被封,作者概不负责。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1862130.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA启动报错:Abnormal build process termination...

一、问题描述 因为项目需要,同时打开了两个idea,突然发现一个启动的时候报错,有点莫名其妙,刚还好好的,为啥就不能用了,一顿百度找方法,试了各种方法,像重新安装jdk、重启系统发现都…

Linux源码阅读笔记04-实时调度类及SMP和NUMA

Linux进程分类 实时进程普通进程 如果系统中有一个实时进程并且可执行,调度器总是会选择他,除非有另外一个优先级高的实时进程。SCHED_FIFO:没有时间片,被调度器选择之后,可以运行任意长的时间。SCHED_RR:有…

轻松学AI绘画:PS AI插件,小白的入门秘籍

各位AIGC创意爱好者们,你们是否对AI绘画充满好奇,却又对那些复杂的国外软件感到望而却步?别急,今天我要为大家介绍一款适合新手的国产PS AI插件——StartAI,它将为你的创作之路带来无限可能! StartAI&…

SSLyze:一款快速高效的SSLTLS扫描工具

关于SSLyze SSLyze是一款快速高效且功能强大的SSL/TLS扫描工具,同时它也是一个Python库。 SSLyze在与目标服务器连接成功之后,可以对目标目标服务器的SSL/TLS配置进行扫描和分析,并确保其使用健壮的加密设置,包括证书、密码套件和…

会议等级地址

1.https://www.cnblogs.com/bnuvincent/p/6809353.html 2. 会议之眼地址 https://www.conferenceeye.cn/home/submission/1 3. 学术之家https://www.xueshu.com/sci/41975/

cpp入门(命名空间,输入输出与缺省参数)

目录 cpp关键字 命名空间 命名空间的使用 1.加名称及作用域限定符 2.使用using将命名空间中某个成员引入 3.展开命名空间 注意 输入输出 缺省参数 cpp关键字 命名空间 定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字&#xff0c…

IIC学习笔记(立创STMF4开发板)

目录 #I2C涉及相关知识 #I2C相关介绍 欢迎指正,希望对你,有所帮助!!! 个人学习笔记,参考文献,链接最后!!! #I2C涉及相关知识 SDA串行数据线: Ser…

【Docker】rancher 管理平台搭建

目录 1. 所有节点安装docker 2. 所有节点配置/etc/sysconfig/docker 文件修改如下配置 3. 配置证书 4. 镜像仓库导入镜像 5. 创建镜像仓库 5.1 查询上传的 image id 5.2 镜像打标签 5.3 镜像上推 6. server 节点 7. client 节点 8. 在 server 节点启动 9. 查看运行…

OpenCV的学习大纲

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,广泛用于各种计算机视觉应用中。以下是一个基本的OpenCV学习大纲,帮助初学者系统地学习OpenCV。 基础知识 计算机视觉简介:了解计算机…

Baidu Comate专业版90天使用福利免费送,AI编码解放程序员双手

具体的能力介绍和示例不赘述,可直接参考:Comate官网:Baidu Comate Coding mate, Pair you create 基于文心大模型,结合百度编程大数据,为你生成优质编程代码 你的AI编程助手,你的编码效率提升好帮手 Baidu…

C语言| 冒泡排序-从大到小-

【冒泡排序】最基本的排序方法,一定要掌握。 【冒泡排序的原理】 从左往右,相邻元素进行比较。 每次比较一轮,就会找到序列中最大的一个元素或者最小的元素。 这个数就会从序列的最右边冒出来,所以叫冒泡排序。 以从小到大排序为…

基于51单片机的RFID门禁系统-LCD12864显示

一.硬件方案 本RFID系统设计可分为硬件部分和软件部分。硬件部分以MFRC522射频识别模块为核心,结合主控模块STC89C52设计系统的外围硬件电路,实现对射频卡的控制与MCU之间的互通。软件部分采用C语言进行系统的下位机程序的开发,完成与IC卡之…

【C++进阶学习】第四弹——多态——迈向C++更深处的关键一步

前言: 在前面我们已经学习了C中继承的相关知识,已经体会到C在与C语言的对比中的便捷性,但是有一些问题并没有被解决,比如继承中如何使不同的派生类公用基类的一个函数,这就需要多态的知识,而且,…

数据可视化期末考试(编程)

1.KNN 1.新增数据的分类 import pandas as pd # 您的原始数据字典 data { 电影名称: [电影1, 电影2, 电影3, 电影4, 电影5], 打斗镜头: [10, 5, 108, 115, 20], 接吻镜头: [110, 89, 5, 8, 200], 电影类型: [爱情片, 爱情片, 动作片, 动作片, 爱情片] } …

240621_Git初始配置及常用命令

Git初始配置及常用命令 初始配置 在安装Git后,我们应该首先设置修改、查看用户名及邮箱 运行Git Bash,使用以下命令设置本地Git工具的用户名及邮箱(比如你的用户名是zhangsan,邮箱是zhangsan1123163.com)&#xff1…

Tomcat 下载部署到 idea

一、下载Tomcat Tomcat 是Apache 软件基金会(Apache Software Foundation)下的一个核心项目,免费开源、并支持Servlet 和JSP 规范。属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发…

昇思25天学习打卡营第2天 | 张量Tensor

张量Tensor 张量(Tensor)基础 张量是MindSpore中的基本数据结构的一种,类似于NumPy中数组和矩阵非常相似。它具有以下重要属性: 形状(shape)和数据类型(dtype):每个张量…

AI大模型的核心

前言 没错,AI大模型的核心成功因素通常可以归结为三大要素:大数据、大算力和强算法。这三个因素相辅相成,共同推动了现代人工智能技术的发展。 1. 大数据 • 定义:指的是涵盖广泛领域的海量数据,包括文本、图像、音…

tensorflow学习:错误 InternalError: Dst tensor is not initialized

tensorflow学习:错误 InternalError: Dst tensor is not initialized_dst tensor is not initialized.-CSDN博客https://blog.csdn.net/wanglitao588/article/details/77033659

我是如何从功能测试转成自动化测试的!

大家好,我是测试君。(六哥也行) 时间过得好快,不知不觉已经在这个行业摸爬滚打10年多了,也算是测试圈的一枚老兵了。 回想自己在自动化求知路上的种种,依然历历在目,看着自己一步步的走来&#…