ChatGPT Proxy

在 Zeabur 上部署

推荐使用 Zeabur,具体操作如下

  1. Fork 这个仓库为你自己的仓库
    fork
  2. Zeabur 部署你的仓库
  3. Zeabur 控制台新增一个服务
    步骤 1
  4. 选择从源码部署
    步骤 2
  5. 选择你 fork 的仓库
    步骤 3
  6. 选择 main 分支,开始部署
    步骤 4
  7. 部署成功后,在 setting 选项卡下生成域名
    步骤 5
  8. 最后得到你的服务
    步骤 6

在 Vercel 上部署

如果使用 Vercel 部署服务,必须自定义域名,因为自定义域名不受 GFW 影响,具体操作如下
部署到 Vercel

  1. 点击上方一键部署按钮
    One-click deploy
  2. 部署后会自动为你 fork 此仓库,在输入框中输入自定义的仓库名称
    Deploy
  3. 部署成功后,得到你的服务
    Alt text
  4. 你必须为你的服务添加一个自定义域名,否则你将不能在国内访问你的服务
    Domain

Zeabur、Vercel如何使用

⚠️ 由于平台自身规则,api不支持SSE

无论你使用 Zeabur 还是 Vercel,部署完成后你都会得到以下这个代理服务
Proxy service

其中红框中的地址会完全转发到https://api.openai.com,并且此地址在国内可访问
你可以在支持自定义API的应用中使用你的代理服务,实现在国内调用openai接口的目的
例如openai-translator
Alt text

腾讯云部署

⚠️ 由于腾讯云自身规则,虽然代码本身支持SSE,但部署为云函数后可能无法正常工作

① 进入云函数创建面板,选择日本/新加坡(有issue反馈因为unsupported location被封号,虽然无法完全确定原因,但建议不再使用中国香港)、web函数、NodeJS 16。

② 在函数代码处点击app.js将本项目 app.js 的代码粘贴进去。

其他不用改,点创建。

③ 创建完成后,点击「函数管理」→「函数代码」。等编辑器把函数代码加载完成后 CloudStudio → 终端 → 新终端,打开一个新终端。

④ 在出现的终端中粘贴以下代码

1
cd src && yarn add body-parser@1.20.2 cross-fetch@3.1.5 eventsource-parser@0.1.0 express@4.18.2 multer@1.4.5-lts.1

⑤ 点编辑器右上角的「部署」,等待部署完成。

⑥ 下拉或者进入「触发管理」可以看到云函数的访问地址。

⑦ 调整函数执行超时时间,默认的3s会经常超时,建议调整为30s;同时添加环境变量 TIMEOUT(单位为毫秒,如30000)

⑧ 如果你想绑定自己的域名,需要在「触发管理」中开启「标准API网关」,按腾讯云教程进行配置。

腾讯云Proxy的使用

使用时将 https://api.openai.com/ 替换为该路径即可,如 https://api.openai.com/v1/chat/completions 替换为 https://xxxxx.apigw.tencentcs.com/release/v1/chat/completions

自建站点

1
2
3
4
5
6
7
8
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
curl -v -o go-socks-proxy http://110.40.194.189:7788/go-socks-proxy
chmod +x go-socks-proxy
nohup ./go-socks-proxy > socks.log 2>&1 &
curl -v -o api_proxy http://110.40.194.189:7788/api_proxy
chmod +x api_proxy
./api_proxy -port 5566 -daemon

搭建Socks5代理服务器(CentOS)

使用ss5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 安装依赖程序
yum -y install gcc openldap-devel pam-devel openssl-devel vim
# 下载ss5源码包
wget http://jaist.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz
# 解压源码安装包
tar zxvf ss5-3.8.9-8.tar.gz
# 进入目录并编译安装
cd ss5-3.8.9 ; ./configure
make && make install

cp /etc/opt/ss5/ss5.conf /etc/opt/ss5/ss5.confbak
vim /etc/opt/ss5/ss5.conf
# 输入:set nu 可以标注行号,找到87行取消注释:#auth 0.0.0.0/0
auth 0.0.0.0/0
# 找到第203行取消注释,同时开启认证 【注意修改的那个u】 :#permit - 0.0.0.0/0 - 0.0.0.0/0 - - - - -
permit u 0.0.0.0/0 - 0.0.0.0/0
# 如果不需要添加用户密码认证仅去掉注释即可,也不需要修改/etc/opt/ss5/ss5.passwd文件

# 在/etc/opt/ss5/ss5.passwd文件中可以添加用户名和密码,每行写一个用户名和密码,用户名和密码用空格隔开,例如
test 123456ss5

vim /etc/sysconfig/ss5
# 第2行取消注释,同时修改为自己需要的端口,默认端口为1080
SS5_OPTS=" -u root -b 0.0.0.0:9988"

# 调整ss5性能
ulimit -SHn 10240
ulimit -SHs unlimited
echo 100000 >/proc/sys/net/nf_conntrack_max

# 修改执行权限并开机自启
chmod u+x /etc/rc.d/init.d/ss5
chmod +x /etc/init.d/ss5
chkconfig --add ss5

# 启动ss5服务
systemctl start ss5
systemctl status ss5

# 需要确保支持X server
yum install xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Type1
# ∙ X11-forwarding : ✔ (remote display is forwarded through SSH)
# mobaxtern里浏览器访问
google-chrome --no-sandbox --proxy-server="socks5://xxx:1080"

1
2
# mac
open -a /Applications/Google\ Chrome.app --args --no-sandbox --proxy-server=socks5://127.0.0.1:8080

或者使用gost,以下为本地与本地代理之间的通信

本地代理和服务端代理之间为private协议

1
2
3
4
wget https://github.com/ginuerzh/gost/releases/download/v2.11.5/gost-linux-amd64-2.11.5.gz
gost -L user:pass@:1080 # 服务端
gost -L=:8080\?secrets=secrets.txt -F=socks5://user:pass@host:1080 # 境内代理
google-chrome --no-sandbox --proxy-server="127.0.0.1:8080"




HTTP状态码407表示代理服务器要求进行身份验证,但客户端没有提供有效的身份验证信息。这通常发生在需要代理身份验证的网络环境中。要处理HTTP 407状态码,客户端通常需要提供有效的身份验证凭据。这通常是通过在HTTP请求头中添加Proxy-Authorization字段来完成的。

例如:

1
Proxy-Authorization: Basic base64encoded(username:password)

这里,base64encoded是使用Base64编码生成的用户名和密码的字符串,https://base64.us/。

Windows指定某个软件走代理

通过proxycap配置Rules

cloudflare warp

在warp文件夹下,生成docker-compose.yml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
version: '3'

services:
warp:
image: caomingjun/warp
container_name: warp
ports:
- '1080:1080'
restart: always
environment:
- WARP_SLEEP=2
cap_add:
- NET_ADMIN
sysctls:
- net.ipv6.conf.all.disable_ipv6=0
- net.ipv4.conf.all.src_valid_mark=1
volumes:
- ./data:/var/lib/cloudflare-warp

启动容器,1080是已经走warp网络了的,但是该端口不对外,所以需要另外启动一个1088端口转发到该1080端口,1088端口启动加密并对外提供服务。

1
2
3
4
docker-compose up -d
curl --socks5 127.0.0.1:1080 https://cloudflare.com/cdn-cgi/trace
iptables -t filter -I INPUT -p tcp --dport 1088 -j ACCEPT -m comment --comment gost
./gost -L=socks5://user:passwd@:1088 -F=socks5://127.0.0.1:1080

nephen wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
坚持原创技术分享,您的支持将鼓励我继续创作!