1、Caddy

使用 Caddy 反代谷歌十分简单,并且支持自动配置 SSL。前提是 VPS 上没有安装其他的 HTTP Server。

安装 Caddy

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh install http.filemanager

配置文件

# 以下全部内容是一个整体,全部复制粘贴到 SSH 软件中一并执行
# 更改 yourdomain 为你的域名,并提前将它解析到你 VPS 的 IP
# 更改 xxxx@xxx.xx 为你的邮箱
# 更改 user passwd 为你自己的用户名及密码
# 若公开使用则删除 basicauth 一行,强烈不推荐。

echo "https://yourdomain {
 gzip
 tls xxxx@xxx.xx
 basicauth / user passwd
 proxy / https://www.google.com.hk
}" > /usr/local/caddy/Caddyfile

然后重启,即可访问你的域名使用谷歌了。

/etc/init.d/caddy restart

启动错误

一些系统会自带 apache2 ,而 apache2 会占用 80 端口,导致 Caddy 无法绑定端口,所以只要关掉就好了。

kill -9 $(ps -ef|grep "apache2"|grep -v "grep"|awk '{print $2}') && apt-get remove --purge apache2 -y

然后再次重启 Caddy

/etc/init.d/caddy restart

2、Nginx

安装 Nginx

Debian8 安装 Nginx:

curl http://nginx.org/keys/nginx_signing.key | apt-key add - && echo "deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx" >> /etc/apt/sources.list.d/nginx.list && echo "deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx  " >> /etc/apt/sources.list.d/nginx.list && echo "deb http://httpredir.debian.org/debian/ jessie-backports main contrib non-free" >> /etc/apt/sources.list.d/backports.list && echo "deb-src http://httpredir.debian.org/debian/ jessie-backports main contrib non-free" >> /etc/apt/sources.list.d/backports.list && apt-get update && apt-get install -t jessie-backports openssl -y && apt-get install -y nginx 

Debian9 安装 Nginx:

curl http://nginx.org/keys/nginx_signing.key | apt-key add - && echo "deb http://nginx.org/packages/mainline/debian/ stretch nginx" >> /etc/apt/sources.list.d/nginx.list && echo "deb-src http://nginx.org/packages/mainline/debian/ stretch nginx" >> /etc/apt/sources.list.d/nginx.list  && apt update && apt install -y nginx

申请 SSL

先将域名解析到 VPS 的 IP,访问域名,出现 Welcome to nginx! 然后申请证书:

# 安装 ACME.SH
curl -L get.acme.sh | bash
# 关闭 SSH 窗口,重新进入
# 将 yourdomain 更改为你的域名
acme.sh --issue -w /usr/share/nginx/html -d 你的域名

配置文件

创建认证文件

# 将 passwd 更换为你的密码
openssl passwd
# 将 username 更改为你的用户名,将 PASSWORD 更改为上一步生成的内容
echo "username:$(openssl passwd -crypt PASSWORD)" > /etc/nginx/passwdfile
mkdir /home/nginx && mkdir /home/nginx/cache && mkdir /home/nginx/temp && vim /etc/nginx/conf.d/gg.conf

复制下面配置文件,将 YOURDOMAIN 更改为你的域名

proxy_cache_path /home/nginx/cache levels=1:2 keys_zone=proxycache:60m max_size=120m inactive=2h use_temp_path=on;
proxy_temp_path /home/nginx/temp;
proxy_cache_key $host$request_uri;

upstream www.google.com {
	server 74.125.199.101:443;
	server 74.125.199.102:443;
	server 74.125.199.103:443;
	server 74.125.199.104:443;
	server 74.125.199.105:443;
}

server {
	listen 80;
	server_name YOURDOMAIN;
	root /usr/share/nginx/html;
    
	location /.well-known/acme-challenge/ { allow all; }
	location / { return 301 https://$host$request_uri; }
}

server {
	listen 443 ssl http2;
	server_name YOURDOMAIN;

	ssl on;
	ssl_protocols TLSv1.2;
	ssl_certificate /root/.acme.sh/YOURDOMAIN/fullchain.cer;
	ssl_certificate_key /root/.acme.sh/YOURDOMAIN/YOURDOMAIN.key;

	ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
	ssl_prefer_server_ciphers on;
    
	location / {
		sub_filter www.google.com YOURDOMAIN;
		sub_filter_once off;
        
		proxy_pass https://www.google.com;
		proxy_redirect off;
		proxy_set_header  Host "www.google.com";
		proxy_set_header  Referer $http_referer;
		proxy_set_header  X-Real-IP $remote_addr;
		proxy_set_header  User-Agent $http_user_agent;
		proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header  X-Forwarded-Proto https;
		proxy_set_header  Accept-Encoding "";
		proxy_set_header  Accept-Language "zh-CN";
		proxy_cookie_domain www.google.com YOURDOMAIN;
		proxy_set_header  Cookie  "PREF=ID=047808f19f6de346:U=0f62f33dd8549d11:FF=2:LD=en-US:NW=1:TM=1325338577:LM=1332142444:GM=1:SG=2:S=rE0SyJh2W1IQ-Maw";

		proxy_cache proxycache;
		proxy_cache_valid 304 2h;
		proxy_cache_valid 403 444 2h;
		proxy_cache_valid 404 2h;
		proxy_cache_valid 500 502 2h;
		proxy_cache_use_stale invalid_header http_404 http_500 http_502;
		proxy_cache_lock on;
		proxy_cache_lock_timeout 5s;
		
		auth_basic "Authorization";
		auth_basic_user_file /etc/nginx/passwdfile;
	}
}

然后重启 Nginx

nginx -s reload

访问域名,使用你设置的用户名及密码认证后即可使用谷歌。


本文参考了 1 & 2 & https://yjk.im/proxy-gg/