改进了一下基于 ip 判断是否走代理的 pac 方案 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Daniel65536
V2EX    分享创造

改进了一下基于 ip 判断是否走代理的 pac 方案

  •  
  •   Daniel65536
    BlackGear 2015-02-15 00:58:55 +08:00 2216 次点击
    这是一个创建于 3981 天前的主题,其中的信息可能已经有所发展或是发生改变。
    暂时作为一个gist发出来吧:


    白名单直连 黑名单翻墙 局域网直连 国内ip直连 其余翻墙

    -rw-r--r-- 1 Daniel staff 42K 2 12 13:49 mono.js
    -rw-r--r-- 1 Daniel staff 150K 2 11 21:22 leaskh-flora.js
    -rw-r--r-- 1 Daniel staff 157K 2 11 22:25 usufu-flora.js

    体积是其他类似项目的1/4左右(使用相同的ip段划分数据,已经剔除黑白名单数据)

    运行速度甚至更快一点点:
    Testing pac generated by mono
    avg: 0.415us

    Testing pac generated by leaskh/Flora_Pac
    avg: 0.555us

    Testing pac generated by usufu/Flora_Pac
    avg: 0.448us

    虽然在dns解析时间面前这些都是浮云(orz

    ===

    已有的各种方案文件体积过大,没有充分利用ip段划分的规律缩小体积,这个pac就是针对这一点进行改进,在不影响速度的情况下把体积降低到了原本各种版本的1/4。

    面前自用无太大问题,配套生成工具正在龟速开发中……
    第 1 条附言    2015-02-17 22:01:13 +08:00
    弄了一个小项目出来,用于生成个性化的版本:
    https://github.com/BlackGear/Mono_PAC
    9 条回复    2016-10-24 11:55:22 +08:00
    LazyZhu
        1
    LazyZhu  
       2015-02-15 02:04:30 +08:00
    kawaiiushio
        2
    kawaiiushio  
       2015-02-15 06:27:57 +08:00
    LZ这个类似cow自带生成的那个。。。
    dya
        3
    dya  
       2015-02-15 09:15:36 +08:00
    Shadowsocks-win-2.3能不能用?能不能替换?怎么使用?Shadowsocks-win-2.3的pac文件中并没有端口的呀?
    palesaint
        4
    palesaint  
       2015-02-15 09:56:51 +08:00
    能替换ios上shadowsocks那个白名单吗?
    konakona
        5
    konakona  
       2015-02-15 12:54:26 +08:00
    不错不错,收藏,晚点试试。
    不过好奇的问下..

    PPTPD协议(CENTOS自己搭建)的VPN,是否可以用这个?服务器无需安装什么别的了。
    Daniel65536
        6
    Daniel65536  
    OP
       2015-02-15 16:56:19 +08:00
    @LazyZhu 提取出核心的ip range判断函数之后进行测试的结果如下:

    Testing pac generated by BlackGear/mono_pac
    avg: 1.202us

    Testing pac generated by breakwa11/gfw_whitelist
    avg: 2.668us

    Testing pac generated by Leask/flora_pac
    avg: 1.323us

    Testing pac generated by usufu/flora_pac
    avg: 1.253us

    ls -la:
    -rw-r--r-- 1 Daniel staff 42K 2 15 16:44 BlackGear-mono_pac.js
    -rw-r--r-- 1 Daniel staff 150K 2 15 16:49 Leask-flora_pac.js
    -rw-r--r-- 1 Daniel staff 89K 2 15 15:52 breakwa11-gfw_whitelist.js
    -rw-r--r-- 1 Daniel staff 157K 2 15 16:13 usufu-flora

    在判断国内外ip方面耗时不到 https://github.com/breakwa11/gfw_whitelist 的一半,体积也只是它的一半。
    Daniel65536
        7
    Daniel65536  
    OP
       2015-02-15 17:13:33 +08:00
    @kawaiiushio cow没有判断ip在国内还是国外的功能,也不需要这个功能,仅仅是判断网址是否在黑(白)名单中,用的都是hasOwnProperty的方式。所以这部分大都长得相似。

    @dya @palesaint
    可以,但是不推荐,ss的作者clowwindy明确表示:
    「注意,如果你用的是 shadowsocks for windows 这样的傻瓜方案,不要用基于 ip 的 pac,否则还要搭一个 dns 代理才能让 pac 正常工作。」
    via: http://www.v2ex.com/t/147690 11L
    poweruser可以试试,其实不用dan代理是可以让pac正常工作的,但是不熟悉这方面的用户还是不要轻易尝试为好。

    @konakona
    VPN不能使用pac文件,请使用chnroutes之类的基于路由表的方案。
    kawaiiushio
        8
    kawaiiushio  
       2015-02-15 19:18:24 +08:00
    @Daniel65536 cow服务器端有判断的 用的也是类似的pac
    yyysuo
        9
    yyysuo  
       2016-10-24 11:55:22 +08:00
    @Daniel65536 大神帮我看一下我的方案哪里有问题 windows 10 x64 pro 最新版本, IE11 , ss-win 3.3.1 ,
    用 hfs 把下载的 mono pac 文件转化成在线的 pac url http://127.0.0.1/proxy.pac ,把在线的 url 填写到 ss 的在线 url 地址中,并在 ss 中选用在线 pac 选项,启用系统代理之后, IE 中的代理设置与 ss 中的在线 pac 地址一致。 dns 用的是 dnsforwarder 。

    现在的情况是如果用 flora_pac , IE 是可以访问 youtube 的,但是用 mono 的就不可以,我该从哪个方向排查呢?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2248 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 16:08 PVG 00:08 LAX 08:08 JFK 11:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86