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中不以@@开头的条目,命中则代理,否则直连