Как предотвратить игровую систему голосования, где люди могут голосовать один раз в день?
Я внедрил систему голосования за видео онлайн, в которой посетители могут голосовать только один раз в любой день. Я использую комбинацию их адреса электронной почты и метки времени, чтобы гарантировать, что каждый голос уникален для того дня.
Как вы можете догадаться, это приводит к тому, что люди начинают играть в систему, регистрируя одноразовые адреса электронной почты на mailinator.com и т. П., Поэтому мне интересно, пытался ли кто-нибудь реализовать какие-либо другие алгоритмы голосования, которые позволяют нескольким голосам одного человека. Кроме того, эта настройка означает, что если с видео № 1 связано больше людей, чем с видео № 2, видео № 1 уже имеет несправедливое преимущество.
Я думаю о ранжированной системе, но я не совсем уверен, как это может помешать кому-либо играть в систему с поддельными адресами электронной почты. Проблема, которую я пытаюсь решить, такова:
Имеется 3 видео, A, B и X. В A есть 5 человек, в B 2, а в X 4.
Предполагая, что X - лучшее видео из трех, и что люди могут голосовать каждый день, существует ли система голосования, которая поможет "В" подняться на вершину?
Как я уже сказал, я предложил свою ранжированную систему и предположил бы, что, если количество #2 превосходит число #1, можно с уверенностью предположить, что это должен быть победитель, но это кажется неполным.
Кто-нибудь раньше сталкивался с чем-то подобным? Имейте в виду, что это довольно низкие результаты (в среднем около 500 голосов /7 дней), поэтому 2 человека могут реально изменить ситуацию.
Это на LAMP (PHP) стек в среде общего хостинга, если это помогает.
Кроме того, если вам интересно, почему мы разрешаем несколько голосов одному и тому же человеку, то это потому, что старшие сотрудники понимают, что это помогает привлечь трафик на сайт, и им действительно нравится видеть, как увеличиваются графики (несмотря на то, что последующие хиты довольно бессмысленны).
Спасибо заранее, и если вам нужна какая-либо другая информация, пожалуйста, дайте мне знать.
3 ответа
Вы на самом деле спрашиваете о двух разных вещах:
Во-первых, как вы можете запретить людям играть в систему? Это довольно трудно Вы можете поднять планку для голосования, требуя регистрации, минимальной репутации, такой как SO, или других ограничений, но в конечном итоге все, на что вы можете надеяться, это уменьшить мошенничество, а не устранить его. Подумайте, что люди успешно зарегистрировались несколько раз для участия в физических политических выборах, а затем оцените вероятность того, что вы сможете устранить все мошенничества на своем сайте.
Во-вторых, как вы оцениваете разные предметы, которые могут иметь разную популярность и использоваться в разное время? Одно очень хорошее решение описано здесь Рэндаллом Манро. Эта статья ссылается на реальный алгоритм, который довольно просто реализовать.
Там нет решения вашей проблемы без системы входа в систему. Люди будут продолжать побеждать вашу систему, если вы не предоставите им настоящую систему аутентификации, которая делает несколько шагов для создания учетной записи. Кстати, OpenID отлично подходит для этого.
Не используйте тяжелые cookie-файлы (особенно не используйте Evercookie). Это нарушение конфиденциальности ваших пользователей. Я бы никогда не хотел, чтобы на моем компьютере было печенье с зомби.
Если они продолжают играть с вами, вы ничего не можете сделать, кроме ручной пометки учетных записей и удаления соответствующих голосов.
Или вы можете создать систему, основанную на репутации, с минимальным повторением, необходимым для голосования (например, Stackru).
Посмотрите на OpenID, если вы хотите быстрое безопасное рабочее решение.
В сети есть эта платформа вопросов и ответов - не знаю, слышали ли вы когда-либо об этом - она называется stackru.com;-)
Может быть, вы можете принять систему рейтинга на этом сайте? Я нахожу весьма разумным позволить нескольким пользователям с данным рейтингом манипулировать системой несколькими способами. Вы можете выбирать пользователей по возрасту их учетной записи (например, подсчет голосов только через 2 недели после регистрации) или по какой-либо системе репутации.