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

文章目录

  • 重要声明(免责)
  • 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就可以了。

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何利用小猪APP分发进行高效的APP封装打包

你有没有想过,为什么有些应用程序似乎在一夜之间就上线了,而你的应用却还在封装打包的过程中挣扎?别担心,这里有一个秘密武器,它叫做小猪APP分发。 小猪app封装www.ppzhu.net 什么是APP封装打包? APP封装…

从零开始做题:修猫

修猫 1 题目 2 解题 2.1 使用Stegslove分析图片 (base) ┌──(holyeyes㉿kali2023)-[~/Misc/tool-misc] └─$ java -jar Stegsolve.jar 2.2 analyse -frame browser 2.3 得到flag DASCTF{818ca3a840e768da7d5fcdeaedd5012f}

解决GPU 显存未能完全释放

一、 现象 算法同学反馈显存未能完全释放。 二、解决方法 一条命令搞定 注意:执行时注意不要误杀其他的python进程,需要确认好。 我的这条命令是将所有python进程都杀死了 ps -elf | grep python | awk {print $4} | xargs kill -s 9

Redis源码学习:SDS设计与内存管理

为什么Redis选择SDS 1、缓解C语言字符串的缺陷 在 C 语言中可以使用 char* 字符数组来实现字符串。每个字符串分配一段连续的内存空间,依次存放字符串中的每一个字符,最后以null字符结尾。这种设计存在以下问题: 1、低效的操作 每次获取字…

【containerd】Containerd高阶命令行工具nerdctl

前言 对于习惯了使用docker cli的用户来说,containerd的命令行工具ctr使用起来不是很顺手,此时别慌,还有另外一个命令行工具项目nerdctl可供我们选择。 nerdctl是一个与docker cli风格兼容的containerd的cli工具。 nerdctl已经作为子项目加入…

数据分析必备:一步步教你如何用matplotlib做数据可视化(12)

1、Matplotlib 3D线框图 线框图采用值网格并将其投影到指定的三维表面上,并且可以使得到的三维形式非常容易可视化。plot_wireframe()函数用于此目的 import matplotlib.pyplot as plt import numpy as np import math import seaborn as sns plt.rcParams[font.s…

新增题目接口开发

文章目录 1.基本设计2.生成CRUD代码1.生成五张表的代码1.subject_info2.subject_brief3.subject_judge4.subject_multiple5.subject_radio 2.将所有的dao放到mapper文件夹3.将所有实体类使用lombok简化4.删除所有mapper的Param("pageable") Pageable pageable5.删除所…

nacos 整合 openfeign实现远程调用

结合之前写过的案例 Springcloud Alibaba nacos简单使用 Springcloud 之 eureka注册中心加feign调用 在微服务架构中,服务注册与发现是一个关键组件。Nacos 是一个开源的服务注册与发现、配置管理平台,而 OpenFeign 是一个声明式的 Web 服务客户端&am…

6.25作业

1.整理思维导图 2.终端输入两个数,判断两数是否相等,如果不相等,判断大小关系 #!/bin/bash read num1 read num2 if [ $num1 -eq $num2 ] then echo num1num2 elif [ $num1 -gt $num2 ] then echo "num1>num2" else echo &quo…

优雅谈大模型13:LangChain Vs. LlamaIndex

实时了解业内动态,论文是最好的桥梁,专栏精选论文重点解读热点论文,围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技(Mamba,xLSTM,KAN)…

09. Java ThreadLocal 的使用

1. 前言 本节内容主要是对 ThreadLocal 进行深入的讲解,具体内容点如下: 了解 ThreadLocal 的诞生,以及总体概括,是学习本节知识的基础;了解 ThreadLocal 的作用,从整体层面理解 ThreadLocal 的程序作用&…

Vue3基础使用

目录 一、创建Vue3工程 (一)、cli (二)、vite 二、常用Composition API (一)、setup函数 (二)、ref函数 (三)、reactive函数 (四)、setup注意事项 (五)、计算属性 (六)、watch (七)、watchEffect函数 (八)、生命周期 1、以配置项的形式使用生命周期钩子 2、组合式…

功能测试【测试用例模板、Bug模板、手机App测试★】

功能测试 Day01 web项目环境与测试流程、业务流程测试一、【了解】web项目环境说明1.1 环境的定义:项目运行所需要的所有的软件和硬件组合1.2 环境(服务器)的组成:操作系统数据库web应用程序项目代码1.3 面试题:你们公司有几套环境&#xff1…

昇思25天学习打卡营第2天|快速入门

快速入门 操作步骤1.引入依赖包2.下载Mnist数据集3.划分训练集和测试集4.数据预处理5.网络构建6.模型训练7.保存模型8.加载模型9.模型预测 今天通过昇思大模型平台AI实验室提供的在线Jupyter工具,快速入门MindSpore。 目标:通过MindSpore的API快速实现一…

互联网应用主流框架整合之Spring Boot运维体系

先准备个简单的系统,配置和代码如下 # 服务器配置 server:# 服务器端口port: 8001# Spring Boot 配置 spring:# MVC 配置mvc:# Servlet 配置servlet:# Servlet 的访问路径path: /sbd# 应用程序配置application:# 应用程序名称name: SpringBootDeployment# 配置数据…

PointCloudLib NDT3D算法实现点云配准 C++版本

0.实现效果 效果不咋好 ,参数不好调整 1.算法原理 3D NDT(Normal Distributions Transform)算法是一种用于同时定位和地图生成(SLAM)的机器人导航算法,特别适用于三维点云数据的配准。以下是关于3D NDT算法的详细解释: 算法原理 点云划分与分布计算:3D NDT算法首先将…

ElementPlus组件与图标按需自动引入

按需自动引入组件 1. 安装ElementPlus和自动导入ElementPlus组件的插件 pnpm install element-plus pnpm install -D unplugin-vue-components unplugin-auto-import 2. vite.config.ts进行修改 import { defineConfig } from vite import vue from vitejs/plugin-vue // …

MySQL索引优化解决方案--索引失效(3)

索引失效情况 最佳左前缀法则:如果索引了多列,要遵循最左前缀法则,指的是查询从索引的最左前列开始并且不跳过索引中的列。不在索引列上做任何计算、函数操作,会导致索引失效而转向全表扫描存储引擎不能使用索引中范围条件右边的…

Windows 根据github上的环境需求,安装一个虚拟环境,安装cuda和torch

比如我们在github上看到一个关于运行环境的需求 Installation xxx系统Python 3.xxx CUDA 9.2PyTorch 1.9.0xxxxxx 最主要的就是cuda和torch,这两个会卡很多环境的安装。 我们重新走一遍环境安装。 首先创建一个虚拟环境 conda create -n 环境名字 python3.xxx…

Tomcat 下载部署到 idea

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