全球主机交流论坛

标题: Chome翻译(完美)解决:代理谷歌翻译+hosts [打印本页]

作者: 好鸭    时间: 2022-10-25 01:14
标题: Chome翻译(完美)解决:代理谷歌翻译+hosts
本帖最后由 好鸭 于 2022-10-25 21:59 编辑

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

一、代理部分

① sniproxy方法(推荐)

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

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

1. 安装sniproxy
  1. apt-get install -y git autotools-dev cdbs debhelper dh-autoreconf dpkg-dev gettext libev-dev libpcre3-dev libudns-dev pkg-config fakeroot devscripts
复制代码

  1. git clone https://github.com/dlundquist/sniproxy.git
  2. cd sniproxy
  3. ./autogen.sh && dpkg-buildpackage
  4. dpkg -i ../sniproxy_*_*.deb
  5. apt-get install -y sniproxy
复制代码


2. 修改sniproxy配置
/etc/sniproxy.conf中的table https_hosts {部分添加translate.googleapis.com$ *



3. 启动sniproxy
只能这样启动
  1. sniproxy -c /etc/sniproxy.conf
复制代码


关闭
  1. /etc/init.d/sniproxy stop
  2. 或者
  3. pkill sniproxy
复制代码


② caddy方法
1. 安装caddy
  1. sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
  2. curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
  3. curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
  4. sudo apt update
  5. 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
下载它,然后使用命令生成并安装证书
  1. mkcert.exe translate.googleapis.com
  2. mkcert.exe --install
复制代码

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

3. 写caddy配置
以下注意把证书路径改为你自己自签证书的路径(如果和我的不一样),其他都不用动
  1. cat <<EOF >> /etc/caddy/Caddyfile
  2. translate.googleapis.com {
  3.         tls /home/translate.googleapis.com.pem /home/translate.googleapis.com-key.pem
  4.         reverse_proxy https://translate.googleapis.com {
  5.                 header_up Host {upstream_hostport}
  6.                 header_up X-Forwarded-Host {host}
  7.         }
  8. }
  9. EOF
复制代码


4. 重启caddy服务应用配置
  1. systemctl restart caddy
复制代码


③ nginx方法

以下是一份nginx代理配置,注意把证书路径改为你自己自签证书的路径(如果和我的不一样),其他都不用动
  1. server
  2.     {
  3.         listen 443 ssl http2;
  4.         #listen [::]:443 ssl http2;
  5.         server_name translate.googleapis.com;
  6.         ssl_certificate /home/translate.googleapis.com.pem;
  7.         ssl_certificate_key /home/translate.googleapis.com-key.pem;
  8.         location / {
  9.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  10.             proxy_set_header Host $http_host;
  11.             proxy_pass https://translate.googleapis.com;
  12.         }
  13.         access_log off;
  14.     }
复制代码


自签证书和上面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更简单,虽然性能差一点,这里不说了
  1. wget https://github.com/zhboner/realm/releases/download/v2.4.4/realm-x86_64-unknown-linux-musl.tar.gz
  2. tar xzvf realm-x86_64-unknown-linux-musl.tar.gz
  3. rm -f realm-x86_64-unknown-linux-musl.tar.gz
  4. mv realm /usr/bin
复制代码

  1. cat <<EOF >/opt/realm.toml
  2. [log]
  3. level = "warn"
  4. output = "/var/log/realm.log"

  5. [network]
  6. no_tcp = false
  7. use_udp = true

  8. [[endpoints]]
  9. listen = "0.0.0.0:443"
  10. remote = "translate.googleapis.com:443"
  11. EOF
复制代码

  1. cat <<EOF >/etc/systemd/system/realm.service
  2. [Unit]
  3. Description=realm server
  4. After=network.target

  5. [Service]
  6. Type=simple
  7. User=root
  8. LimitNOFILE=20480000
  9. ExecStart=/usr/bin/realm -c /opt/realm.toml
  10. Restart=on-failure

  11. [Install]
  12. WantedBy=multi-user.target
  13. EOF
复制代码

  1. systemctl start realm
  2. 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那一行的内容即可)
  1. # localhost name resolution is handled within DNS itself.
  2. 127.0.0.1       localhost
  3. ::1             localhost

  4. 123.123.123.123 translate.googleapis.com
复制代码


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



https://translate.googleapis.com/translate_static/css/translateelement.css
打开这个链接,应该能正常显示css的内容

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



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



四、实际效果部分





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

评论里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开发者模式加载已解压扩展即可,能用,不知道好不好用

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


作者: loveqianool    时间: 2022-10-25 01:17
装个沙拉查词不好吗
作者: 东方红    时间: 2022-10-25 01:20
提示: 作者被禁止或删除 内容自动屏蔽
作者: 好鸭    时间: 2022-10-25 01:21
loveqianool 发表于 2022-10-25 01:17
装个沙拉查词不好吗

有,但全页翻译看外国网站的时候要用到
作者: royaso    时间: 2022-10-25 01:22
腾讯翻译插件
你值得拥有
https://transmart.qq.com/zh-CN/download

整页翻译

作者: 好鸭    时间: 2022-10-25 01:35
本帖最后由 好鸭 于 2022-10-25 01:40 编辑
royaso 发表于 2022-10-25 01:22
腾讯翻译插件
你值得拥有
https://transmart.qq.com/zh-CN/download


刚试了一下,他这个chrome插件版的全页翻译好像用不了,啥反应都没有




一顿折腾后能用了,还是不错的,不过折腾好了自带翻译,还是用自带翻译好了


作者: CCCP    时间: 2022-10-25 01:37
点赞一下
作者: 国家富强    时间: 2022-10-25 06:03
点赞支持!
作者: riofredinand    时间: 2022-10-25 06:23
支持一下
作者: ShyGo    时间: 2022-10-25 07:55
直接4层代理,省去自签证书
作者: louiejordan    时间: 2022-10-25 08:00
费这么大劲,v2设置系统代理+绕过大陆不就行了
作者: nexus    时间: 2022-10-25 08:04
可可翻译这个插件也能实现整个网页翻译
作者: G.K.D    时间: 2022-10-25 09:05
本帖最后由 G.K.D 于 2022-10-25 09:20 编辑

整个翻译过程中的网络请求(基本都是 translate.googleapis.com),其中最初一部分不受扩展控制走直连(但受系统设置控制),其他部分则可以正常受扩展控制走代理/被重定向

因此想要让浏览器扩展如 SwitchyOmega 来控制内置翻译走代理,就必须让这个 “最初一部分” 的直连请求访问成功。这样 Chrome 浏览器才会继续下面的步骤(否则就会 “卡住”),加载翻译所需的 JS/CSS 文件,并由 JS 发起 POST 翻译请求,而这两个步骤环节都是受扩展控制的(也能从 F12- NetWork 中看到),可以走代理。

另外,这个 “最初一部分” 只会发生一次(如果这一次访问成功的话),访问成功后,后续就不会再这样干了,所以有人会发现只要系统代理设置里走全局,让浏览器翻译一次,再去掉全局,后续翻译就完全不需要这样做了,都会正常被扩展控制走代理了(直到关闭浏览器,下次打开浏览器还要这样干一遍才行)。

而这个 “最初一部分”,并不是在翻译时发生,而是翻译前,打开浏览器后第一次访问非中文网页时(浏览器右上角提示翻译),浏览器就会不受扩展控制强制直连访问一次 translate.googleapis.com,而如果打开浏览器后第一次访问的是中文网页,则就没有该请求,即不会这样做了,直到你打开了一个非中文网页,才会这样做。


顺便说一下,刚才把我昨天总结梳理的内容
https://hostloc.gdisk.cf/forum.php?mo ... 60&pid=13347233

给记录写成了文章:
「研究」Chrome 浏览器自带 谷歌翻译 为啥不受扩展控制?
https://zhuanlan.zhihu.com/p/576932998
作者: silence    时间: 2022-10-25 09:14
用header editor插件可以正常重定向请求,普通反代就行了,不需要自签证书

作者: coobar    时间: 2022-10-25 09:29
宝塔的nginx能替换caddy吗?
小白求支招~
作者: 西瓜皮    时间: 2022-10-25 09:31
我决定放弃了
作者: coobar    时间: 2022-10-25 09:35
silence 发表于 2022-10-25 09:14
用header editor插件可以正常重定向请求,普通反代就行了,不需要自签证书

兄弟,这个需要重定向到哪里呢?
作者: silence    时间: 2022-10-25 09:36
coobar 发表于 2022-10-25 09:35
兄弟,这个需要重定向到哪里呢?

重定向到自己反代的域名
作者: coobar    时间: 2022-10-25 09:46
自己反代需要设置反代到translate.googleapis.com吗?
作者: coobar    时间: 2022-10-25 09:52
silence 发表于 2022-10-25 09:36
重定向到自己反代的域名

自己反代需要设置反代到translate.googleapis.com吗?
作者: silence    时间: 2022-10-25 09:55
coobar 发表于 2022-10-25 09:52
自己反代需要设置反代到translate.googleapis.com吗?

对         
作者: 玛雅    时间: 2022-10-25 09:56
最好用的网页翻译是彩云小译
最好用的查词或者段落的是deepl
作者: coobar    时间: 2022-10-25 10:16
silence 发表于 2022-10-25 09:55

自建了反代,和https://gtranslate.cdn.haah.net   都不行。哎~
作者: silence    时间: 2022-10-25 10:18
coobar 发表于 2022-10-25 10:16
自建了反代,和https://gtranslate.cdn.haah.net   都不行。哎~

我试了下gtranslate.cdn.haah.net也能用,不要带https://
作者: Mintian    时间: 2022-10-25 10:34
mk
作者: Rz66    时间: 2022-10-25 10:36
好久没看到这种帖子了。插个眼先
作者: yushui    时间: 2022-10-25 10:40
mark一下
作者: gavin    时间: 2022-10-25 10:52
感谢分享,反代成功
作者: hostin    时间: 2022-10-25 10:56
腾讯的翻译插件很好用,暂时放弃谷歌原生翻译了
作者: 好鸭    时间: 2022-10-25 11:11
silence 发表于 2022-10-25 09:14
用header editor插件可以正常重定向请求,普通反代就行了,不需要自签证书

这个我上个帖子发过了,不是很可靠
作者: yushui    时间: 2022-10-25 11:12
nginx 部分 server_name translate.googleapis.com 这个不能填自己域名?一定要这样对吗?
作者: coobar    时间: 2022-10-25 11:14
silence 发表于 2022-10-25 10:18
我试了下gtranslate.cdn.haah.net也能用,不要带https://

也不行,哎~
作者: 好鸭    时间: 2022-10-25 11:20
yushui 发表于 2022-10-25 11:12
nginx 部分 server_name translate.googleapis.com 这个不能填自己域名?一定要这样对吗? ...

一定要这样,并且要自签证书
作者: Vicr    时间: 2022-10-25 11:27
技术贴,好久没看见了啊
作者: coobar    时间: 2022-10-25 11:37
本帖最后由 coobar 于 2022-10-25 11:41 编辑
好鸭 发表于 2022-10-25 11:20
一定要这样,并且要自签证书


搞定了,谢谢大佬
作者: 好鸭    时间: 2022-10-25 11:42
coobar 发表于 2022-10-25 11:37
新建网站要用:translate.googleapis.com网址还是自己的网址呢?或者说用小鸡的IP?
nginx配置的话,我完 ...

如果是宝塔的话,新建的时候随便填,然后点开网站配置,原内容删掉,换成帖子里那个反代配置即可。
作者: 之目鱼    时间: 2022-10-25 11:45
caddy 有自带的自签名域名 所以直接
  1. tls internal
复制代码
就行了,不用自己再签发一个了
作者: 好鸭    时间: 2022-10-25 11:52
之目鱼 发表于 2022-10-25 11:45
caddy 有自带的自签名域名 所以直接
就行了,不用自己再签发一个了

还得在电脑上信任证书呢
作者: lovecan    时间: 2022-10-25 12:12
好文章
作者: viqbgrg    时间: 2022-10-25 13:17
  1. stream {
  2.     map $ssl_preread_server_name $ssl_target {
  3.         translate.googleapis.com    $ssl_preread_server_name:443;
  4.         default    127.0.0.1:8443;
  5.     }

  6.     server {
  7.         listen 443;
  8.         resolver 1.1.1.1 ipv6=on;
  9.         resolver_timeout 1s;
  10.         proxy_pass $ssl_target;
  11.         ssl_preread on;
  12.     }
  13. }
复制代码


这样应该也可以,我还没有空,小鸡网不太好,还没有好好测试
作者: dole    时间: 2022-10-25 13:28
马克!
作者: 之目鱼    时间: 2022-10-25 14:02
好鸭 发表于 2022-10-25 11:52
还得在电脑上信任证书呢


确实,不过我一般都套了CF,所以问题不大
另外
  1. tls [email protected]
复制代码
也可以自动申请证书
作者: gitloc    时间: 2022-10-25 14:20
提示: 作者被禁止或删除 内容自动屏蔽
作者: 言和    时间: 2022-10-25 15:25
之目鱼 发表于 2022-10-25 14:02
确实,不过我一般都套了CF,所以问题不大
另外 也可以自动申请证书

哈哈哈,你用谷歌的域名怎么可能能申请到证书
作者: vistaspl    时间: 2022-10-25 16:51
虽然我一直在用,但不得不说Google的机翻是真的离谱,有歧义的词基本都不对
作者: yushui    时间: 2022-10-25 17:15
ShyGo 发表于 2022-10-25 07:55
直接4层代理,省去自签证书

大佬来个教程
作者: 好鸭    时间: 2022-10-25 18:01
yushui 发表于 2022-10-25 17:15
大佬来个教程

① sniproxy方法(推荐)
作者: gdtv    时间: 2022-10-25 19:07
用sniproxy方法,配置好,访问一下translate.googleapis.com来验证,正常,再访问………………小鸡鸡被封了,SSH也连不上了!!

连上ssh配置sniproxy整个过程10几分钟都没事,配置好后一访问translate.googleapis.com秒封!
作者: 好鸭    时间: 2022-10-25 19:21
gdtv 发表于 2022-10-25 19:07
用sniproxy方法,配置好,访问一下translate.googleapis.com来验证,正常,再访问………………小鸡鸡被封了 ...

节哀
作者: m556    时间: 2022-10-25 19:24
gdtv 发表于 2022-10-25 19:07
用sniproxy方法,配置好,访问一下translate.googleapis.com来验证,正常,再访问………………小鸡鸡被封了 ...

哪个服务商呀
作者: gdtv    时间: 2022-10-25 19:51
① sniproxy方法 失败
④ 端口转发方法 成功

感谢楼主
作者: 之目鱼    时间: 2022-10-25 20:19
言和 发表于 2022-10-25 15:25
哈哈哈,你用谷歌的域名怎么可能能申请到证书

反代肯定是自己的域名反代google吧
作者: 好鸭    时间: 2022-10-25 21:58
之目鱼 发表于 2022-10-25 20:19
反代肯定是自己的域名反代google吧

cpu烧了,那就正代吧
作者: pubkey    时间: 2022-10-25 22:41
之前没有接触过正向代理,这样搞,会被墙ip吗?
作者: intdos1    时间: 2022-10-26 09:25
mark
作者: coobar    时间: 2022-10-26 11:55
好鸭 发表于 2022-10-25 21:58
cpu烧了,那就正代吧

大佬,请问下如何生成crt证书分享给别人呢?
貌似没有证书的话,别人用不了




欢迎光临 全球主机交流论坛 (https://hostloc.gdisk.cf/) Powered by Discuz! X3.4