ChatGPT中转节点的搭建教程
ChatGPT正在改变我们的生活,而国内访问ChatGPT却比较困难。通过本项目,你可以搭建一个可正常访问的ChatGPT节点,以供自己和身边的人使用。
Prerequisites
部署本项目,你需要:
- 已经拥有openai账号,并申请了API key
- 注册一个cloudflare账号
- 一点编程知识
- 一点服务器租赁费用
原理
1. DNS解析
我在项目复现时,使用了两个域名:xxx.cc(公用访问)和xxxxx.bio(用于cloudflare承接),以及一台IPv6服务器。
DNS解析设置如下:
- 在http://name.com购买域名xxxxx.bio,设置ns解析到cloudflare域名服务器,也就是交给了cloudflare负责dns解析。cloudflare域名服务器可以在cloudflare的控制面板看到。
- 之后将direct1.xxxxx.bio AAAA解析到服务器IPv6。设置”Proxied“是cloudflare提供的特有服务,可以保证nslookup查询时得到的IP并非服务器真正的IP地址,而是cloudflare某个节点的IP;当访问该IP时,cloudflare节点会把异常流量(如ssh)拦截,并把正常的HTTP流量转发给真正的服务器。
- 在cloudflare购买域名 xxx.cc,设置 chat.xxx.cc 的ns记录为ns*.he.net。he.net是一个免费的域名解析服务提供商。
- 注册http://he.net的帐户,将http://chat.xxx.cc解析到cloudflare最近的节点IP。这个IP可以通过traceroute来找到。
- 通过custom hostname绑定direct1.xxxxx.bio
这样,访问http://chat.xxx.cc时,DNS会解析到162.159.0.1,当发送带Host: http://chat.xxx.cc的HTTP request时节点就会将请求解析到direct1.xxxxx.bio,通过AAAA解析到服务器IPv6,从而可以被访问。而且私有的*.xxxxx.bio和服务器地址都不被外部知晓。
2.IP筛选,WAF规则
打开在Cloudflare的xxx.cc域名下的Security-WAF页面,设置WAF规则,如果请求的主机名为chat.xxx.cc,且不是cloudflare(AS号13335)或北大的IP,则阻挡访问。
3.服务器端项目部署
为了尽可能减小成本,可以使用只有IPv6地址的服务器。Vultr就可以提供这样的服务器。
同时,购买服务器时要考虑地理位置,使其访问openai的接口尽可能快速。
购买服务器并成功使用ssh登录之后,此时ping http://openai.com将看到错误信息“网络不可达”:
这是因为服务器没有IPv4地址,无法访问v4的网络。我们可以通过Warp工具来实现访问。
WARP是CloudFlare提供的一项基于WireGuard的网络流量安全及加速服务,能够让你通过连接到CloudFlare的边缘节点实现隐私保护及链路优化。
其连接入口为双栈(IPv4/IPv6均可),且连接后能够获取到由CF提供基于NAT的IPv4和IPv6地址,因此我们的单栈服务器可以尝试连接到WARP来获取额外的网络连通性支持。这样我们就可以让仅具有IPv6的服务器访问IPv4,也能让仅具有IPv4的服务器获得IPv6的访问能力。
使用github上ChatGPT-streamlit项目,该项目是一个Web应用,可以中转访问Openai的接口,并将结果显示在网页上。运行后程序会绑定localhost的8502端口。
如果anaconda安装过程中出现安装包“python-graphviz”不存在,可以修改environment.yml中对应行为graphviz
利用反向代理nginx做反向代理和登录验证,配置如图所示。
proxy_pass:在访问80端口时,nginx负责转发到本地的8502端口
auth_basic,auth_basic_user_file:开启HTTP质询,即只有输入正确账号密码的用户可以访问。
账号密码管理:使用htpasswd工具。密码文件放在/etc/nginx/.passwd
4.效果展示
连接校园网访问时,出现HTTP质询;登陆后即可正常使用
当使用校外IP访问时,Cloudflare显示“Sorry, you have been blocked”
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo6@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
评论