Дисклеймер: настоящий текст не претендует ни на объективность, ни на правдивость, ни на правильность. Все нижеописанное было сделано только «just for fun» и не ради каких-либо призов или поощрений. Скрипты и логика их работы заведомо находятся на уровне быдлокода, я это понимаю и признаю. Замечания принимаются с благодарностью.
Два для назад я наткнулся на конкурс «Canon: Все краски мира». И сразу обратил внимание на простую систему голосования — не надо было не регится, ни вводить капчу, а просто кликать на кнопку «Проголосовать за эту работу».
Собственно, загрузив пару фотографий, я принялся экспериментировать.
1)Можно проголосовать один раз с одного компьютера. Через некоторое время можно проголосовать из другого браузера.
2)При подключении через прокси или впн, или через 3g можно было проголосовать еще раз.
Хорошо, ставим Tor+Vidalia(еще на виндовом компе). Запускам тор — можно голосовать. Перезапускаем — нельзя. Убиваем куки, меняем юзерагент — опять можно. Хорошо.
Открываем исходник страницы, ищем место с кнопкой голосования:
Абсолютно просто. При нажатии на кнопку выполняется запрос konkurs.photonews.ru/work/vote?photo_id=1522
Выполнить его можно с помощью хоть wget:
Теперь надо решать вопрос автоматической смены IP-адреса. Тут и думать нечего, emerge tor. Но вот загвоздка — wget не работает с socs5 прокси. Получасовые поиски вывели на программу proxychains
Результат выглядел так:
Cчетчик тикает, голоса прибавляются. Видимо, это стало заметно не только мне, но и администратору конкурса.
Была прикручена авторизация по useragent — это стало заметно по резкому уменьшению темпа накрутки — до голоса в час.
Я принял это как вызов, и пошел на www.useragentstring.com/pages/useragentstring.php откуда за 10 минут набрал файл состоящий из 500кб разных идентификаторов.
После модификации скрипт начал выглядеть так(Осторожно, быдлокод и странные решения простых задач!):
Такой способ позволил набрать еще 100 голосов к 50, полученным ранее.
Ввиду малой скорости работы(время для перезапуска тора) было решено запустить 5 instance на amazon ec2, rкоторые за 58 часов машинного времени наработали еще 150 голосов, и на этом заглохли. Толи исчерпались уникальные выходные ноды, толи администратор забанил ноды тор-а, не знаю.
Хорошо. На freeproxy.ru за 60 рублей был куплен список на 1000 http-прокси. И код(в очередной раз) подвергся изменениям:
Возникший затык с мертвостью некоторых прокси вылечился добавлением "&" в конец строки с wget-ом, и введением задержки. Ну и убиванием кучи висящих процессов вгет-а через полчаса. =)
1300 проходов принесли еще 500 голосов за пару минут, после чего я выключил скрипт, и затаился. На утро, после нескольких пробных запусков, стало понятно что дыру закрыли. Как — незнаю. Мне уже, честно говоря, надоело.
PS: Голосования в подобных конкурсах — всегда двоякая вещь. Либо защищаемся от накруток, и получаем вялотекущее(или вообще отсутствующее) голосование, либо открываем двери и получаем активное бурлениеговнголосов. Но увы, не всегда честное.
И, если повезет — необходимость отменять результаты или удалять работы из-за явной накрутки, видимой даже простым пользователями.
PPS: Все вышеописанное является плодом фантазии. Ссылки рандомные.
PPPS: Если подскажете более подходящий блог — буду рад.
Два для назад я наткнулся на конкурс «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: Если подскажете более подходящий блог — буду рад.