Chrome 翻译强制代理方案

Chrome 浏览器的内置翻译功能需要直连 Google 服务。只有在开启 Clash 的系统代理或 TUN 模式(全局代理)时,翻译功能才能正常工作。

但我的日常习惯是不开系统代理或 TUN 模式,避免影响其他软件的网络行为。浏览器流量通过 ZeroOmega 插件经 SOCKS5 代理转发到 Clash。

问题在于:ZeroOmega 只能代理网页内容请求,Chrome 内置的翻译请求不经过插件,因此无法使用翻译功能。

解决方案参考:SwitchyOmega/issues/264

原理

核心思路分两步:

  1. hosts 劫持:将 Google 翻译域名指向本地回环地址,让翻译请求发往本机
  2. Clash 隧道转发:Clash 监听本地对应端口,将收到的流量通过代理转发到真正的目标服务器

基础方案

步骤 1:修改 hosts

127.0.0.1  translate.google.com
127.0.0.1  translate.googleapis.com

步骤 2:配置 Clash 隧道

在 Clash 配置文件中添加:

tunnels:
  - tcp,127.0.0.1:443,translate.googleapis.com:443,PROXY

PROXY 对应一个 proxy-groups 的名称,此处我的配置中用它作为默认策略组,未做细分分流:

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

127.0.0.2  translate.google.com
127.0.0.2  translate.googleapis.com

步骤 2:配置 Clash 隧道

tunnels:
  - tcp,127.0.0.2:443,translate.googleapis.com:443,PROXY

proxy-groups 配置与基础方案相同,只需将监听地址从 127.0.0.1 换成 127.0.0.2。完整配置参考:

proxy-groups:
  -
    name: PROXY
    type: select
    include-all-proxies: true
  
tunnels:
  - tcp,127.0.0.2:443,translate.googleapis.com:443,PROXY

20260710更新:
最近发现如果内核的dns配置use-system-hosts是true,那么会陷入以下循环
域名 → host → 内核 → host → 内核 …
加上这个配置可以解决

dns:
  use-system-hosts: false

配置截图


16 个赞

马可一下思路,虽然现在不怎么用自带的翻译了

clash 隧道,真是高级用法啊

如果是v2ray,该怎么配置隧道转发

这个就不太清楚
整体思路如上 让Ai给你试试

chrome.exe --proxy-server=...

分流不就行了 感觉好复杂的样子:joy:

没有clash的可以用这个 GitHub - Greyh4t/rhttps: 修复 chrome 浏览器内置翻译功能 · GitHub

为什么 hosts 里配置了 127.0.0.1 translate.google.com 但是后面的隧道转发只有 127.0.0.1 translate.googleapis.com

其实只要这一条就够了 127.0.0.1 translate.googleapis.com

赞,再也不用启用系统全局代理了,同时还能让不支持系统代理的应用走代理

用Proxifier设置chrome的googleapis.com的请求走代理即可