把所有请求都送进代理,有时候并不合适。本地服务、内网地址、更新组件这些走了反而添乱。代理IP按规则分流要解决的就是这件事:哪些走代理,哪些直连,由写好的条件自动判断。规则本身不复杂,难处在于把条件写清楚。
规则由什么构成
一条规则通常包含三部分:匹配条件、动作、以及顺序。匹配条件写的是什么样的请求,可以按目标、按程序、按地址段。动作写的是走哪条路,比如走代理、直连、或者拒绝。顺序决定了多条规则同时命中时先执行哪一条。
- 匹配条件
- 按目标、程序或地址段判断
- 动作
- 命中之后走代理、直连,或者直接拒绝
- 顺序
- 多条同时命中时,排在前面的先生效

条件为什么容易写错
常见的错法是条件写得太宽。比如按域名匹配时写了一个太短的片段,结果把不相关的目标也圈了进来。另一种是顺序放错,一条宽泛的规则排在前面,把后面更具体的规则全挡住了。两种错法的表现都是该走的没走、不该走的走了。
顺序放在哪
顺序的原则是从具体到宽泛。越具体的条件越往前放,兜底的那一条放在最后。这样一来,特殊情形被前面的规则先接住,剩下的才落到兜底规则上。顺序反了,特殊规则就形同虚设。
怎么试规则
规则写完不要直接上量。先挑几个有代表性的目标,逐个访问一遍,看清楚各自走了哪条路。特别要试那些边界情况,比如刚好落在规则分界上的目标,这类最容易出错。代理IP的线路在规则生效之后,同一类请求会稳定走同一条。
规则乱了的信号
出现几种情况就说明规则该整理了。一是原本直连的目标忽然走了代理,二是同一类请求在不同时间走的路不一样,三是规则列表越来越长,没人说得清每一条的作用。这三种信号出现任何一种,都值得停下来梳理一遍。
规则维护怎么做
规则不是一次写完就固定的。业务变化之后,原来需要走代理的目标可能不再需要,新的目标又要加进去。建议每次改动都留一行说明,写清为什么加、什么时候加的。时间一长,这些说明就是最好的参照。
规则的目的是让每一类请求都走在合适的路上。
条件写得越具体,规则越不容易误伤。
把分流规则写好,代理IP的线路就不会被无关的请求占满。条件、动作、顺序三样想清楚,规则基本就立得住。规则维护的工夫主要在改的时候,加一条就记一条,回头看的时候才有依据。规则清楚,线路才用得省。
