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

2015-02-15 00:58:55 +08:00
 Daniel65536
暂时作为一个gist发出来吧:
https://gist.github.com/BlackGear/f932490242c9a552c0ff

白名单直连 黑名单翻墙 局域网直连 国内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。

面前自用无太大问题,配套生成工具正在龟速开发中……
1802 次点击
所在节点    分享创造
9 条回复
LazyZhu
2015-02-15 02:04:30 +08:00
kawaiiushio
2015-02-15 06:27:57 +08:00
LZ这个类似cow自带生成的那个。。。
dya
2015-02-15 09:15:36 +08:00
Shadowsocks-win-2.3能不能用?能不能替换?怎么使用?Shadowsocks-win-2.3的pac文件中并没有端口的呀?
palesaint
2015-02-15 09:56:51 +08:00
能替换ios上shadowsocks那个白名单吗?
konakona
2015-02-15 12:54:26 +08:00
不错不错,收藏,晚点试试。
不过好奇的问下..

PPTPD协议(CENTOS自己搭建)的VPN,是否可以用这个?服务器无需安装什么别的了。
Daniel65536
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
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
2015-02-15 19:18:24 +08:00
@Daniel65536 cow服务器端有判断的 用的也是类似的pac
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 的就不可以,我该从哪个方向排查呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/171050

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX