Total Pageviews

Wednesday 24 February 2016

gfwlist转换成PAC文件

在项目JinnLynn/GenPAC的基础上,出现了一个gfwlist2pac工具,支持如下功能:
  • 代理规则基于gfwlist
  • 允许通过代理获得gfwlist
  • 支持用户自定义规则
  • 运行配置多重代理

修改配置

编辑gfwlist2pac.cfg文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
; 配置

[config]
; gfwlist地址
;gfwUrl = http://autoproxy-gfwlist.googlecode.com/svn/trunk/gfwlist.txt

; 访问gfwlist使用的代理
; 格式 PROXY|SOCKS|SOCKS5 [username:password@]hostname:port
; 'PROXY' 表示使用HTTP代理
; 'SOCKS' 表示使用SOCKS4代理
; 'SOCKS5' 表示使用SOCKS5代理
;gfwProxy = SOCKS5 127.0.0.1:7070

; 用于PAC规则的代理
; 格式 DIRECT|((PROXY|SOCKS|SOCKS5) hostname:port) [[; DIRECT|((PROXY|SOCKS|SOCKS5) hostname:port)] ...]
; 'DIRECT' 表示不使用代理
; 'PROXY' 表示使用HTTP代理
; 'SOCKS' 表示使用SOCKS4代理
; 'SOCKS5' 表示使用SOCKS5代理
; 多种连接方法使用';'隔开,系统会依次尝试,直到连通
; 注意:如果是在MAC下的SOCKS代理,必须设置成SOCKS5,在IOS下SOCKS4和SOCKS5代理都使用SOCKS
;pacProxy = DIRECT; SOCKS 127.0.0.1:7070; PROXY 127.0.0.1:8087

; 生成的PAC文件名 默认 autoproxy.pac
;pacFilename = autoproxy.pac

; 调试模式
debug = True

自定义规则

编辑gfwlist2pac.rules文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
! 用户自定义的代理规则
! 
! 语法与gfwlist相同,即AdBlock Plus过滤规则
!
! 简单说明如下:
! 通配符支持,如 *.example.com/* 实际书写时可省略* 如.example.com/ 意即*.example.com/* 
! 正则表达式支持,以\开始和结束, 如 \[\w]+:\/\/example.com\
! 例外规则 @@,如 @@*.example.com/* 满足@@后规则的地址不使用代理
! 匹配地址开始和结尾 |,如 |http://example.com、example.com|分别表示以http://example.com开始和以example.com结束的地址
! || 标记,如 ||example.com 则http://example.com、https://example.com、ftp://example.com等地址均满足条件
! 注释 ! 如 ! Comment
!
! 更详细说明 请访问 http://adblockplus.org/en/filters
!
! 配置该文件时需谨慎,尽量避免与gfwlist产生冲突,
! 或将一些本不需要代理的网址添加到代理列表
! 可用test目录工具进行网址测试
! 

! Tip: 在最终生成的PAC文件中,用户定义规则先于gfwlist规则被处理
!      因此可以在这里添加一些常用网址规则,或能减少在访问这些网址进行查询的时间
!      如:
@@sina.com
@@163.com
twitter.com
youtube.com

生成Pac文件

在命令行执行

1
python gfwlist2pac.py

---------------

GFWlist2PAC

代理自动配置(Proxy Auto-config)文件生成工具。
  • 代理规则基于gfwlist
  • 支持用户自定义规则
  • 获取gfwlist时允许独立设置代理
本工具在JinnLynn/GenPAC项目基础上修改而成,主要做了如下修订
  • 简化了gfwProxy和pacProxy的配置
  • pacProxy支持多种代理方式共有
  • 解决了配置文件里debug变量注释后报错的问题
  • 代码风格调整,去除了部分全局变量,改用局部变量

如何使用

配置

用任意文本编辑工具打开gfwlist2pac.cfg文件,根据文件内的注释配置相应的变量。

自定义规则

gfwlist2pac.rules是用户自定义规则,语法与gfwlist相同,即AdBlock Plus过滤规则,详见文件内说明,或访问这里

生成

开发语言为Python,版本要求2.7。
Mac OSX已自带Python,在终端执行./gfwlist2pac.py即可。
Windows需要安装Python,在其官网可以找到安装包(版本务必选择2.7),安装后在命令行执行python gfwlist2pac.py即可
*nix与Mac OSX类似。

使用

如何使用自动代理请自行Google,需要说明的是Mac OSX Lion下的Safari由于其沙盒机制的原因无法使用本地PAC文件,需要使用Web Sharing或将PAC文件放在服务器,然后通过http访问。
from https://github.com/vangie/gfwlist2pac
相关帖子:
http://briteming.blogspot.com/2015/11/pacgenpac.html
--------------------------------------