反代+hosts完美解决Google Chome翻译

感觉有点硬核了(其实也简单),有建站基础的MJJ应该得心应手。这个反代有点复杂,需要配置自签证书,这里是caddy的方法,如果你有其他http服务,直接加在你原本的http服务上面就好了,就不用caddy了

一、反代部分

① sniproxy方法(推荐)

相较于caddy nginx apache等七层代理的方法,好处是不需要自签证书,但是需要独立占用443端口,如果是一鸡多用,还要用到其他http服务,就往下看caddy、nginx的方法

参考这里的https://haoduck.com/713.html配置方法,把域名改成谷歌翻译的就行了

1. 安装sniproxy

apt-get install -y git autotools-dev cdbs debhelper dh-autoreconf dpkg-dev gettext libev-dev libpcre3-dev libudns-dev pkg-config fakeroot devscripts
git clone https://github.com/dlundquist/sniproxy.git
cd sniproxy
./autogen.sh && dpkg-buildpackage
dpkg -i ../sniproxy_*_*.deb
apt-get install -y sniproxy

2. 修改sniproxy配置

在/etc/sniproxy.conf中的table https_hosts {部分添加translate.googleapis.com$ *

图片[1]-反代+hosts完美解决Google Chome翻译-杨公子的博客

3. 启动sniproxy
只能这样启动

sniproxy -c /etc/sniproxy.conf

关闭

/etc/init.d/sniproxy stop
或者
pkill sniproxy

② caddy方法

1. 安装caddy

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

2. 生成自签证书
我用这个工具https://github.com/FiloSottile/mkcert,你也可以用其他工具,直接用openssl也可以
https://github.com/FiloSottile/mkcert/releases/download/v1.4.4/mkcert-v1.4.4-windows-amd64.exe
下载它,然后使用命令生成并安装证书

mkcert.exe translate.googleapis.com
mkcert.exe --install

目录下会得到translate.googleapis.com.pem和translate.googleapis.com-key.pem
我把它们传到小鸡上的/home目录(不要放在/root,caddy没权限)

3. 写caddy配置
以下注意把证书路径改为你自己自签证书的路径(如果和我的不一样),其他都不用动

cat <<EOF >> /etc/caddy/Caddyfile
translate.googleapis.com {
        tls /home/translate.googleapis.com.pem /home/translate.googleapis.com-key.pem
        reverse_proxy https://translate.googleapis.com {
                header_up Host {upstream_hostport}
                header_up X-Forwarded-Host {host}
        }
}
EOF

4. 重启caddy服务应用配置

systemctl restart caddy

③ nginx方法

以下是一份nginx反代配置,注意把证书路径改为你自己自签证书的路径(如果和我的不一样),其他都不用动。

server
    {
        listen 443 ssl http2;
        #listen [::]:443 ssl http2;
        server_name translate.googleapis.com;
        ssl_certificate /home/translate.googleapis.com.pem;
        ssl_certificate_key /home/translate.googleapis.com-key.pem;
        location / {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_pass https://translate.googleapis.com;
        }
        access_log off;
    }

自签证书和上面caddy的一样操作,这里不重复了

把这个配置放到它该在的目录,不过硬是要放到nginx.conf里也可以

例如:
apt安装的nginx,那么就可以放到/etc/nginx/conf.d/translate.googleapis.com.conf
lnmp.org的nginx,就可以放到/usr/local/nginx/conf/vhost/translate.googleapis.com.conf
宝塔的nginx,就可以放到/www/server/panel/vhost/nginx/translate.googleapis.com.conf (这个目录存疑,百度查的,但应该OK)

写好配置文件后,执行nginx -t

如果给你显示两行ok,那就ok,执行systemctl reload nginx应用配置

如果有报错,能看出什么问题就直接改,看不出就复制报错内容谷歌百度自己查。帖子里这份配置没什么问题,如果报错了,我猜是复制少了、复制多了、有其他的服务占用了端口。

④ 端口转发方法(不建议)

端口转发的方法好处是配置简单,也不用自签证书。就是简单的把服务器的443端口转发到translate.googleapis.com:443即可。

需要占用服务器的443端口,并且有可能被高墙扫到的话,就会把你的IP当作谷歌的,一并干掉。还有可能被其他个人扫去用(貌似能谷歌搜索)。不如caddy、nginx反代和sniproxy。

这里以realm为例,其他一样,或者干脆用iptables更简单,虽然性能差一点,这里不说了

wget https://github.com/zhboner/realm/releases/download/v2.4.4/realm-x86_64-unknown-linux-musl.tar.gz
tar xzvf realm-x86_64-unknown-linux-musl.tar.gz
rm -f realm-x86_64-unknown-linux-musl.tar.gz
mv realm /usr/bin
cat <<EOF >/opt/realm.toml
[log]
level = "warn"
output = "/var/log/realm.log"

[network]
no_tcp = false
use_udp = true

[[endpoints]]
listen = "0.0.0.0:443"
remote = "translate.googleapis.com:443"
EOF
cat <<EOF >/etc/systemd/system/realm.service
[Unit]
Description=realm server
After=network.target

[Service]
Type=simple
User=root
LimitNOFILE=20480000
ExecStart=/usr/bin/realm -c /opt/realm.toml
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF
systemctl start realm
systemctl enable realm

二、配置hosts

windows的话就是在C:\Windows\System32\drivers\etc\hosts,写入你的ip translate.googleapis.com,应该都知道吧。例如ip是123.123.123.123,那么就这样写(下列演示中::1    localhost及以上都是系统自带的,如果你的没有,不影响,在底下空白部分另起一行写上translate.googleapis.com那一行的内容即可)

# localhost name resolution is handled within DNS itself.
127.0.0.1       localhost
::1             localhost

123.123.123.123 translate.googleapis.com

三、 验证部分

验证反代是否正确的方法是在Chrome关掉代理(如果有),再打开F12浏览translate.googleapis.com,正常就是谷歌的404提示,控制台里看这个请求的IP是不是你hosts的小鸡的那个IP,如果是,就对了。

图片[2]-反代+hosts完美解决Google Chome翻译-杨公子的博客

https://translate.googleapis.com/translate_static/css/translateelement.css

打开这个链接,应该能正常显示css的内容

如果用的是caddy或者nginx反代的方法,理应能从地址栏左边的小锁头看到,是你自己的证书

图片[3]-反代+hosts完美解决Google Chome翻译-杨公子的博客

如果是sniproxy或者端口转发的方法(或者干脆是没有成功,判断就是F12看是你的IP还是谷歌的IP),就能看到是谷歌的证书

图片[4]-反代+hosts完美解决Google Chome翻译-杨公子的博客

四、实际效果部分

图片[5]-反代+hosts完美解决Google Chome翻译-杨公子的博客
图片[6]-反代+hosts完美解决Google Chome翻译-杨公子的博客

五、备选,腾讯交互翻译插件

评论里MJJ发的

https://transmart.qq.com/zh-CN/download

Chrome插件版本:https://cdn.transmart.qq.com/installation_pro/TranSmart_chrome-0.2.0_plugin_chrome.zip

下载解压后在Chrome开发者模式加载已解压扩展即可,能用,不知道好不好用

还有一点就是它是腾讯的,我不太信得过它

图片[7]-反代+hosts完美解决Google Chome翻译-杨公子的博客
© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片