如何防止人们每天只能投票一次的投票系统被玩弄?
我已经实现了一个在线视频投票系统,其中访问者在任何一天只能投票一次。我使用他们的电子邮件地址和时间戳的组合来确保当天的每张投票都是唯一的。
正如您可能猜到的那样,这会导致人们通过在 mailinator.com 等网站上注册一次性电子邮件地址来玩弄系统,所以我想知道是否有人尝试过实现允许同一个人进行多次投票的任何其他投票算法。此外,此设置意味着如果视频 #1 比视频 #2 拥有更多的关联人数,则视频 #1 已经处于不公平的优势。
我正在考虑一个排名系统,但我不完全确定这如何防止任何人使用虚假电子邮件地址来玩弄该系统。我试图解决的问题是这样的:
给定 3 个视频,A、B 和 X。A 有 5 个人,B 有 2 个人,X 有 4 个人。
假设 X 是三者中最好的视频,并且人们每天都可以投票,那么是否有一个投票系统可以帮助“B”上升到顶部?
就像我说的,我提出的排名系统会假设,如果#2 的数量超过#1 的数量,则可以安全地假设那个应该是获胜者,但这似乎不完整。
以前有人处理过类似的事情吗?请记住,这些结果数量相当少(我们平均大约 500 票/7 天),因此 2 个人就可以真正发挥作用。
如果有帮助的话,这是在共享托管环境中的 LAMP (PHP) 堆栈上。
另外,如果您想知道为什么我们允许同一个人进行多次投票,那是因为高层意识到这有助于增加网站的流量,并且他们真的很喜欢看到图表上升(尽管随后的点击率相当高)无意义)。
提前致谢,如果您需要任何其他信息,请告诉我。
I've implemented a voting system for videos online, wherein visitors can only cast a vote once in any given day. I use combination of their email address and timestamp to ensure that each vote is unique for that day.
As you might guess, this lead to people gaming the system by registering throwaway email addresses at mailinator.com and the like, so I'm wondering if anyone's tried implementing any other voting algorithms that allow for multiple votes by the same person. In addition, this setup means that if a video #1 has more people associated with it than video #2, video #1 is already at an unfair advantage.
I'm thinking about a ranked system, but I'm not totally sure how that could prevent anyone from gaming the system with fake email addresses. The problem I'm trying to solve is like this:
Given 3 videos, A, B and X. A has 5 people in it, B has 2, and X has 4.
Assuming that X is the best video of the three, and that people can vote every day, is there a voting system that will help "B" rise to the top?
Like I said, I my proposed ranked system, would posit that if the amount of #2's outnumber the #1's, it's safe to assume that should be the winner, but that seems incomplete.
Has anyone tackled anything like this before? Keep in mind, these are pretty low volume results (we average about 500 votes/7 days), so 2 people can really make a difference.
This is on a LAMP (PHP) stack in a shared hosting environment, if it helps.
Also, if you're wondering why we're allowing multiple votes by the same person, it's because the higher ups realize this helps drive traffic to the site, and they really enjoy seeing graphs go up (despite the fact the subsequent hits are pretty meaningless).
Thanks in advance, and if you need any other information please let me know.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您实际上是在问两件不同的事情:
首先,如何防止人们玩弄系统?这是相当棘手的。您可以通过要求注册、最低声誉(如 SO)或其他限制来提高投票门槛,但最终您所能希望做的就是减少作弊,而不是消除作弊。考虑一下人们多次成功注册实体政治选举,然后评估您消除网站上所有作弊行为的可能性有多大。
其次,如何对可能具有不同受欢迎程度和出现时间不同的不同商品进行公平的质量排名? Randall 在此处描述了一种非常好的解决方案蒙罗。该文章链接到实际的算法,该算法的实现相当简单。
You're actually asking about two separate things:
First, how can you prevent people gaming the system? This is pretty intractable. You can raise the bar for placing a vote, by requiring registration, a minimum reputation like SO, or other restrictions, but ultimately all you can hope to do is reduce cheating, not eliminate it. Consider that people successfully register multiple times for physical political elections, then evaluate how likely it is that you can eliminate all cheating on your site.
Second, how do you give a fair quality ranking to different items that may have different popularity and have been around for different times? One very good solution is described here by Randall Munroe. That article links to the actual algorithm, which is fairly straightforward to implement.
如果没有登录系统,就无法解决您的问题。人们会不断地击败你的系统,除非你为他们提供一个真正的身份验证系统,该系统需要几个步骤来创建帐户。顺便说一句,OpenID 对此非常有用。
不要使用大量基于 cookie 的东西(特别是不要使用 Evercookie)。这是对用户隐私的侵犯。我永远不会想要我的电脑上有僵尸cookie。
如果他们继续玩弄你,你除了手动标记垃圾账户并删除相应的投票之外,没有什么办法。
或者,您可以建立一个基于声誉的系统,只需最少的代表即可投票(如 StackOverflow)。
如果您想要快速安全的工作解决方案,请查看 OpenID。
There is no solution to your problem without a login system. People will keep defeating your system unless you provide them with a real authentication system which takes several steps to create an account. OpenID is great for this by the way.
Do not use heavy cookie based stuff (especially do not use Evercookie). This is an offense to your users' privacy. I would never want a zombie cookie on my computer.
If they keep gaming you, there is nothing you can do, except manually flagging garbage accounts and deleting the corresponding votes.
Or you can do a reputation based system, with a minimal rep needed to vote (like StackOverflow).
Look at OpenID if you want a fast secure working solution.
网上有一个问答平台——不知道你是否听说过——它的名字叫stackoverflow.com;-)
也许你可以采用这个网站的评级系统?我发现只允许具有给定评级的用户以多种方式操纵系统是非常聪明的。您可以根据帐户的年龄(例如,投票仅从注册后 2 周开始计算)或某种声誉系统来选择用户。
There is this Q&A platform on the net -- don't know if you ever heard of that -- it's called stackoverflow.com ;-)
Maybe you can adopt the rating system at this site? I find it quite clever to allow only users with a given rating to manipulate the system in several ways. You can select users by age of their account (e.g. votes count only from 2 weeks after registration) or by some kind of reputation system.