Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

UPDATED

we are running a contest using a facebook application to connect with facebook and identify users. a user follows through the standard facebook procedure to allow the application and login.

the user then can vote for any entry only once. the vote is saved to avoid the same user voting twice.

since the contest has a cash prize we face the problem of vote exchange. vote-exchange is the process where one individual goes to a group-page-forum-etc and trades his voting to another contest, for people voting for his entry in our contest. in essence "buying" votes. they achieve higher number through fake profiles (another problem)

so we are faced with:

  1. how to detect this vote exchanging
  2. how to detect fake facebook profiles
  3. in general how to safeguard such a procedure (with or without facebook)

right now we are looking for the blindingly obvious violations

  1. Very similar emails(john1@ , john2@)
  2. Sudden spike in votes (in terms of timing and vote count)
share|improve this question
    
Question lacks detail. However, if you can identify cheaters (for banning), why can't you use the same rules to identify fraudulent votes? –  ProdigySim Apr 4 '11 at 19:15
    
Without details it is going to be hard to provide a solution. With that being said, is it possible to limit votes by ip address? –  chrisw Apr 4 '11 at 19:16
    
what kind of details would you consider useful? we are banning people that went from 0 to 300 votes in very little time. or the ones with very similar emails and very new facebook accounts and so on. –  Circadian Apr 4 '11 at 19:25
    
Tell us how your votes are restricted, what your vote exchange system is and does, and how cheaters are bypassing any checks you do have. –  ProdigySim Apr 4 '11 at 19:27
    
@chrisw: The problem with IP address is that it can hide multiple people. Three people live in my house, behind one IP address. Suppose somebody wires an apartment building using NAT. –  David Thornley Apr 4 '11 at 20:18
show 4 more comments

2 Answers

up vote 2 down vote accepted

You seem to have two main issues here:

  1. There is not a 1-to-1 relationship between facebook accounts (id) and voting entities (people)
  2. Voting entities are using their votes in ways that you do not expect.

Issue #1 is solved by various forms of limiting (See: StackExchange voting success). Basically, you should choose some criteria from facebook profiles that generally distinguish "fake" accounts from "real" accounts. There are a number of possibilities for this.

  • Account creation date
  • Number of friends
  • Total account activity
  • Amount of profile information available
  • Participation in a invite-only group

You can mix and match any of these items. I'm sure this problem has been tackled before in many different spheres--you might be able to find existing heuristics made publicly available to solve this. This may be only a small obstacle for many spammers, but until Facebook implements a solution for this issue, it is probably good enough to try to filter on your own.

Issue #2 is more of a social problem. There is probably not a solution to this. If you allow the freedom of voting to every person, they will vote in any way they please, for any reason. This may just be a perception issue on your part. Depending on the problem you're trying to solve with this voting system, you may be able to use another solution.

Some alternatives which may apply:

  1. Embrace the fact that people want to enlist friends to help. Have a Referral contest. Referral-based contests happen all the time, and work generally well.
  2. Don't use votes--have the contest be single-entry, random victory--Where everyone gets an equal chance to win. If part of an entry is a unique piece of information (like an address or telephone number), there will be no duplicate entries. Alternatively, judge entries instead of using vote systems.

Of course, it's possible that neither of those could help, depending on your problem. Hopefully they can help you look in the right direction, though.

share|improve this answer
    
Our problem is not with soliciting friends but with people going to a facebook group and saying "I have X votes to trade" Meaning I will use my X accounts to vote for you in one competition if you votes for me on another. If they find Y others then suddenly from last they go first and the whining begins :( –  Circadian Apr 5 '11 at 9:06
    
It sounds like you just need to find another form of contest that works better for you, then. –  ProdigySim Apr 8 '11 at 18:24
add comment

Trying to detect fake profiles etc. is an arms race that you're unlikely to win. As for things like vote-exchanging.. I actually would have thought that if you're running a Facebook competition, you'd be glad to have people soliciting for votes - isn't the idea of your competition to draw peoples' attention?

An approach that has worked well on a few competitions I have done the technical work on is: only have a relatively small prize for the entry with the most public votes; the real major prize is awarded accorded to a judge's decision. So people still have the fun and excitement of trying to get votes, but ultimately, if someone totally stacks it, it's no big deal.

One other thing: make sure you're not creating a snowball effect yourself. e.g. if you have lots of entries, and on the front page of your site you display the current highest-voted entries, a lot of people will only ever see those ones (and give them even more votes!), never click through to see others.

share|improve this answer
    
we are trying to promote our service but this fails when people start "buying" voters. for one all the bought votes are indifferent to our product and also there is alot of bad reactions in respect to cheaters. especially when no one can prove anything. –  Circadian Apr 5 '11 at 9:03
add comment

protected by MichaelT Dec 22 '13 at 2:03

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.