Skip to content

Latest commit

 

History

History
20 lines (13 loc) · 1.83 KB

scoring.md

File metadata and controls

20 lines (13 loc) · 1.83 KB

打分模型

对于打分,也是存在模型的。所以,首先需要考虑IP分数的定义是什么?衡量一个IP质量的标准。我们可以想到衡量IP的分量可以包括IP稳定程度(请求不失败)、IP响应速度、IP匿名性等等。 但是在使用代理IP的时候,最重要的是IP稳定程度。dungproxy-client对IP质量的评估只使用了IP稳定程度。

然后需要考虑的是,什么样的IP是稳定的。失败一次就不稳定了吗?失败两次?三次?整体失败次数?整体失败率?连续一段时间内的失败次数和失败率?

显而易见,我们说IP稳定,是指在一定时间内,IP的失败率低。很容易想到,我们需要记录最近n次IP的使用情况,然后统计失败率。这里需要一个队列,在次数没有达到n的时候,插入到队列。在达到n次之后,删除尾部数据,将新记录插入达到队列头部。然后根据当前容器记录情况计算分值。 问题是,如果n有点大,应该怎么办。

所以dungproxy有一个设计特点,在需要一致性的时候,可以放弃一致性而达到一个相对模糊的趋势值。

dungproxy的打分模型描述如下:

  1. 设定一个factor,为一个大于1的整数,表示将会对n次IP使用进行分值评估
  2. 设定一个初始分值score,为IP第一次使用的分值
  3. 在第二次使用同一个IP之后,评估连续factor次IP使用平均分值 算法为:score = (newScore + score * (factor -1))/factor;

本算法对连续n次IP使用的平均分数计算不是绝对精确的,但是肯定是接近的。同时他的好处是不需要保存任何历史数据即可算出结果

打分特别说明,根据dungproxy-client定义,IP分数需要做归一化处理。也就是IP的分数需要在0-1之间,如果自定义打分策略对分数空间的定义不在0-1,那么需要归一化处理将其映射到0-1的数值空间