FelisCatus / SwitchyOmega

Manage and switch between multiple proxies quickly & easily.
GNU General Public License v3.0
21.26k stars 3.19k forks source link

单独使用情景1或情景2均正常,使用自动切换情景1或2就无法上网 #1627

Open mmd1989 opened 6 years ago

mmd1989 commented 6 years ago

情景1是公司内网http代理;情景2是本机运行的透明代理,单独使用情景1或情景2均正常上网,使用自动切换按域名通配符自动切换,则情景1或2均无法上网,浏览器返回“ERR_MANDATORY_PROXY_CONFIGURATION_FAILED” 百思不得,求解..

SwitchyOmega 2.5.20 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.109 Safari/537.36

FelisCatus commented 5 years ago

这应该是 SwitchyOmega 生成的 PAC 脚本问题或者 Chrome 的脚本引擎问题。要调试此问题,请进入 SwitchyOmega 选项,选择自动切换模式(重要!)然后点击右上角的导出 PAC ,并将结果上传到这里。

请注意移除导出的 PAC 文件中的个人信息以保护隐私。比如把网址换成 example.com 或者 0.0.0.0 等。但请不要修改文件的格式或者结构,因为需要据此确定是否是脚本有语法错误等。

darknesstm commented 5 years ago
var FindProxyForURL = function(init, profiles) {
    return function(url, host) {
        "use strict";
        var result = init, scheme = url.substr(0, url.indexOf(":"));
        do {
            result = profiles[result];
            if (typeof result === "function") result = result(url, host, scheme);
        } while (typeof result !== "string" || result.charCodeAt(0) === 43);
        return result;
    };
}("+auto switch", {
    "+auto switch": function(url, host, scheme) {
        "use strict";
        if (/(?:^|\.)wordpress\.com$/.test(host)) return "+proxy";
        if (/(?:^|\.)wikipedia\.org$/.test(host)) return "+proxy";
        if (/(?:^|\.)google\.com$/.test(host)) return "+proxy";
        if (/(?:^|\.)googleusercontent\.com$/.test(host)) return "+proxy";
        if (/(?:^|\.)gstatic\.com$/.test(host)) return "+proxy";
        if (/(?:^|\.)amazon\.co\.jp$/.test(host)) return "+proxy";
        if (/^config\.privoxy\.org$/.test(host)) return "+route";
        if (/(?:^|\.)privoxy\.org$/.test(host)) return "+proxy";
        return "DIRECT";
    },
    "+proxy": function(url, host, scheme) {
        "use strict";
        if (/^127\.0\.0\.1$/.test(host) || /^::1$/.test(host) || /^localhost$/.test(host)) return "DIRECT";
        return "SOCKS5 127.0.0.1:7080; SOCKS 127.0.0.1:7080";
    },
    "+route": function(url, host, scheme) {
        "use strict";
        if (/^127\.0\.0\.1$/.test(host) || /^::1$/.test(host) || /^localhost$/.test(host)) return "DIRECT";
        return "PROXY 192.168.1.1:8118";
    }
});
darknesstm commented 5 years ago

我也发生了一样的问题