投票算法以避免作弊

时间:2012-07-30 11:14:02

标签: algorithm vote

我想建立一个投票网站,比如facebook的+1。

是否有一些最佳做法来对付作弊行为?

最好的方法是使用脸书,推特和/或谷歌拥有独特的用户,但我想让匿名用户投票。

2 个答案:

答案 0 :(得分:2)

你可以使用某种形式的proof-of-work system来抵御大规模的自动作弊。这将要求浏览器将一些计算投入到投票中。单一投票不应该花太长时间,但批量投票需要认真的计算工作。使用JavaScript进行此投票也意味着任何批量投票机制都必须来自支持JavaScript的浏览器(或浏览器仿真),因此生成HTTP请求的简单脚本也会被挫败。

但是,这种方法不会大幅延迟多次手动点击的用户。因此,将此要求与IP地址,用户代理字符串,cookie或可能还有Flash Cookie的日志结合起来。 cookie将有助于识别单个拨入用户尝试使用一系列连接重复投票。尽管上面列出的措施很容易被大规模的自动作弊攻击所规避,但它们应该很好地(尽管不完美)处理人工投票。所以我相信这两种解决方案应该很好地相互补充。

您可能希望屏蔽tor等匿名网络。但是,该块只会影响投票,因为您希望允许匿名用户查看您的网站,对吧?

您可能还会考虑要求未经身份验证的用户解决CAPTCHA。根据投票的重要程度以及未经身份验证的用户数量,您的用户可能会或可能不会被此措施阻止投票。

答案 1 :(得分:1)

根据我有限的经验,如果你不需要身份验证,系统很可能会被欺骗:除非你记录了很多与之相关的数据,否则没有真正的防弹方式来判断谁是谁。客户可能在统计上被认为是一个整体独特(但你不能用这种方法达到100%的确定性。)

当然,如果您期望10个用户,那么比您需要处理数百万用户更容易。在第一种情况下,IP +用户代理检查很可能会很好,但在第二种情况下它不会很好(想到NAT)。

最后,您必须考虑作弊的可能性,换句话说:您的用户是否真的试图欺骗系统,或者您可以轻松查看可以轻松查看的信息是伪造的?