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 来试,也不行
13665 次点击
所在节点    Google
90 条回复
v2defy
2022-10-23 16:16:25 +08:00
不使用 SwitchyOmega 试试呢
gdfsjunjun
2022-10-23 16:16:41 +08:00
hosts 试过已经失效了,看来 IP 是彻底封了。
改用 Edge 解决
eason1874
2022-10-23 16:22:09 +08:00
你用 SwitchyOmega 扩展的话,只用它就可以了,我测试了,可以的,添加规则让 translate.googleapis.com 走代理就可以(以前流行的规则大部分把 googleapis 设为直连,所以现在要重新设为代理)
JinTianYi456
2022-10-23 16:29:48 +08:00
@eason1874 #3 `并在里面配了 googleapis 的规则,所以翻译扩展是 ok 的。但右键翻译用不了`,但我用不了呀~ why?
是不是你以为是 SwitchyOmega 帮你处理了右键翻译,但其实右键翻译走到的是你系统代理设置
zhuweiyou
2022-10-23 16:30:57 +08:00
clash mixins 加一条规则
JinTianYi456
2022-10-23 16:33:53 +08:00
@zhuweiyou #5 抱歉,我的电脑里并没有运行任何的 clash/ray/ss 代理程序,我是直接使用一个远程的 http proxy
XIU2
2022-10-23 16:38:41 +08:00
我刚刚研究了半天,发现 Chrome 浏览器全页翻译的大概流程是(以下说的域名 /流量均指的是 translate. googleapis. com ):

1. Chrome 强制直连访问 translate. googleapis. com 获取了什么
2. 加载了几个翻译所需的静态文件( CSS 、JS 啥的)
3. 刚刚加载并运行的 element_main.js 脚本发起 POST 翻译请求
4. 处理翻译结果,修改网站内容

第 1 条,我搞不明白,但确定其直连访问了,完全不受扩展控制来走代理。
第 2 、3 条,都可以走代理,完全受扩展控制。

即整个翻译流程,一部分流量强制直连,一部分流量可以走代理。

复现方法:
1. 通过 Hosts 中将该域名指向可用的谷歌国外 IP 。
2. 浏览器中配置 SwitchyOmega 扩展让该域名走代理。
3. 打开 Win 自带的资源监视器,勾选代理、浏览器的进程(用来查看访问了哪个 IP )
4. 浏览器打开测试网页,F12 打开开发者工具,选择 NetWork (网络)
5. 开始翻译当前网页,观察 NetWork 中结果,发现加载静态文件、发起 POST 翻译请求都走了代理
6. 观察 资源监视器 中结果,发现 Chrome 直连访问了 Hosts 中指向的谷歌国外 IP ,以及 Chrome 访问了代理。

我感觉我就是在瞎折腾。。。折腾的我头晕,如果犯了什么常识性错误勿喷~
x86
2022-10-23 16:39:38 +08:00
eason1874
2022-10-23 16:44:08 +08:00
@JinTianYi456 #4 我测试的时候把系统代理关掉了,确定可以。切换到添加有 translate 域名的情景模式可以翻译,切换到没有的就不能翻译。如果你添加了也不行,可能是 DNS 的问题
cnfzv
2022-10-23 16:52:37 +08:00
@XIU2 我正好研究过,知道一点。谷歌调用翻译的部分请求是不走扩展的代理配置的,无论扩展配置了什么都没用,指定浏览器的代理的话可以有效果。如果要让翻译走扩展配置的代理,可能只有改源码才能实现
XIU2
2022-10-23 16:56:35 +08:00
@cnfzv 我刚刚在 Chrome 启动参数里加上了
--flag-switches-begin --flag-switches-end -enable-logging=stderr --v=1
来查看实时网络调试日志。

结果测试了好几遍,滚动日志里没发现有额外的网络链接。。。
依旧是依次:1 个 CSS 样式文件、2 个 JS 脚本文件、2 个 PNG 图片文件、4 个 POST 请求

和 NetWork 看到的一致,这就奇了怪了,难道我前面得出的结论是错误的么,但资源监视器里看确实是 Chrome 进程直连了 Hosts 中指定的可用谷歌国外 IP ,并且也走了代理。

还是说这条启动参数也看不到 Chrome 强制直连的那个网络链接?。。。

彻底蒙圈了~
lookas2001
2022-10-23 17:02:30 +08:00
用 netch 走系统路由层代理
s12348765
2022-10-23 17:13:28 +08:00
用的 腾讯翻译插件
JinTianYi456
2022-10-23 17:17:36 +08:00
@x86 #8 试了他说的方法,从里面选了一个 IP 放到 hosts 里,ok 了 (注意,不是每个都有效的,我试到第 2 次才 ok)
JinTianYi456
2022-10-23 17:20:34 +08:00
但还是想不明白,为啥我配置 PAC 不生效呢?
cnfzv
2022-10-23 17:22:05 +08:00
@XIU2 建议你用抓包工具直接抓取,走的域名应该都是*.googleapis.com 这个里面的
VvvzzZ
2022-10-23 17:28:29 +08:00

https://v2ex.com/t/888970#r_12246970
选一个添加到 hosts
owtotwo
2022-10-23 17:28:35 +08:00
我以为只有我在折腾谷歌翻译的问题,原来大家都在折腾 XD

我的解决方案是(以下域名指 translate.googleapis.com
1. 之前改动的 hosts 文件中指向的谷歌上海 IP 注释掉,让这域名正常走国外谷歌 IP (因为貌似上海 IP 已经间歇性不太能用了)
2. Proxifier 强制拦截 translate.googleapis.com 让它走代理( http 还是 sock5 都可 能访问国外谷歌 IP 的即可)
3. SwitchyOmega 无论是让这域名直连还是全局 都不影响 因为都会被 Proxifier 捕获到
4. 这样 chrome 无论是否适用插件还是本身自带的页面翻译 都能用了

总结思路就是:想办法让对于 translate.googleapis.com 这域名的请求能抵达国外谷歌 IP
wanacry
2022-10-23 17:31:31 +08:00
都能上 v 站了还需要折腾吗?
eason1874
2022-10-23 17:36:59 +08:00
@JinTianYi456 #15 我刚又测试了一下,原来我关掉自动系统代理只用扩展也能翻译是因为 chrome 缓存了 pac 文件,我关掉 chrome 再打开,就不行了。我知道 windows 会缓存 pac 文件,没想到 chrome 还有一份缓存。你修改 pac 文件不生效,可能也是缓存问题

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

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

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

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

© 2021 V2EX