pac icon indicating copy to clipboard operation
pac copied to clipboard

我想排除或添加一些域名该怎么修改脚本?(不是排除IP)

Open F-Light opened this issue 5 years ago • 7 comments

谢谢作者的项目,有很大的帮助。 我想排除或添加一些域名该怎么修改脚本?(不是排除IP) 以域名优先级最高。

F-Light avatar Feb 05 '20 14:02 F-Light

你可以把你想黑白名单的域名放进一个 Set 里面,然后在 function FindProxyForURL 最前面插入判断并直接返回 proxydirect

iBug avatar Feb 10 '20 09:02 iBug

你可以把你想黑白名单的域名放进一个 Set 里面,然后在 function FindProxyForURL 最前面插入判断并直接返回 proxydirect

我发现现在的脚本已经自带BLACKPAT,但是不知道该怎么填写。我直接填了一个域名以后,整个pac都失效了,无法联网。

timeneverdie avatar Nov 04 '20 17:11 timeneverdie

现在的脚本里的 BLACKPAT 是一个数组,数组里每一项是一个通配符表达式(见 shExpMatch()),请确保你的 JavaScript 语法是正确的,否则整个 PAC 文件会解析失败。

iBug avatar Nov 04 '20 18:11 iBug

现在的脚本里的 BLACKPAT 是一个数组,数组里每一项是一个通配符表达式(见 shExpMatch()),请确保你的 JavaScript 语法是正确的,否则整个 PAC 文件会解析失败。

var BLACKPAT = ["*.ipip.net"];

这样填写全网域名解析仍然生效,但是ipip.net仍然是直连,具体该怎么办呢?

我大概读懂几个function会把array中的string一一匹配,有则返回true,则返回proxy。但是实在不知道数组中的这个string该怎么填,试验了好几种写法也不见效。

timeneverdie avatar Nov 05 '20 05:11 timeneverdie

刚刚想了想,可能是结尾也没跟着匹配,所以返回了false。

"*.ipip.net/*" 测试成功。

但不知是否有更好的写法?还望能倾囊相授。

timeneverdie avatar Nov 05 '20 05:11 timeneverdie

BLACKPATWHITEPAT 是匹配整个 URL 的,如果想仅靠域名匹配的话稍微麻烦点,我把域名按 zone 重新组合成了前面的 DOMAINS 变量,格式如下:

var DOMAINS = {
  "com": {
    "example": 0,
    "google": {
      "@": 0,
      "mtalk": 1
    }
  }
};

搜索的时候从右往左,例如 example.com 就会按顺序找到 com -> example 返回 0(黑名单走代理),而 mtalk.google.com 就会返回 1(直连)。这个结构要手改可能不那么容易,我后面升级一下生成脚本加入自定义规则的支持吧。

iBug avatar Nov 05 '20 08:11 iBug

BLACKPATWHITEPAT 是匹配整个 URL 的,如果想仅靠域名匹配的话稍微麻烦点,我把域名按 zone 重新组合成了前面的 DOMAINS 变量,格式如下:

var DOMAINS = {
  "com": {
    "example": 0,
    "google": {
      "@": 0,
      "mtalk": 1
    }
  }
};

搜索的时候从右往左,例如 example.com 就会按顺序找到 com -> example 返回 0(黑名单走代理),而 mtalk.google.com 就会返回 1(直连)。这个结构要手改可能不那么容易,我后面升级一下生成脚本加入自定义规则的支持吧。

如果能直接修改就更好了,方便自定义。

因为user-rule.txt是强制和gwflist绑定的,无法和自定义pac绑定。一旦修改user-rule.txt,必须更新gfwlist,就把自定义pac给覆盖了,所以只能在自定义pac里面手动修改。

其实绝大部分网站按照IP分流已经非常完美,只有极个别网站因为某些原因要手动指定一下,能支持自定义网站,当然就很方便了。

timeneverdie avatar Nov 05 '20 10:11 timeneverdie