听起来您当前的解决方案实际上相当不错。
我们实现了一个,其中传递视图内容的服务器代码还更新了一个数据库表,该表存储了 URL(实际上是 URL 的特殊 ID 代码,因为 URL 可能会随着时间而改变)和视图计数。
这实际上是针对具有其他人可以评论的用户撰写帖子的系统,但它同样适用于您是唯一创建帖子的用户的情况(如果我正确理解您的描述)。
我们必须执行以下操作来最小化(不幸的是,不是消除)偏斜。
- 对于已登录的用户,每个用户只能在帖子中添加一个观点。曾经。没有例外。
- 对于匿名用户,每个 IP 地址每个月只能为帖子添加一个观点。这稍微不太可靠,因为从我们的角度来看,IP 地址可以“共享”(NAT 等)。我们放宽上述“EVER”要求的原因就是出于这个共享的原因。
- 帖子本身仅限于每个时间段添加一个观点(该时间段开始时间较短(例如 10 秒)并逐渐增加(例如 5 分钟),因此新帖子由于其新颖性而可以更快地获得观看次数)。这解决了大多数垃圾邮件机器人,因为我们发现它们往往会在帖子创建后很长时间内进行攻击。
- 删除帖子上的垃圾评论,或尝试绕过验证码失败(见下文),会自动将该 IP 添加到黑名单并减少该帖子的查看次数。
- 如果列入黑名单的 IP 在 N 天(可配置)内未尝试发表评论,则会将其从黑名单中删除。这条规则和之前的规则,最大限度地减少了维护黑名单的人工干预,我们只需要监控垃圾邮件内容的响应。
- 验证码。这解决了我们的很多垃圾邮件问题,特别是因为我们不仅仅依赖于 OCR 类型的东西(比如“这个词是什么 -> '可选'”);我们实际上提出了一些问题(比如“2 乘以 8 的一半是多少? ”),它打破了愚蠢的字符识别机器人。它不会击败成群的廉价劳动力 CAPTCHA 破解者(除非他们的数学真的很糟糕 :-) 但无 CAPTCHA 的改进令人印象深刻。
- 登录用户不受验证码的约束,但垃圾邮件立即删除了该帐户,将 IP 列入黑名单,并从帖子中减去他们的视图。
- 我很惭愧地承认我们实际上并没有打折网络爬虫(我希望客户没有阅读此内容:-)。老实说,由于我们的 IP 地址规则,他们每个月可能只会添加最少数量的视点(除非他们用多个 IP 地址蜂拥而至)。
所以基本上,我建议以下作为可能的改进。当然,您应该始终监控他们如何去查看他们是否在工作。
- 验证码。
- 根据用户行为自动更新黑名单。
- 限制视图计数从相同的 IP 地址增加。
- 限制视图计数增加到一定的速率。
您选择的任何方案都不会是完美的(例如,我们的一个月规则),但只要所有帖子都遵循相同的规则集,您仍然可以获得很好的比较价值。正如你所说,准确度只需要一个近似值。