Tuesday 23 September 2014

Dreamspot или как не надо устраивать конкурсы

Предыстория
Ребятки из Hotellook и Quiksilver решили провести конкурс и подарить победителям крутые призы. Но провести конкурс нормально на мой взгляд у них не вышло...

Механика конкурса
Много времени было потрачено на изучение механики конкурса: реализации основной части, защиты от читинга, нахождению ошибок и слежке за изменениями.
Механика выбрана довольно стандартная, но с изысками в виде 4 социальных сетей.

Логика устроителей была такая:

  1. Человек с девственными куками заходит на http://hotellook.ru/promo/dreamspot и мы его обзываем в виде Прилагательное + существительное(животное). Привязываем это существительное к 4 битному идентификатору(Id). Его домашней страничкой становится http://hotellook.ru/promo/dreamspot/users/Id.
  2. Человек привязывает свой профиль к одной(или нескольким?) социальным сетям, и его страничка обретает нормальное имя и аватарку из соц сети.
  3. Далее он выбирает на карте спот и шарит в его в соц-сетях.
  4. Его друзья шарят его линк в соц сети.
  5. В конце конкурса организатор смотрит на число репостов в своей системе и на число в профиле участника. Если  плюс-минус совпадают и он первый - то ок, посылай его в СочИ, на казенные харчи!
Техническая часть начисления баллов была такова:
  • При репосте линка с их странички, открывалось окно для репоста(твита). По закрытию окна, дергалось API их системы и начислялись баллы.
    curl "http://hotellook.ru/promo/dreamspot/api/social_activities" -H "Cookie: uuid=1114cfd9" --data "spot_id=96&network_type=t" --compressed
    , где spot_id это Id спота, которых 63 штуки и которые можно получать в виде JSON файла, а network_type это тип соц сети, всего у нас 4 варианта(t, v, f, g).

    Вначале конкурса вроде можно было просто надергать их API-шки  и сидеть с миллионом баллов %)
  • Вторая часть это процесс который раз в час дергает API социальных сетей и смотрит, сколько репостов данного линка было сделано. И корректирует количество репостов в системе в соответствии с этими данными.
Но если бы все было так просто :)

Ошибки и ошибочные суждения
Самой главной ошибкой на мой взгляд были правила, которые не давали никакой конкретики по вопросам определения победителя. Не были описаны механизмы разрешения спорных ситуаций, не прописаны термины конкурса(репост хотя бы). Это позволило организаторам трактовать правила по-своему, что и вызывает мое негодование.

Опишу самое запомнившиеся:

  • как уже писал выше, вначале можно было дергая их API поднять свое ЧСВ, поэтому  я поднял ЧСВ Упоротому Тамарину)) 
конечно же это не правда, но так можно было.

  • Процесс учитывал все возможные варианты расшаренных ссылок. Ссылка была вот такого вида http://hotellook.ru/promo/dreamspot/Id/spot_id/network_type. Допустим мотивация искать ссылку для вк в фейсбуке я понять могу(правда орги вроде не очень об этом в курсах), ссылка может как хочешь двигаться между людьми. Но вот учитывать ссылки, которые я не шарил с страницы конкурса! Зачем?? Именно это мне и предъявляли организаторы, как "свидетельство" моего читинга. Хотя ссылки были, не все но были, просто плохо мою стену смотрели. Были и все ссылки, я их предусмотрительно положил в гуглдок и попросил его шарить. Спасибо всем кто шарил! Но организаторы не верят в такое %))
  • Организаторы совсем забыли о настройках приватности и возможности скрывать свои посты из ленты. Разные соц сети обрабатывают эти ситуации по разному при получении данных о количестве репостов. Поэтому это большой вопрос к пригодности механики конкурса и качеству правил конкурса.
  • То же самое по поводу удаленных постов. Учет производится абсолютно по разному.
  • Ребятки Рубисты, фильтруйте параметры лучше. Можно было убить домашнюю страничку пользователя пихнув в качестве spot_id какую-нить чушь. Кто так развлекался и вывел меня! Сволуч, ненавижу тебя! %)
    Например: curl "http://hotellook.ru/promo/dreamspot/api/social_activities" -H "Cookie: uuid=1114cfd9" --data "spot_id=hui&network_type=t" --compressed
  • Был выбран слабенький идентификатор для домашней странички. Всего 4 бита, можно было сбрутить парочку аккаунтов.
  • Или можно было не брутить. А используя мозг, google image и прямые руки вытащить данные с странички соцсети участника. В условиях войны довольно ценно знать идентификатор участника и мочь проверить реально положение сил на поле. 
Были еще всякие лулзы, всего не упомнишь... если что дополню.


А что в итоге?
А в итоге победила женщина Marina Kuznetsova.  У которой больше половины(!) баллов заработано на одном споте

Вот у нее в фб их ровным счетом 11000  и не единого лайка или коммента.
А вот как выглядят реальные споты

Кстати для фейсбука учитываются не только репосты, но и лайки с комментами, ну да ладно =)

Стоит ли вопрос о том выиграл ли читер? Я думаю, что нет, все и так ясно. Может это свой человек, а может уровень организации конкурса дал свои плоды %)

+Quiksilver+Aviasales.ru — дешёвые билеты и спецпредложения , +Hotellook.ru — поиск и сравнение цен на отели+Oksana Minina большое спасибо за такую возможность поизучать черный ящик. Хоть я и следовал всем правилам, но выиграть мне все же не удалось. Значит так легла кривая истолкования правил %)) 

Желаю будущим устроителям конкурса учитывать то что я считаю ошибками, ибо они ведут к баттхерту %))

2 comments:

  1. а я сразу как увидел этот конкурс, понял что это херня полная, и забил на это болт. тратить время своё бесценное на все эти конкурсы....не спасибо. а эти организаторы всегда косячат и часто получается так, что достойные остаются ни с чем, а попытки показать организаторам что ты тру парень расцениваются как агрессия и слова сумасшедшего, потому что часто сами организаторы не компетентны в вопросах организации таких конкурсов

    ReplyDelete
    Replies
    1. все верно) подпишусь под каждым словом :)

      Delete