前言
当代信息技术起源于美丽国,随着中国近20年产业发展,站在巨人的肩膀上,互联网应用在国内遍地开花,发扬光大。遥想自己还是程序员那会儿,每操作一台Linux服务器,或是用PHP写一段代码,内心充满了对欧美祖师爷的感恩之情。
为了离他们更近,快速高效的使用google和chatGPT,成为程序员的必备技能,下面介绍自己使用中的代理加速方案,做个记录,同时分享给有需要的人。
苍天在上,本人郑重声明,本人爱国爱党爱人民,热爱这片土地,使用代理技术只是满足个人学习工作需求,绝不做汉奸和背叛人民的事情!!
代理加速的使用场景
- 访问Google/SlideShare/ChatGPT/Wikipedia等常用工具网站,使用其提供的产品和服务
- 娱乐需求(如访问Youtube/Pornhub/Instagram等)
- 一些云服务(如Dropbox)
- 中立媒体的新闻评论
- 想看一些不那么容易好找的书籍(如《鸿:三代中国女人的故事》)
- 访问github
- “go get”命令中,下载某些轮子库
…
准备工作
- 一台具备固定IPV4地址的VPS,如手头购买的是AWS服务1C512M的基础款,已足够个人使用。
- 操作系统选择的是OpenSUSE15.5, AWS上的VPS已使用了近2年,换来换去,觉得这款易用性最高~
- Linux系统基础知识
- 提前申请好的域名和证书
加速方案
- 目前流行的代理加速方案有很多,我这里选用的是gost。
- 优点:
- 使用docker镜像部署,方便快捷,易用省心。
- 国人开发,中文支持好,使用群体广泛。
- 代码开源,方便二次开发。
操作步骤
操作系统更新(openSuSE15.5, 登录用户为ec2-user)
1
sudo zypper update
安装docker
1
sudo zypper install docker docker-compose docker-compose-switch
下载镜像
1
sudo docker pull ginuerzh/gost
编写启动脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#!/bin/bash
# 创建一个配置目录(/etc/gost/pems),用来存放证书,本例中的域名证书,申请于腾讯云。
# 下面的四个参数需要改成你的
DOMAIN="这里填写域名"
USER="这里填写认证用户名"
PASS="这里填写认证密码"
PORT=443
BIND_IP=0.0.0.0
CERT_DIR=/etc/gost/pems
CERT=${CERT_DIR}/*.pem
KEY=${CERT_DIR}/*.key
sudo docker run -d --name gost \
-v ${CERT_DIR}:${CERT_DIR}:ro \
--net=host ginuerzh/gost \
-L "http2://${USER}:${PASS}@${BIND_IP}:${PORT}?cert=${CERT}&key=${KEY}&probe_resist=code:404&knock=www.google.com"- 关于 gost 的参数, 你可以参看其文档:Gost Wiki,上面我设置一个参数 probe_resist=code:404 意思是,如果服务器被探测,或是用浏览器来访问,返回404错误,也可以返回一个网页(如:probe_resist=file:/path/to/file.txt 或其它网站 probe_resist=web:example.com/page.html)
- 开启了探测防御功能后,当认证失败时服务器默认不会响应 407 Proxy Authentication Required,但某些情况下客户端需要服务器告知代理是否需要认证(例如Chrome中的 SwitchyOmega 插件)。通过knock参数设置服务器才会发送407响应。对于上面的例子,我们的knock参数配置的是www.google.com,所以,你需要先访问一下 https://www.google.com 让服务端返回一个 407 后,SwitchyOmega 才能正常工作。
如果认证信息(也就是用户名和密码)中包含特殊字符,则可以(应该是必须!否则客户端一侧会有很多不兼容)通过auth参数来设置,下面是使用 auth 参数的例子(注意,需要 gost 在 2.9.2+ 以上版本):1
2
3
4
5
6
7
8
9
10
11
12
13
14DOMAIN="YOU.DOMAIN.NAME"
USER="username"
PASS="password"
PORT=443
AUTH=$(echo -n ${USER}:${PASS} | base64)
BIND_IP=0.0.0.0
CERT_DIR=/etc/letsencrypt
CERT=${CERT_DIR}/live/${DOMAIN}/fullchain.pem
KEY=${CERT_DIR}/live/${DOMAIN}/privkey.pem
sudo docker run -d --name gost \
-v ${CERT_DIR}:${CERT_DIR}:ro \
--net=host ginuerzh/gost \
-L "http2://${BIND_IP}:${PORT}?auth=${AUTH}&cert=${CERT}&key=${KEY}&probe_resist=code:404&knock=www.go ogle.> com"
执行脚本,看到端口443已经处于监听状态
1
2
3
4
5ip-172-26-10-179:~ # ss -nltp
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=4551,fd=3))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=4551,fd=4))
LISTEN 0 4096 *:443 *:* users:(("gost",pid=3597,fd=6))在VPS提供商控制面板,打开443端口的防火墙
windows系统,配置clash,启用全局代理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23port: 1080
allow-lan: false
mode: Global
log-level: info
proxies:
- name: "gost"
type: http
server: 填写域名
port: 填写端口
username: 用户名
password: 密码
tls: true
skip-cert-verify: true
proxy-groups:
- name: DefaultProxyGroup
type: url-test
proxies:
- gost
url: 'https://www.google.com/'
interval: 300
rules:
- "MATCH,DIRECT"iphone手机,配置shadowrocket…
推荐最详细教程:https://haoel.github.io/