【发布时间】:2011-02-25 08:27:58
【问题描述】:
我正在使用一个名为“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 FROMwp_gdsr_votes_logWHEREid=3932 GROUP BY (ip) ORDER BYcountDESC -
接下来我认为一个用途可能是使用代理来为故事投票。我通过将所有浏览器 user_agent 组合在一起来检查这一点,以查看是否有单个浏览器以垂直方式投票。最多有 7 个用户使用类似的浏览器,但偶尔投票(1-5),没有证据表明做错了。
SELECT
user_agent, COUNT(*) as count FROMwp_gdsr_votes_logWHEREid=3932 GROUP BY (user_agent) ORDER BYcountDESC -
我还会检查是否所有的选票都同时进入。也许有人有一个非常有趣的机器人,它可以更改 user_adgent 并使用代理,等等......在 2 分钟内最多有 5 票。人们投票的方式似乎没有任何规律性(即 5 票不会每分钟出现一次)
SELECT * FROM
wp_gdsr_votes_logWHEREid=3932 AND vote=5 ORDER BYwp_gdsr_votes_log.votedDESC
这个问题的明显解决方案是强制人们在被允许投票之前登录。但除非绝对必要,否则我宁愿不必走那条路。
我正在寻找有关检测滥用行为的测试建议。
编辑
我刚刚测试的另一件事是查看是否所有为这个 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/(节奏吉他手)的一位乐队成员在他们的推特和乐队网站上发布了一个关于这篇文章的链接。我只是感到惊讶的是,访问者并没有大幅增加,只有对故事进行投票的人..
【问题讨论】:
-
您是否检查过这些选民是否第一次看到您的网站?换句话说,他们是一直潜伏,直到现在才决定从木制品中走出来,还是这些都是全新的?
-
如果您有数据,另一件要查看的是引荐来源网址。
-
最后,是否可以在不记录的情况下进行投票?
-
@Chris Lively 嗯,你说得对。对我来说检查这一点并不容易,因为访问日志来自 apache 并存储在文本文件中,并且投票在 MySQL 数据库中。我会看看我能做什么并报告结果。
-
@Chris Lively,很遗憾,我没有与投票信息一起存储的推荐信息。 (再次在 apache 日志中)我会看看我能做什么。不,没有记录就不可能投票,我仔细检查了数据库中的投票是否与屏幕上显示的投票相加,以防万一 wordpress 插件出现问题。
标签: sql wordpress statistics abuse