gfwlist规则解读。
首先看看gfwlist里面的类容种类
- 纯
ip, 例如69.65.19.160 - 纯url匹配. 例如
example.com - 通配符匹配, 例如
.example.com - 匹配开始, 例如
|example.com - 匹配结尾, 例如
example.com| - 标记匹配, 例如
||example.com - 白名单, 例如
@@.example.com - 正则匹配, 例如
/^example.*/ - 注释, 例如
!example.com
gfwlist的匹配规则
通配符支持。
- 比如
*.example.com/* - 实际书写时可省略
*, 如.example.com/和*.example.com/*效果一样
正则表达式支持。
- 以
/开始和结束, 如/^https?:\/\/[^\/]+blogspot\.(.*)/
例外规则 @@
- 如
@@*.example.com/*满足@@后规则的地址不使用代理
匹配地址开始和结尾 |
- 如
|http://example.com 、 example.com|分别表示以http://example.com开始和以example.com结束的地址
||标记
- 如
||example.com则http://example.com 、https://example.com 、 ftp://example.com等地址址满足条件。
注释 !
- 如 !我是注释
调整为适合我们的策略方案
1. 维护一套和gfwlist相同的策略表
维护一套和gfwlist相同的策略表,但是为了加快匹配速度,做如下几点
- 删掉
!开头的条目,因为其为注释,已经失效 - 将带有
||条目中的||替换成|,使用匹配开始的方式匹配,因为其匹配的是应用层协议(http,https,ftp),底层无法获取, - 删除以
@@开头的条目,因为其为直连条目,并将其加入我们自定义的user_rule中
2. 维护一套我们自己的策略表user_rule,规则和gfwlist一致,方便解析,user_rule类容包含如下
user_rule中包含了从gfwlist挑选出来的以@@开头的直连名单- 我们自己维护的按照
gfwlist格式添加的直连或者代理的名单
如何实施匹配步骤
-
全局模式 全局模式下,直接去匹配user_rule中以@@开头的条目,命中者直连,否则代理
-
智能模式 先匹配gfwlist, 命中则代理,再user_rule中不以@@开头的条目,命中则代理,否则直连