0%

使用 Xray 解决谷歌翻译不可用的问题

在 Windows 上,使用 WinSWXray-core 配置为开机自启服务,浏览器使用 SmartProxy 管理网络请求,可以避免 TUN 模式或系统代理对其他应用的影响。
但 Chrome 的翻译功能并不使用 SmartProxy 设置的代理,所以会出现谷歌翻译不可用。
解决方法是,使用 Xray 的 Dokodemo-Door 功能,将请求转发到代理。

配置文件示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"inbounds": [
{
"tag": "google_apis",
"protocol": "dokodemo-door",
"listen": "127.0.10.100",
"port": 443,
"settings": {
"address": "translate.googleapis.com",
"port": 443
}
}
]
}

C:\Windows\System32\drivers\etc\hosts 内添加以下内容:

1
127.0.10.100 translate.googleapis.com

hosts 文件将谷歌翻译的域名指向 Xray 监听的地址,浏览器发起的请求将会由 Xray 处理,Xray 内部经过 routing 判断后,请求会转发到合适的出站代理。

dokodemo-door 配置里的 listen 写的不是 127.0.0.1,不会影响其他软件监听 443 端口。
事实上,127.0.0.0/8 都属于本地环回地址,可以使用多个地址来实现而不出现端口冲突。

这是为 Bitwarden 编写的配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
{
"inbounds": [
{
"tag": "bitwarden_main",
"protocol": "dokodemo-door",
"listen": "127.0.20.100",
"port": 443,
"settings": {
"address": "bitwarden.com",
"port": 443
}
},
{
"tag": "bitwarden_api",
"protocol": "dokodemo-door",
"listen": "127.0.20.101",
"port": 443,
"settings": {
"address": "api.bitwarden.com",
"port": 443
}
},
{
"tag": "bitwarden_identity",
"protocol": "dokodemo-door",
"listen": "127.0.20.102",
"port": 443,
"settings": {
"address": "identity.bitwarden.com",
"port": 443
}
},
{
"tag": "bitwarden_notifications",
"protocol": "dokodemo-door",
"listen": "127.0.20.103",
"port": 443,
"settings": {
"address": "notifications.bitwarden.com",
"port": 443
}
},
{
"tag": "bitwarden_icons",
"protocol": "dokodemo-door",
"listen": "127.0.20.104",
"port": 443,
"settings": {
"address": "icons.bitwarden.net",
"port": 443
}
}
]
}

hosts 记录:

1
2
3
4
5
127.0.20.100 bitwarden.com
127.0.20.101 api.bitwarden.com
127.0.20.102 identity.bitwarden.com
127.0.20.103 notifications.bitwarden.com
127.0.20.104 icons.bitwarden.net

在不希望 TUN 模式或系统代理影响全部软件,或者目标软件不使用系统代理设置的情况下,可以尝试这种方法解决。
之前在某处看到这种方法解决谷歌翻译的文章,但找不到了,所以写了这份笔记。