Защита от накруток

Arefiev

Новичок
Защита от накруток

На сайте проводится конкурс, скажем, на лучший анекдот. Победитель определяется путем голосования посетителей сайта. Т.к. разыгрываются довольно ценные призы, хочется защитить голосование от недобросовестных участников, которые могут «накрутить» себе балы.

Какие будут предложения по защите.
Кажется это не банальная защита голосования, здесь надо систему придумать (что бы за один анекдот нельзя было несколько раз голосовать).
 

Макс

Старожил PHPClub
обязательная регистрация посетителей на сайте + куки + ip + запрет голосования с известных тебе анонимных прокси + анализ логов

ЗЫ
тема 100 раз обсуждалась, поищи
 

Макс

Старожил PHPClub
кстати вариант (на mtv.ru кажется видел).
При голосовании вводиш e-mail и потом на e-mail приходит письмо с ссылкой для подтверждения твоего голоса
 

SeazoN

Guest
при желании админ какого нить нехилого прова может завести себе эккаунтов [email protected]

и спамера написать который будет заходить с разных real-ip и анализировать почту :)

Только хэндсами
 

Arefiev

Новичок
Спасибо, поискал, почитал.

Совет 2. Не годится. Народ голосовать не будет.
У меня посетителей не 30 000 в день а где-то 100.
Придется голосователей заинтересовать, типа
каждому 50-му плюшку (или куку :) )
 

Arefiev

Новичок
2 SeazoN

Все гораздо проще. Ямогу получать всю почту вида [email protected]. Т.к такая форма защиты отвернет от голосования массу посетителей. Накрутить свой "анекдот" до победителя не составит труда.

Может возможно придумать что-то аригинальное.
Механизм альтернативный баналоному:
кука + бан IP + лог (т.е. это все понятно и известно).
 

SeazoN

Guest
Может возможно придумать что-то аригинальное.
Механизм альтернативный баналоному:
кука + бан IP + лог (т.е. это все понятно и известно).
1 задать простой вопрос с формой ввода.
2 предложить ввести человеку надпись на картинке (есть распознаватели, но всё-же)

+ к этому IP|cookie|просмотр логов не надо игнорировать
 

Frol

Новичок
Повторяю идею Ромика:
При голосовании ставишь куку(как обычно), записываешь ИП с временем голосование и за какой вариант голосовал. Кто захочет накрутить, закроет браузер сотрет куки, снова откроет браузер и проголосует(у него получится, так как ты проверяешь только куку). Из-за этой "радости" он начнет "свое дело" заново стирать кукишы и тд.
Потом ты из своей "админки" смотришь по своим записям, если кто-то за Х минут(ч.) проголосовал с одного ИП, то просто отнимаешь количество голосов у того варианта.
:)
 

Crazy

Developer
Вариант, который уже предлагался на другом форуме:

1. НИКАК не защищаемся от накруток в процессе голосования. Но при выводе текущего результата предупреждаем, что он предварительный.
2. С каждым ответом пишем максимум возможной информации (заголовки запроса, предыдущие просмотренные страницы и т.п. -- все, что можем).
3. По окончании голосования фильтруем результаты. В отчете указываем, какие голоса и почему сняты.

Плюсы:

1. Накрутчик не может итеративно подбирать способ обмана системы.
2. Больше возможностей для разумной фильтрации.
 

Nime

Guest
Crazy, а как быть с прозрачностью процесса в таком случае? Надо или не показывать результаты до конца или быть готовым к обвинениям в продажности конкурса :)

Хотя, в целом, такой процесс, наверно, даст наиболее объективные результаты.
 

Crazy

Developer
Вот для прозрачности и публикуется отчет. Т.е.:

1. 1000 голосов, поданных с IP xxx.xxx.xxx.xxx в течении 10 секунд такого-то числа в такое-то время.
2. 1000 голосов, поданных с IP xxx.xxx.xxx.xxx, зашедшего через 100 различных прокси-серверов.

и т.п.

Куки в этом случае можно использовать для УДОБСТВА посетителя, чтобы он СЛУЧАЙНО не проголосовал повторно.
 

Nime

Guest
Crazy, да, просто не избежать разглагольствований вроде того, что вместо 100 серверов вписали 1000 и т.п...

С другой стороны недовольные всегда будут :)

Возвращаясь к анализу логов. По опыту помню что когда организовывал такое голосование в логах оставались записи, почти подряд, с целой сети класса C. Кто-то просто перебирал адреса, меняя последний октет... (провайдер был). Если скажем, накрутчик автоматизирует это дело и будет записывать голоса не подряд, а с перерывом в полчаса плюс-минус 5 минут, то можно ли такое отловить?
 

Crazy

Developer
Мне тут подсказывают: использовать нейронную сеть. :)

Понятно, что поймать априори ЛЮБУЮ накруточную атаку невозможно. Но я бы пошел по следующему пути: посмотрел бы, как меняется статистика ответов во времени. На графике могут вылезти несообразности и на соответствующие места нужно будет перенести "фокус внимания".

Вообще, слаб я, признаться, в статистике. :)
 

Tronyх

Новичок
Ещё как вариант: в таблицу с логами записываем время обращения к скрипту (который показывает анекдот), а потом когда юзер проголосует, в эту таблицу записываем время когда он проголосовал. Затем проверяем если разница во времени меньше 5-7(или ещё сколько-нибудь) секунд то голос можно считать накрученым, т.к. проголосовавший анекдот не читал, а сразу проголосовал. И ещё если скрипт "заметил" накрутчика, то не надо ему(накрутчику) об этом говорить, пусть думает что он всех "обманул".:)
 

woland

Guest
Можно ещё и user-agent проверять...
Напорядок повысит эффективность.
 

Nime

Guest
А с каких пор его стало трудно подделать?

Tronyx, хорошая идея про разницу во времени :)

Crazy, в том-то и проблема... получается, что все голосования на основе данных пользователей по определению обречены на возможность накрутки :)
 

woland

Guest
Подделать? - Как? Использовать разные броузеры?..
Действительно, можно так.
Но было сказано, что это лишь повысит эфективность, а не избавит от всех проблем, связанных с идентификацией юзера.
 
Сверху