V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Daniel65536
V2EX  ›  分享创造

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

  •  
  •   Daniel65536 ·
    BlackGear · 2015-02-15 00:58:55 +08:00 · 1778 次点击
    这是一个创建于 3571 天前的主题,其中的信息可能已经有所发展或是发生改变。
    暂时作为一个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   ·   实用小工具   ·   892 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:40 · PVG 04:40 · LAX 12:40 · JFK 15:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.