本文适用SwitchyOmega出国留学,又想使用chrome自带全文翻译的小伙伴
目前网上大多方法是使用修改hosts文件的方式,将translate.googleapis.com
的ip指向google.cn
,这个方法不太稳定。而chrome自带的全文翻译调用的api接口,流量似乎又不走SwitchyOmega插件,所以我用pac文件的方式对chrome再做一层代理
chrome浏览器的pac参数
# 这个是chorme浏览器启动时可以附加的参数,不过看了一些文章,pac文件还要经过base64编码才能生效
chrome.exe --proxy-pac-url
编写pac文件
//新建pac文件chrome.pac
function FindProxyForURL(url, host) {
//chrome浏览器调用翻译api时,走代理
if (shExpMatch(url, "*translate.googleapis.com*")) {
//这里我使用socks5代理,根据各自情况修改如下协议ip端口
return 'SOCKS5 127.0.0.1:1080';
}
return 'DIRECT';
}
编写好的pac文件需要进行base64编码,可以使用如下powershell脚本生成
$proxyPacURL = "chrome.pac";
$proxyPacBytes = (Invoke-webrequest -URI $proxyPacURL).Content;
$proxyPacBase64 = [Convert]::ToBase64String($proxyPacBytes);
echo $proxyPacBase64 > chrome-base64.pac;
chrome-base64.pac
文件的base64代码
ZnVuY3Rpb24gRmluZFByb3h5Rm9yVVJMKHVybCwgaG9zdCkgew0KCS8vY2hyb21l5rWP6KeI5Zmo6LCD55So57+76K+RYXBp5pe277yM6LWw5Luj55CGDQoJaWYgKHNoRXhwTWF0Y2godXJsLCAiKnRyYW5zbGF0ZS5nb29nbGVhcGlzLmNvbSoiKSkgew0KICAgICAJLy/ov5nph4zmiJHkvb/nlKhzb2NrczXku6PnkIbvvIzmoLnmja7lkIToh6rmg4XlhrXmlLnlpoLkuItpcOerr+WPow0KICAgICAgICByZXR1cm4gJ1NPQ0tTNSAxMjcuMC4wLjE6MTA4MCc7DQogICAgfQ0KICAgIHJldHVybiAnRElSRUNUJzsNCn0=
编写bat脚本,在chrome启动时携带参数
# chrome.bat
# 前面三行,使脚本执行时不弹出黑框
# 最后一行,输入的pac文件是base64编码
if "%1"=="hide" goto CmdBegin
start mshta vbscript:createobject("wscript.shell").run("""%~0"" hide",0)(window.close)&&exit
:CmdBegin
"C:\Program Files\Google\Chrome\Application\chrome.exe" --proxy-pac-url="data:application/x-javascript-config;base64,ZnVuY3Rpb24gRmluZFByb3h5Rm9yVVJMKHVybCwgaG9zdCkgew0KCS8vY2hyb21l5rWP6KeI5Zmo6LCD55So57+76K+RYXBp5pe277yM6LWw5Luj55CGDQoJaWYgKHNoRXhwTWF0Y2godXJsLCAiKnRyYW5zbGF0ZS5nb29nbGVhcGlzLmNvbSoiKSkgew0KICAgICAJLy/ov5nph4zmiJHkvb/nlKhzb2NrczXku6PnkIbvvIzmoLnmja7lkIToh6rmg4XlhrXmlLnlpoLkuItpcOerr+WPow0KICAgICAgICByZXR1cm4gJ1NPQ0tTNSAxMjcuMC4wLjE6MTA4MCc7DQogICAgfQ0KICAgIHJldHVybiAnRElSRUNUJzsNCn0="
修改Chrome快捷方式
chrome快捷方式,右键选择属性,修改"目标"为我们刚编写好的脚本。将chrome浏览器完全关闭后重启
SwitchyOmega中加入规则
为什么还要这步我尚不清楚,但是加入后就可以使用全文翻译了。
输入参数不生效的情况
有些朋友的chrome浏览器可能安装一些插件,并开启了Continue running background apps when Google Chrome is closed
选项,这时可能遇到输入--proxy-pac-url
参数不起作用的情况,这是因为我们关闭浏览器后,还存在一些后台残余进程,可以打开任务管理器检查下,如果有的话,可以关闭Continue running background apps when Google Chrome is closed
选项,这样就能完全关闭浏览器。