Chrome Switchy插件无法使用auto switch mode的解决方案
最新版本的switchy插件有个严重的兼容性bug,就是当你的chrome升级到最新版14.0以上后,Auto switch mode会失效。表现为你选了auto switch mode,但是重启chrome后switchy会选择到<Current Profile>,如果你选择回auto switch mode,则所有的代理规则失效。
此时打开选项->高级->更改代理设置->局域网设置会看到如下设置界面

问题在于生成的pac文件后缀多加一个c6。用socks的用户可能是多个c,没有6。
解决方案
- 打开?C:\Users\你的机器登录名\AppData\Local\Google\Chrome\User Data\Default\Extensions\caehdcpeofiiigpdhbabniblemipncjj\1.6.3_0\assets\scripts 目录
- 用文本编辑器打开?ruleManager.js
- 找到?RuleManager.getAutoPacScriptPath 这一行
- 在接下来的两段代码中,按注释说明修改,一共有两处
RuleManager.getAutoPacScriptPath = function getAutoPacScriptPath(withSalt) { if (RuleManager.autoPacScriptPath == undefined) { var plugin = chrome.extension.getBackgroundPage().plugin; try { // 原先代码: // RuleManager.autoPacScriptPath = plugin.autoPacScriptPath; // 修改后的代码: RuleManager.autoPacScriptPath = "C:/Users/你的机器登录名/AppData/Local/Google/Chrome/User%20Data/Default/Extensions/caehdcpeofiiigpdhbabniblemipncjj/SwitchyAuto.pac"; } catch(ex) { Logger.log("Plugin Error @RuleManager.getAutoPacScriptPath() > " + ex.toString(), Logger.Types.error); return undefined; } } return RuleManager.autoPacScriptPath + (withSalt ? "?" + new Date().getTime() : ""); }; RuleManager.getSocksPacScriptPath = function getSocksPacScriptPath(withSalt) { if (RuleManager.socksPacScriptPath == undefined) { var plugin = chrome.extension.getBackgroundPage().plugin; try { // 原先代码: // RuleManager.socksPacScriptPath = plugin.socksPacScriptPath; // 修改后的代码: RuleManager.socksPacScriptPath = "C:/Users/你的机器登录名/AppData/Local/Google/Chrome/User%20Data/Default/Extensions/caehdcpeofiiigpdhbabniblemipncjj/SwitchySocks.pac"; } catch(ex) { Logger.log("Plugin Error @RuleManager.getSocksPacScriptPath() > " + ex.toString(), Logger.Types.error); return undefined; } } return RuleManager.socksPacScriptPath + (withSalt ? "?" + new Date().getTime() : ""); };
最后重启下chrome浏览器,大功告成。
不用担心源码的修改,如果下一版本作者fix了这个bug,代码会被自动覆盖的。
楼主怎么这么牛呀,对这也有研究
可以安装SwitchySharp这个插件。因为Switchy已经很久没更新了。
这个插件的新版本叫做SwitchySharp,已经解决这个问题了
这么悲催。。。我去试试
换用SwitchySharp就好了