GFWList规则简单说明

gfwlist规则解读。

首先看看gfwlist里面的类容种类

  1. ip, 例如 69.65.19.160
  2. 纯url匹配. 例如 example.com
  3. 通配符匹配, 例如 .example.com
  4. 匹配开始, 例如 |example.com
  5. 匹配结尾, 例如 example.com|
  6. 标记匹配, 例如 ||example.com
  7. 白名单, 例如 @@.example.com
  8. 正则匹配, 例如 /^example.*/
  9. 注释, 例如 !example.com

gfwlist的匹配规则

通配符支持。
  • 比如 *.example.com/*
  • 实际书写时可省略 * , 如.example.com/*.example.com/* 效果一样
正则表达式支持。
  • / 开始和结束, 如 /^https?:\/\/[^\/]+blogspot\.(.*)/
例外规则 @@
  • @@*.example.com/* 满足 @@ 后规则的地址不使用代理
匹配地址开始和结尾 |
  • |http://example.com 、 example.com| 分别表示以 http://example.com 开始和以 example.com 结束的地址
||标记
  • ||example.comhttp://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格式添加的直连或者代理的名单

如何实施匹配步骤

  1. 全局模式 全局模式下,直接去匹配user_rule中以@@开头的条目,命中者直连,否则代理

  2. 智能模式 先匹配gfwlist, 命中则代理,再user_rule中不以@@开头的条目,命中则代理,否则直连