当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 7 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : PAC文件怎么写便于维护?(顺带抛砖引玉)
帖子发表于 : 2016-07-10 16:55 

注册: 2013-05-26 6:58
帖子: 2158
系统: Debian 9
送出感谢: 894
接收感谢: 30
PAC文件怎么写便于维护?(顺带抛砖引玉)
这是我目前能想到的最好的便于维护的PAC了
有没有更方便维护的?
以下代码不够高效,更高效代码见4楼
感谢 astolia 提示
代码:
var patterns=[
"google.com",
"zh.wikipedia.org",
"gstatic.com",
"blogspot.com",
"blogger.com",
"googleusercontent.com",
"twitter.com",
"googleapis.com",
"google.com.hk",
"blogblog.com"
];
function FindProxyForURL(url, host)
{
   for (var i = 0, len = patterns.length; i < len; i++)
   {
      if (shExpMatch(host, patterns[i])||(shExpMatch(host, "*."+patterns[i])))
      {
         return "PROXY 127.0.0.1:80";
      }
   }
   return "DIRECT";
}

思路借鉴了Firefox的"FoxyPAC"生成的文件


_________________
Linux桌面优化综合贴[2017.09.18](欢迎各位补充或指正误区)
[2016.03.10]会C语言但看不懂英文文档的点这里,一个用C语言编写的简陋学习工具
单硬盘通过iso文件实机安装Debian的方法
重启或操作fcitx时失去响应的一个解决方法,不妨试试看


最后由 科学之子 编辑于 2016-07-11 23:07,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: PAC文件怎么写便于维护?(顺带抛砖引玉)
帖子发表于 : 2016-07-10 17:40 
头像

注册: 2008-09-18 13:11
帖子: 2781
送出感谢: 1
接收感谢: 453
讲究查询性能的话,别用数组,用对象属性,域名分段查询。即对于a.b.c,先查a.b.c是否存在,再查b.c,以此类推



_________________
评价: 3.7% 科学之子
 
页首
 用户资料  
 
3 楼 
 文章标题 : Re: PAC文件怎么写便于维护?(顺带抛砖引玉)
帖子发表于 : 2016-07-10 18:48 
头像

注册: 2008-09-18 13:11
帖子: 2781
送出感谢: 1
接收感谢: 453
另外gfwlist2pac可以从gfwlist生成pac文件,它的查询算法更快,但不适合手工写列表维护



_________________
评价: 3.7% 科学之子
 
页首
 用户资料  
 
4 楼 
 文章标题 : Re: PAC文件怎么写便于维护?(顺带抛砖引玉)
帖子发表于 : 2016-07-11 22:26 

注册: 2013-05-26 6:58
帖子: 2158
系统: Debian 9
送出感谢: 894
接收感谢: 30
astolia 写道:
另外gfwlist2pac可以从gfwlist生成pac文件,它的查询算法更快,但不适合手工写列表维护

好像人工写只是稍微费事一点
除了字符串,还要加个属性值这种方法才有效
代码:
// Generated by gfwlist2pac
// https://github.com/clowwindy/gfwlist2pac

var proxy = "PROXY 127.0.0.1:80";

var domains = {
'github.com':0,
'blogblog.com':0
};

var direct = 'DIRECT';

var hasOwnProperty = Object.hasOwnProperty;

function FindProxyForURL(url, host) {
    var suffix;
    var pos = host.lastIndexOf('.');
    pos = host.lastIndexOf('.', pos - 1);
    while(1) {
        if (pos <= 0) {
            if (hasOwnProperty.call(domains, host)) {
                return proxy;
            } else {
                return direct;
            }
        }
        suffix = host.substring(pos + 1);
        if (hasOwnProperty.call(domains, suffix)) {
            return proxy;
        }
        pos = host.lastIndexOf('.', pos - 1);
    }
}


_________________
Linux桌面优化综合贴[2017.09.18](欢迎各位补充或指正误区)
[2016.03.10]会C语言但看不懂英文文档的点这里,一个用C语言编写的简陋学习工具
单硬盘通过iso文件实机安装Debian的方法
重启或操作fcitx时失去响应的一个解决方法,不妨试试看


页首
 用户资料  
 
5 楼 
 文章标题 : Re: PAC文件怎么写便于维护?(顺带抛砖引玉)
帖子发表于 : 2016-07-12 1:23 
头像

注册: 2008-09-18 13:11
帖子: 2781
送出感谢: 1
接收感谢: 453
你找的这个版本又不是查询最快的,我记得最快的一版是这种的
代码:
var domains = {
 'com':{
  'github': 0
 }
};

只有对上千条规则的那种才会有点效果,对纯手工弄的几十上百条来说速度上没什么明显的差异



_________________
评价: 3.7% 科学之子
 
页首
 用户资料  
 
6 楼 
 文章标题 : Re: PAC文件怎么写便于维护?(顺带抛砖引玉)
帖子发表于 : 2016-07-12 3:15 

注册: 2013-05-26 6:58
帖子: 2158
系统: Debian 9
送出感谢: 894
接收感谢: 30
astolia 写道:
你找的这个版本又不是查询最快的,我记得最快的一版是这种的
代码:
var domains = {
 'com':{
  'github': 0
 }
};

只有对上千条规则的那种才会有点效果,对纯手工弄的几十上百条来说速度上没什么明显的差异

原来最快的是这样写啊...
有无版本地址?我谷歌搜不到...
我用的是这个:https://pypi.python.org/pypi/gfwlist2pac


_________________
Linux桌面优化综合贴[2017.09.18](欢迎各位补充或指正误区)
[2016.03.10]会C语言但看不懂英文文档的点这里,一个用C语言编写的简陋学习工具
单硬盘通过iso文件实机安装Debian的方法
重启或操作fcitx时失去响应的一个解决方法,不妨试试看


页首
 用户资料  
 
7 楼 
 文章标题 : Re: PAC文件怎么写便于维护?(顺带抛砖引玉)
帖子发表于 : 2016-09-15 2:26 

注册: 2013-05-26 6:58
帖子: 2158
系统: Debian 9
送出感谢: 894
接收感谢: 30
astolia 写道:
你找的这个版本又不是查询最快的,我记得最快的一版是这种的
代码:
var domains = {
 'com':{
  'github': 0
 }
};

只有对上千条规则的那种才会有点效果,对纯手工弄的几十上百条来说速度上没什么明显的差异


为了把这个折腾出来特意学了Python
但折腾出来之后发现比原来的更慢?
折腾结果帖子:
viewtopic.php?f=63&t=480527&p=3175419#p3175419


_________________
Linux桌面优化综合贴[2017.09.18](欢迎各位补充或指正误区)
[2016.03.10]会C语言但看不懂英文文档的点这里,一个用C语言编写的简陋学习工具
单硬盘通过iso文件实机安装Debian的方法
重启或操作fcitx时失去响应的一个解决方法,不妨试试看


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 7 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 0 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译