检测滥用后评级系统

时间:2010-05-28 22:44:23

标签: sql wordpress statistics abuse

我正在使用一个名为“GD Star Rating”的wordpress插件,允许我的用户对我发布到我的某个网站的故事进行投票。 http://everydayfiction.com/最近我们一直滥用这个系统。很明显被人为地投票的故事。当用户对故事进行投票时,“GD Star Rating”会创建一些详细的日志。包含; IP,投票时间和user_adgent,等等。

例如,这个故事有181票,平均为5.7 http://www.everydayfiction.com/snowman-by-shaun-simon/大多数其他故事每天只能获得约40票。

  • 起初我认为这个故事发到了社交书签网站Digg,Stumbleupon等......但是在检查完日志之后我发现这个故事的流量与普通故事相同〜 2K-3K。

  • 我检查了这个垂直故事的所有投票来自同一个IP地址。如果用户在学校的计算机实验室使用他们所有的实验室计算机对这个故事进行投票,我可以看到这种情况发生。此故事的日志中没有一个重复的IP地址。

    SELECT ip,COUNT(*)as count FROM wp_gdsr_votes_log WHERE id = 3932 GROUP BY(ip)ORDER BY count DESC

  • 接下来我认为一个用途可能是使用代理来投票。我通过将所有浏览器user_agent组合在一起来检查这一点,看看是否有一个浏览器以垂直方式投票。最多7个使用类似浏览器但偶尔投票的用户(1-5),没有做错的证据。

    SELECT user_agent,COUNT(*)as count FROM wp_gdsr_votes_log WHERE id = 3932 GROUP BY(user_agent)ORDER BY count DESC

  • 我还会检查所有投票是否一次进入。也许有人有一个非常有趣的机器人,可以改变user_adgent并使用代理,等等...最多5张投票,彼此相距2分钟。关于人们如何投票似乎没有任何规律性(IE投票不会在每分钟进行一次投票)

    SELECT * FROM wp_gdsr_votes_log WHERE id = 3932 AND vote = 5 ORDER BY wp_gdsr_votes_logvoted DESC

这个问题的明显解决方案是强制人们在允许投票之前登录。但除非绝对必要,否则我宁愿不必走这条路。

我正在寻找有关检测滥用行为的测试建议。

修改

我刚刚测试过的另一件事就是看看所有投票通过这个perdicutre故事的人是否是通过IP地址在网站上的第一次选民。看来,大约有80人通过IP地址首先对这个故事进行投票而没有其他故事。我对其他故事进行了检查,发现大部分时间都是相反的,80%的人投票,在几个不同的故事中投票。我认为这证明这里有一些可疑的东西,但我不确定他们会怎么做,或者我怎么能过滤掉人工投票。

SELECT id, `ip`, COUNT(*) as count FROM `wp_gdsr_votes_log` GROUP BY (`ip` ) ORDER BY `count` ASC 

修改2

哇好吧,好像来自http://www.mychemicalromance.com/(节奏吉他手)的乐队成员之一在他们的Twitter和乐队网站上发布了关于这篇文章的链接。我很惊讶,只有参与投票的人才没有大幅增加访客。

3 个答案:

答案 0 :(得分:3)

也许这根本不是问题。也许你会碰到一个更多人关心实际投票的故事。

您可能检查的一件事是与具有类似流量的其他故事相比,投票与流量的百分比。

我看了。好故事。我投了票。 ;)

答案 1 :(得分:2)

您必须确保您的投票至少在他们第一次点击页面时建立会话,并且会话在投票时仍处于活动状态。如果您至少不需要指定某种类型的令牌,则客户端可以整天将数据发布到您的服务器,欺骗IP地址和用户代理。

如果您正在使用强制使用表单的会话或其他类型的令牌访问,那么根据您目前所获得的信息,似乎投票确实来自不同的计算机。< / p>

检查您的网络服务器日志以查看引荐来源,了解他们如何找到该文章。

如果您无法证明投票无效,那么我认为您必须接受投票。

答案 2 :(得分:0)

如果您的评级系统存在缺陷,那么它很可能位于表单本身。如果没有进行检查,简单的F5 /刷新可以获得多个投票。必须至少有一个会话或用户ID以及一个可以检查的唯一令牌,以避免F5攻击。