Chrome 右键翻译,怎么 fix?

2022-10-23 15:56:35 +08:00
 JinTianYi456
// 我的 pac 文件内容
function FindProxyForURL(url, host) {
    if (host == "translate.googleapis.com") {
        return "HTTP <IP>:<端口>";
    }

    return "DIRECT";
}

// 甚至,我把 SwitchyOmega 里的导出为 pac 来试,也不行
14728 次点击
所在节点    Google
90 条回复
jimmyczm
2022-10-24 15:06:03 +08:00
用划词翻译里的 deep 吧,比谷歌的准
jackma0571
2022-10-24 15:12:52 +08:00
最简单的就是改 hosts
Hellert
2022-10-24 16:24:21 +08:00
问题就在 gfwlist ,因为开全局,翻译是没问题的。
我用的 v2rayN ,安装目录下有个 pac.txt ,把里面的 translate.googleapis.com 直连规则删掉,然后重启浏览器,翻译就正常了,看 v2ray 客户端日志,翻译开始走代理了,之前日志里是看不到的。
Martin88
2022-10-24 20:44:51 +08:00
@Hellert 老哥,我也是 v2rayN ,开全局倒是没问题,绕大陆就不行了,我下的是压缩包,里面没有你说的 pac.txt 文件,怎么操作啊,谢谢
Hellert
2022-10-24 21:32:51 +08:00
@Martin88 检查更新-pac ,试试
icaolei
2022-10-24 23:07:39 +08:00
我现在是需要翻译网页的时候就开下 Clash For Windows 的 TUN 模式,用完后又关掉。太蛋疼了。
XIU2
2022-10-25 00:20:21 +08:00
@XIU2 #57 #58 做个最后总结吧!

Chrome 内置全页谷歌翻译,其实并不是完全不受扩展控制,准确来说是:
一部分不受扩展控制走直连(但受系统代理设置控制),一部分则可以正常受扩展控制走代理。

打开浏览器后,第一次访问其他语言的网页时(即右上角提示翻译,但你还没有去点击翻译),浏览器就会访问一次 translate. googleapis. com 来获取什么,而这次访问是不受浏览器扩展控制的。

也就是,浏览器监测到网页语言不一样时,就会去不受扩展控制的强制直连访问一次 translate. googleapis. com ,后续在浏览器关闭之前就不会再这样做了,因此只要这一次强制直连访问成功,那么后续进行翻译都可以由扩展控制走代理或重定向了。

而一些人之所以会出现明明手动访问 CSS/JS 等静态文件可以正常走代理 /重定向,但依然无法翻译的情况,就是因为这个 Chrome 强制直连的链接没有被重定向导致的,而另外一批成功翻译的人,其实就是因为这次强制直连因为某些原因访问成功了,所以后续的翻译请求才会被重定向至国内 CDN 加速地址。

——————

在 Chrome 浏览器中点击 翻译 选项后的流程逻辑是:
(注意,只有强制直连那次访问成功,浏览器才会进行下面这些的步骤环节)
1. 浏览器加载翻译所需的静态文件( JS/CSS 等)
2. 由刚刚加载的 JS 脚本发起 POST 翻译请求并处理

而这两个环节产生的网络链接都能正常受扩展控制,可以走代理或被重定向。

——————

我前几天写的这个教程,就是依靠扩展把 translate. googleapis. com 重定向至 gtranslate. cdn. haah. net ,结果评论区 /私信中,有大量用户反馈依然不行,但是也有部分人反馈可以,这种奇怪的现象迫使我仔细研究了一番 Chrome 的翻译机制,才大致搞明白了,确实挺奇葩的,我也想不明白,为什么 Chrome 浏览器要这样做,而且还是内核中写死的。。。
https://zhuanlan.zhihu.com/p/576290326

现在想来,我之所以能重定向成功,就是因为当初测试效果时,我的 Hosts 文件中已经加的有将其指向可用的谷歌国外 IP 的内容了,而我当时还不清楚这么多弯弯道道,以为只靠扩展重定向就完美解决了,还很兴奋的第一时间熬夜写教程,结果第二天大量用户在评论区反馈不行。。。搞得我就很尴尬,刚才我又重写了这篇文章教程,这次应该没啥问题了~


想要验证这点也很简单,只需要在 Hosts 中将 translate. googleapis. com 指向一个不可用的错误 IP 并重启 Chrome 浏览器(刷新缓存),然后再去尝试翻译,就会发现翻译失败了。

而一旦指向一个可用的 IP (我用的是谷歌国外 IP ),那么翻译时就能在 F12 - NetWork (网络)中看到发起的 POST 翻译请求被扩展控制走了代理 /重定向(如果是前面那样将其指向不可用的错误 IP ,那么这种情况下尝试翻译,会发现 NetWork 看不到任何 翻译请求 的网络链接信息)。

——————

以上就是我这两天,断断续续抽空研究的成果(非专业,只是根据各种测试、抓包来判断)。

毕竟我既然发了文章教程,就要负责到底,熬夜写半天结果搞出个有缺陷的教程那就是在太亏了,而且还每天一群人评论区 /私信反馈说用不了来 “打我脸” ,属实把我搞烦的不行。。。

迫使我研究了一番,并重写了一下这个文章教程才终于舒服一点了~
Stoney
2022-10-25 01:47:07 +08:00
开启系统代理可以
anoncat
2022-10-25 06:17:24 +08:00
@Minden
艹 从 hosts 到 header edit 再到 v2ray proxy rule 差点搞小鸡装 caddy
大费周章半天转一圈发现带上 switchyomega whitelist 都玩不转 最后到你这突然发现我平时也开着 proixfier4
直接加一条规则完事😀特来登录评论
话说老哥 v2rayn 平时不开系统代理吧 新版路由规则太蛋疼
怎么解决 swichyomega 系统代理模式实现以前的 ssr gfwlist pac 黑名单情景的?
anoncat
2022-10-25 06:40:32 +08:00
@owtotwo
老哥怎么解决 swichyomega 系统代理模式实现以前的 ssr gfwlist pac 黑名单情景呢?
anoncat
2022-10-25 08:00:11 +08:00
@XIU2 所以初次强制直连的域名还是 translate. googleapis. com 吗(那些 cdn 成功的人才是开了系统代理的“不正常”ones 吧)?
其实西柚哥不必再纠结 nginx/caddy 反代 http 即可 懒得弄的直接 proxifier host 完事
XIU2
2022-10-25 08:27:31 +08:00
@anoncat 对,在第一次访问到其他语言的网页时,浏览器就会强制直连访问一次 translate. googleapis. com ,我专门抓包看过了,在打开浏览器后第一次访问中文网页,则没有。

只有“这一次”的强制直连访问 translate. googleapis. com 成功,那么后续的翻译过程就完全受扩展控制,可以走代理 /重定向了,如果不成功,整个翻译功能流程就会 “卡住”,不再继续后续的步骤了(加载翻译所需的静态 JS 脚本什么的),NetWork 也看不到任何相关网络链接。

我研究这个不是给自己用的,我自己早就有完美解决方案了,不过因为一些原因只能自用,所以我才想要找个适合大众使用的低门槛解决方案。
最后想到的最简单方案,还是 Hosts 指向可用的谷歌国外 IP ,这样正常情况下就能翻译了,如果想要翻译速度更快、更稳定,那么可以再整个重定向到国内 CDN 加速地址。这样除了强制直连的那一次外,其他翻译过程中的网络请求都会被重定向。
Minden
2022-10-25 09:49:55 +08:00
@anoncat 我是禁用系统代理的,swichomega 用 auto switch 情景模式,规则列表设置就添加 gfwlist 。要是用系统代理就没必要用 Swichomega 了😄
zedboy
2022-10-25 09:59:28 +08:00
142.250.4.90 translate.googleapis.com


加到 hosts 2022 年 10 月 25 日还有效
fiveStarLaoliang
2022-10-25 10:31:46 +08:00
亲测有个一劳永逸的办法:
1. SwitchyOmega 配置 2 条规则 *.google.com ,*.googleapis.com
2. v2rayN 配置 路由设置 --> 绕过大陆 --> proxy 拉到第一 --> protocol 勾选 http,tls --> Domain 填入 doamin:translate.google.com, domain:translate.googleapis.com
hanssx
2022-10-25 12:37:18 +08:00
@Minden Proxifier 我看了一下,是收费软件吧?
teacer
2022-10-25 13:11:01 +08:00
@anoncat 这个软件好几年前用过,功能都忘了,但是你提醒我了,亲测有效。感谢!
teacer
2022-10-25 13:11:58 +08:00
@Minden 解决了,感谢。
brader
2022-10-25 18:24:35 +08:00
我的电脑代理软件是会在 Internet 选项->连接->局域网设置->代理服务器 把代理指向我的代理端口,这样正常使用没有问题
XIU2
2022-10-25 21:18:09 +08:00
@brader 对,Chrome 在翻译前的那一次强制直连访问 translate. googleapis. com 时,虽然不受 SwitchyOmega 等扩展的控制,但却受浏览器外的如 系统代理设置、Hosts 的影响。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/889119

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX