杂记 | 搭建反向代理防止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 原因分析
根据邮件内容,造成这种情况的原因可能是:
- 在调用OpenAI的API时,使用了国内的本地网络
- 使用了中国香港的代理节点(或是别的不受支持的地区的代理节点)
- 虽然使用了代理,但不是全局代理,造成代理没能隐藏真实的IP地址
- 代理的网络节点频繁变动,或者代理的节点本身是被OpenAI阻止的机房
2.2 解决方案
解决方案概述为:采用可靠的节点+反向代理的方式避免上述问题,从而避免被封禁。
传统模式下,我们可能习惯的是在本地使用正向代理(梯),请求的目标地址仍然是官方的https://api.openai.com
,这种方式很容易触发上面提到的几个原因。
而使用反向代理的方案,可以保证每次请求都是从特定的代理节点发出的,即使本地网络是国内或者不断变动,都不影响OpenAI观测到的请求是来自可信节点。
2.3 步骤概述
- 购买一个海外的代理服务器
- 申请一个域名
- 将域名指向代理服务器
- 在代理服务器上安装nginx(以nginx proxy manager面板为例)
- 配置反向代理
03 操作步骤
3.1 购买一个海外服务器
首先不推荐购买阿里云或腾讯云的服务器,因为国内的服务提供商被封的可能性大,而且可能还有备案的要求,很麻烦。
买的时候建议选择美国节点,不要选香港节点。
笔者本人一共尝试过4家服务器提供商:
-
bandwagonhost(搬瓦工)
不推荐,因为我买来就发现被OpenAI屏蔽了,可能是因为这个提供商太多中国用户,被检测到了。好在可以退款。 -
racknerd(便宜但线路一般)
具体参考这位博主的文章(无法打开的话需要梯)
优点是非常便宜,一年10刀就能拿下,缺点是网络线路是普通的BGP,可能影响代理的效果(但实际用下来感觉还好)。
购买时建议选择洛杉矶的机房。 -
hostdare(线路好但配置低)
网址:https://bill.hostdare.com/store/premium-china-optimized-nvme-kvm
优惠码可以自己搜索下看有没有。
优点是支持CN2 GIA线路,质量好,缺点是带宽较小,流量偏少,价格偏高。
购买时建议认准以下红框部分:
-
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-stoppedports:- '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
就可以了。
代理其他服务提供商同理。
再次声明:本方案仅供参考,不保证一定不会被封,如果仍然被封,作者概不负责。
相关文章:

杂记 | 搭建反向代理防止OpenAI API被封禁(对于此次收到邮件提示7月9日后将被屏蔽的解决参考)
文章目录 重要声明(免责)01 OpenAI封禁API的情况02 解决方案及原理2.1 原因分析2.2 解决方案2.3 步骤概述 03 操作步骤3.1 购买一个海外服务器3.2 申请一个域名3.3 将域名指向代理服务器3.4 在代理服务器上安装nginx3.5 配置反向代理 重要声明࿰…...
利用ref实现防抖
结合vue的customRef function debounceRef(value,time1000){ let t return customRef((track,trigger)>{ return { get(){ track() return value; } set(val){ clearTimeout(t) tsetTimeout(()>{ trigger() valueval },time) } } }) }...

SAP ABAP 之OOALV
文章目录 前言一、案例介绍/笔者需求二、SE24 查看类 a.基本属性 Properties b.接口 Interfaces c.友元 Friends d.属性 Attributes e.方法 Methods f.事件 Events g.局部类型 Types …...

构建实用的Flutter文件列表:从简到繁的完美演进
前言:为什么我们需要文件列表? 在现代科技发展迅速的时代,我们的电脑、手机、平板等设备里积累了大量的文件,这些文件可能是我们的照片、文档、音频、视频等等。然而,当文件数量增多时,我们如何快速地找到…...
spring使用@PostConstruct踩得坑
情况说明: 在一个抽象类中使用PostConstruct注解方法init用于初始化操作。然后每个实现类在初始化时都会调用PostConstruct注解的init方法执行初始化操作。如下代码: public abstract class AbstractClass {/*** 存放各实例.*/public static final Map&…...

【Mac】XnViewMP for Mac(图片浏览查看器)及同类型软件介绍
软件介绍 XnViewMP 是一款多功能、跨平台的图像查看和管理软件,适用于 macOS、Windows 和 Linux 系统。它是经典 XnView 软件的增强版本,更加现代化且功能更强大。XnViewMP 支持数百种图像格式,并提供多种图像处理工具,使其成为摄…...

win10修改远程桌面端口,Windows 10下修改远程桌面端口及服务器关闭445端口的操作指南
Windows 10下修改远程桌面端口及服务器关闭445端口的操作指南 一、修改Windows 10远程桌面端口 在Windows 10系统中,远程桌面连接默认使用3389端口。为了安全起见,建议修改此端口以减少潜在的安全风险。以下是修改远程桌面端口的步骤: 1. 打…...

口感探险之旅:勇闯红酒世界,揭秘复杂风味的无尽奥秘
在葡萄酒的浩瀚海洋中,红酒如同一座深邃而迷人的岛屿,等待着勇敢的探险家们去发掘其背后隐藏的奥秘。每一次品尝红酒,都是一次口感的大冒险,让我们在味蕾的舞动中感受那千变万化的风味。今天,就让我们一起踏上这场探索…...

吉时利 Keithley2440 数字源表
Keithley2440吉时利SMU数字源表 Keithley2440 - 40V、5A、50W源表 吉时利数字源表系列专用于要求紧密结合源和测量 的测试应用。全部数字源表型号都提供精密电压源和电 流源以及测量功能。每款数字源表既是高度稳定的直流 电源也是真仪器级的6位半万用表。此电源的特性包括 低…...

PPT的精细化优化与提升策略
👏👏👏欢迎来到我的博客 ! 亲爱的朋友们,欢迎您们莅临我的博客!这是一个分享知识、交流想法、记录生活的温馨角落。在这里,您可以找到我对世界独特视角的诠释,也可以与我一起探讨各种话题&#…...
awtk踩坑记录三:移植awtk-mvvm到Awtk Designer项目
从github下载并编译awtk, awtk-mmvm awtk: https://github.com/zlgopen/awtk/tree/master awtk-mvvm: https://github.com/zlgopen/awtk-mvvm 用awtk-designer新建项目并打开项目目录 首先修改project.json,使其awtk和awtk-mvvm指向上个步骤下载的路径,…...

07 - matlab m_map地学绘图工具基础函数 - 绘制等高线
07 - matlab m_map地学绘图工具基础函数 - 绘制等高线 0. 引言1. 关于绘制m_contour2. 关于绘制m_contourf3. 关于绘制m_elev4. 结语 0. 引言 本篇介绍下m_map中添加绘制等高线的一系列函数及其用法,主要函数包括m_elev、m_contour、m_contourf还有一些函数也和绘制…...

Kotlin设计模式:享元模式(Flyweight Pattern)
Kotlin设计模式:享元模式(Flyweight Pattern) 在移动应用开发中,内存和CPU资源是非常宝贵的。享元模式(Flyweight Pattern)是一种设计模式,旨在通过对象重用来优化内存使用和性能。本文将深入探…...
java压缩pdf
<!-- PDF操作,itext7全家桶 --><dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.1.15</version><type>pom</type></dependency>package org.example; import…...
[AIGC] ClickHouse:一款高性能列式数据库管理系统
轮流探索数据库的世界,我们不得不提到一个重要的角色——ClickHouse。ClickHouse是一个开源的列式数据库管理系统(DBMS),以其卓越的性能,高效的查询能力和易扩展性而被业界广泛关注,尤其在大数据分析方面。 文章目录 1. 什么是 Cl…...

深度学习21-30
1.池化层作用(筛选、过滤、压缩) h和w变为原来的1/2,64是特征图个数保持不变。 每个位置把最大的数字取出来 用滑动窗口把最大的数值拿出来,把44变成22 2.卷积神经网络 (1)conv:卷积进行特征…...

google浏览器无法访问大端口的处理方式
属性的目标中添加后缀内容或者修改后台端口为常用端口,比如8080等。 “C:\Program Files\Google\Chrome\Application\chrome.exe” --explicitly-allowed-ports8888...
微信小程序余额退费
需求:用户充值使用后的剩余金额,需要退回到用户原路。 参考文档:微信支付-开发者文档 pom.xml配置: <!--微信支付SDK--> <dependency><groupId>com.github.wechatpay-apiv3</groupId><artifactId&g…...
宁波银行票据案例解读,要注入科技赋能票据新形式
随着科技的飞速发展,金融行业正迎来一场前所未有的变革。作为一家以科技创新为驱动的现代化银行,宁波银行在这场变革中积极探索,宁波银行票据案例之后持续通过引入先进技术,为客户提供更加高效、智能的金融服务。 宁波银行推出的…...
博客已迁移
迁移至 烧烤er (makkapakka996.github.io)...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...