Chrome 翻译强制代理方案
背景
Chrome 浏览器的内置翻译功能需要直连 Google 服务。只有在开启 Clash 的系统代理或 TUN 模式(全局代理)时,翻译功能才能正常工作。
但我的日常习惯是不开系统代理或 TUN 模式,避免影响其他软件的网络行为。浏览器流量通过 ZeroOmega 插件经 SOCKS5 代理转发到 Clash。
问题在于:ZeroOmega 只能代理网页内容请求,Chrome 内置的翻译请求不经过插件,因此无法使用翻译功能。
解决方案参考:SwitchyOmega/issues/264
原理
核心思路分两步:
- hosts 劫持:将 Google 翻译域名指向本地回环地址,让翻译请求发往本机
- Clash 隧道转发:Clash 监听本地对应端口,将收到的流量通过代理转发到真正的目标服务器
基础方案
步骤 1:修改 hosts
1 | 127.0.0.1 translate.google.com |
步骤 2:配置 Clash 隧道
在 Clash 配置文件中添加:
1 | tunnels: |
PROXY对应一个 proxy-groups 的名称,此处我的配置中用它作为默认策略组,未做细分分流:
1
2
3
4
5 proxy-groups:
-
name: PROXY
type: select
include-all-proxies: true
优化方案
基础方案有一个隐患:127.0.0.1:443 可能与本地开发的 HTTPS 服务(如 localhost:443)冲突。
IPv4 环回地址范围是 127.0.0.0 ~ 127.255.255.255,改用 127.0.0.2 即可避开。
步骤 1:修改 hosts
1 | 127.0.0.2 translate.google.com |
步骤 2:配置 Clash 隧道
1 | tunnels: |
proxy-groups 配置与基础方案相同,只需将监听地址从
127.0.0.1换成127.0.0.2。完整配置参考:
1
2
3
4
5
6
7
8 proxy-groups:
-
name: PROXY
type: select
include-all-proxies: true
tunnels:
- tcp,127.0.0.2:443,translate.googleapis.com:443,PROXY
配置截图
评论