avatar_Sky_

Как накрутить голоса в MU Online: автоматическая система голосования

Автор Sky_, 2019 Март 11, 21:52

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Ключевые слова [SEO] накрутка голосовголоса mu onlineавтоматическая система голосованияselenium webdriverбазовые алгоритмы

Sky_

Выкладываю старый заброшеный проект по накрутке голосов в различных топах.
Возможности накрутки на этих топах:
Для совсем говнотопов использует накрутку просто отправкой запросов на прямые ссылки для голосования, для более продвинутых управляет браузером с помощью Selenium WebDriver.

Умеет обходить Google ReCaptcha v2 отправляя капчу на решение различным сервисам со стоимостью от 2$ за решение 1000 капч.
Поддерживает https://2captcha.com/ru и https://anti-captcha.com/, рекомендую второй, работает намного быстрее. Также поддерживает решение капч через CapMonster, https://zennolab.com/ru/products/capmonster/ при больших объемах получается дешевле, валидно решает 95-96% капч, проверено на 10кк капч.
Умеет обходить FunCaptcha.

Умеет обходить cloudflare защиту от ботов, страницу с js загрузкой. Также умеет обходить продвинутую cloudflare защиту, если еще задействована капча.

Умеет использовать прокси, в качестве провайдера проксей поддерживает ротирующие прокси от https://www.proxyrotator.com/, да и вообще что угодно лижбы возвращал список проксей в нужном формате, также поддерживает сеть тор, используется по умолчанию. Чтобы крутить по 300-400 голосов в день хватает без проблем.
Запоминает какие IP адреса уже использовались и повторно в течении нескольких часов не использует, есть возможность настроить несколько провайдеров проксей одновременно, если не получается получить свежую проксю или проголосовать с ней с одного, пробует с другого и.т.д.

Распределяет голоса пропорционально за весь день, с учетом ночных/дневных часов, можно настраивать коэффициенты сколько % от запланированных на день голосов будет сделано в определенный час.
Можно создавать сколько угодно серверов на которых нужно голосовать.
Можно настраивать сколько голосов на каком топе и для какого сервера будет зачислено.

Поледний раз использовал этот продукт летом прошлого года, работало все как часы, как сейчас - хз.

Продукт состоит из 3 частей:
1. Контролирующий узел, мозг всей сети, хранит в б.д. все необходимые данные и при обращении к нему говорит кому что делать (где сколько и за кого голосовать). Должена быть поднята только 1 копия приложения.
2. Воркер - приложение которое собственно делает всю грязную работу, обращается к мозгу за заданием проголосовать где-то, ищет проксю, решает капчу и голосует. Пытается с одной проксей проголосовать на как можно большем количестве топов. Этот масштабируется горизонтально, чем больше воркеров тем больше и быстрее голосов можете сделать. Когда крутил я у меня одновременно работало по 50 воркеров.
3. Веб морда - небольшая админка в которой можно сделать базовые настройки топов/серверов, к-ва голосов на каждый день.

Все это добро как и полагается обернуто в докер что делает задачу масштабирования тривиальной, а если есть тут кто-то кто знает что такое kubernates и как это готовить поймет всю прелесть.

Выкладываю ссылки на исходники, собирать образы и пушить в докех хаб извольте, сами.

Контролирующий узел: https://bitbucket.org/BassRefleXive/skyvote...tor/src/master/
Воркер: https://bitbucket.org/BassRefleXive/skyvoter/src/master/
Веб морда: https://bitbucket.org/BassRefleXive/skyvoterweb/src/master/

Вот команды для сборки докер образов и развертки на сервере.
Сбилдить образ skyvoterdirector и запушить в докер хаб.
Спойлер
cd docker
scripts/build prod %env.TAG%
docker login --username=%system.docker_registry_user% --password=%system.docker_registry_password% %system.docker_registry_host%
scripts/push prod
[свернуть]
Зарелизить skyvoterdirector
Спойлер
#!/usr/bin/env bash

cd /var/www/sky_voters_director

docker login --username=%system.docker_registry_user% --password=%system.docker_registry_password% %system.docker_registry_host%

CONTAINERS_PREFIX=sky_voters_director

ENV='prod'
export TAG=%env.TAG%

docker-compose -f docker-compose-$ENV.yml -p $CONTAINERS_PREFIX pull
&& docker-compose -f docker-compose-$ENV.yml -p $CONTAINERS_PREFIX kill
&& docker-compose -f docker-compose-$ENV.yml -p $CONTAINERS_PREFIX rm --force --stop
&& docker-compose -f docker-compose-$ENV.yml -p $CONTAINERS_PREFIX up --detach --no-build;
[свернуть]


Сбилдить образ skyvoter и запушить в докер хаб.
Спойлер
cd docker
docker-compose -p sky_voters_worker -f docker-compose-prod.yml build --force-rm --no-cache
docker login --username=%system.docker_registry_user% --password=%system.docker_registry_password% %system.docker_registry_host%
docker-compose -p sky_voters_worker -f docker-compose-prod.yml push
[свернуть]
Зарелизить skyvoter
Спойлер
#!/bin/bash

export TAG=%env.TAG%
docker login --username=%system.docker_registry_user% --password=%system.docker_registry_password% %system.docker_registry_host%

docker pull docker-registry.myenv.tk/vote-worker-tor:%env.TAG%
docker pull docker-registry.myenv.tk/vote-worker-app:%env.TAG%
docker pull docker-registry.myenv.tk/vote-worker-privoxy:%env.TAG%

CONTAINER_IDS="$(docker ps -aqf "label=voter-worker" -aqf "status=running" | paste -sd " " -)"
IFS=' ' read -r -a array <<< $CONTAINER_IDS

for id in "${array
  • }"
do
docker kill $id
docker rm $id

echo "Killed and removed container with ID: ${id};"
done

for (( i=0; i < %Replicas%; i++ ))
do
TOR_PUBLIC_PORT=$((%StartPort% + i * 2));
TOR_CONTROL_PUBLIC_PORT=$((TOR_PUBLIC_PORT + 1));

TOR_CONTAINER_ID="$(
docker run
--detach
--name=vote-worker-tor-${i}
--net=skyvoter-worker
--publish=${TOR_PUBLIC_PORT}:9050
--publish=${TOR_CONTROL_PUBLIC_PORT}:9051
--label=voter-worker
docker-registry.myenv.tk/vote-worker-tor:%env.TAG%
)"

TOR_IP="$(
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${TOR_CONTAINER_ID}
)"

echo "Started "tor" container with ID: ${TOR_CONTAINER_ID}; IP: ${TOR_IP}; Public port: ${TOR_PUBLIC_PORT}; Public control port: ${TOR_CONTROL_PUBLIC_PORT}."

PRIVOXY_CONTAINER_ID="$(
docker run
--detach
--name=vote-worker-privoxy-${i}
--net=skyvoter-worker
--env TOR_IP=%env.TOR_PUBLIC_IP%
--env TOR_PORT=${TOR_PUBLIC_PORT}
--label=voter-worker
docker-registry.myenv.tk/vote-worker-privoxy:%env.TAG%
)"


PRIVOXY_IP="$(
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${PRIVOXY_CONTAINER_ID}
)"

echo "Started "privoxy" container with ID: ${PRIVOXY_CONTAINER_ID}; IP: ${PRIVOXY_IP};."

CHROME_VNC_PORT=$((5900 + i));

CHROME_CONTAINER_ID="$(
docker run
--detach
--name=vote-worker-chrome-${i}
--net=skyvoter-worker
--env VNC_NO_PASSWORD=1
--env http_proxy=${PRIVOXY_IP}:8118
--env https_proxy=${PRIVOXY_IP}:8118
--env HTTP_PROXY=${PRIVOXY_IP}:8118
--env HTTPS_PROXY=${PRIVOXY_IP}:8118
--publish=${CHROME_VNC_PORT}:5900
--label=voter-worker
selenium/standalone-chrome-debug
)"

CHROME_IP="$(
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${CHROME_CONTAINER_ID}
)"

echo "Started "chrome" container with ID: ${CHROME_CONTAINER_ID}; IP: ${CHROME_IP}; VNC port: ${CHROME_VNC_PORT}."

APP_CONTAINER_ID="$(
docker run
--detach
--name=vote-worker-app-${i}
--net=skyvoter-worker
--env TOR_IP=%env.TOR_PUBLIC_IP%
--env TOR_PUBLIC_IP=%env.TOR_PUBLIC_IP%
--env TOR_PORT=${TOR_PUBLIC_PORT}
--env TOR_CONTROL_PORT=${TOR_CONTROL_PUBLIC_PORT}
--env TOR_CONTROL_PASSWORD=%env.tor_control_password%
--env PRIVOXY_IP=${PRIVOXY_IP}
--env PRIVOXY_PORT=8118
--env DIRECTOR_BASE_URL=https://api.prime.mu/
--env SELENIUM_BROWSER_HOST=${CHROME_IP}
--env SELENIUM_BROWSER_PORT=4444
--env SELENIUM_BROWSER_NAME=%env.SELENIUM_BROWSER_NAME%
--env CAP_MONSTER_HOST=%env.CAP_MONSTER_HOST%
--env CAP_MONSTER_SCHEME=%env.CAP_MONSTER_SCHEME%
--env PROXY_ISSUER_HOST=%env.PROXY_ISSUER_HOST%
--volume /storage/docker/worker/logs:/var/www/skyvoter/var/log
--label=voter-worker
docker-registry.myenv.tk/vote-worker-app:%env.TAG%
)"

echo "Started "app" container with ID: ${APP_CONTAINER_ID};"
done
[свернуть]
P.S. переменная %Replicas% - это какраз к-во воркеров которые будут созданы.


Сбилдить образ skyvoterweb и запушить в докер хаб.
Спойлер
cd docker
scripts/build prod %env.TAG%
docker login --username=%system.docker_registry_user% --password=%system.docker_registry_password% %system.docker_registry_host%
scripts/push prod %env.TAG%
[свернуть]
Зарелизить skyvoterweb
Спойлер
#!/usr/bin/env bash

cd /var/www/sky_voters_web

CONTAINERS_PREFIX=sky_voters_web

ENV='prod'
export TAG=%env.TAG%

docker-compose -f docker-compose-$ENV.yml -p $CONTAINERS_PREFIX pull
&& docker-compose -f docker-compose-$ENV.yml -p $CONTAINERS_PREFIX kill
&& docker-compose -f docker-compose-$ENV.yml -p $CONTAINERS_PREFIX rm --force --stop
&& docker-compose -f docker-compose-$ENV.yml -p $CONTAINERS_PREFIX up --detach --no-build;
[свернуть]


Скрипты для билда/релизов скопированы с CI как есть, так что если кто-то решит их использовать над ними еще нужно поработать, а именно поправить то, как и откуда берутся переменные.

Когда крутил для своего проекта, на всех топах что указаны выше был на первом месте. Кроме xtremetop100, у них странная система зачисления голосов, учитывют далеко не все, а хорошо если 10%. Но и с ним был стабильно в топ5, а это около 10к голосов в месяц, учитывая что тут продают услугу по накрутке 1к голосов за 27$ (если поискать), получается экономия 270$ в месяц, не плохо :) mmotop.ru не крутил т.к. смысла нет, гемороя много, а покупать голоса дешево.
Использовал capmonster для решения капчи, а также для самих накрутчиков сервер на 23$ на аукционе от hetzner, на 50 воркеров хватало.

Развлекайтесь  B)

Credits: Sky_

P.S. Если кому-то нужно помочь все это собрать, поставить и запустить - за 50$ сделаю. Единоразово. + покажу как самомоу потом этим всем управлять.


ritiage

Заплачу 50$ если поможешь разобраться в базовых алгоритмах как тут все устроено, для аналогичной реализации на десктопном аналоге, если интересно напиши как с тобой связаться

Sky_

Пиши в скайп bassreflexive, обсудим.
Хотя непонятно зачем это "на десктопе" реализовывать. Обычный демон, консольное приложение, ок на го или с# запилить чтобы побыстрее было, но зачем десктоп то? )

Reseller

Жалко ничего свежего нету)можно было бы приобрести бота для ммотоп если актуально(

Похожие темы (5)