Псевдобот для «турболайкера» на базе imacros

в 16:37, , рубрики: javascript, Социальные сети и сообщества, метки: ,

alert («Hallow_HabraWorld»)Эта статья не про очередного бота для очередной лайковой биржи. Это, скорее, история о том как я, не имея ни малейшего понятия о скриптах и языках программирования, Начал осваивать это не вспаханное поле. А что из этого вышло узнаете под катом.Псевдобот для «турболайкера» на базе imacros

Предисловие

Давным-давно (где-то год назад) я загорелся идеей заработка в сети. Меня никогда не интересовали сетевые маркетинги и пирамиды. Возможно потому-что от их участника требуется коммуникабельность и подвешенный язык, а у меня с этим беда.Так вот: мне был жизненно необходим абсолютно автоматизированный, стабильный (пусть и небольшой) доход.Перепробовал многое, перечислять не буду, т.к. это стандартные проекты с аудиторией школьников, пашущих за жвачку. Скоро мне все это надоело, потом было пару месяцев простоя. И вот, кто-то из друзей подкинул мне рефералку биржи vprka. Там можно было зарабатывать как деньги, так и баллы, которые потом за копейки продавать… Был даже бот одного из умельцев (естественно виндовый). У меня же стояла ubuntu. Долгое время строить костыли из wine и virtualbox мне тоже наскучило. Хотелось кроссплатформенного бота (или нечто, схожего по функционалу).

Нежданно-негаданно решение нашлось.

Не помню точно как, но в просторах интернета (не без помощи гугла, конечно) набрёл я на дополнение для firefox'a под названием imacros. Гугление продолжалось и удивлению не было предела. Каждый день для меня открывались все новые функции сего, поистине божьего, творения. Синтаксис iim, а уж тем более js, для меня был — потёмки. Довольствовался обыкновенной записью действий с незначительным редактированием.На этом предисловие можно закончить. Дальше началось самое интересное.

Первые скрипты.

Началось все с olik'a. Проект хорош и аудитория многочисленна, но и с защитой от кликеров у этих ребят всё в порядке (хотя утверждение спорное). Сперва я писал только iim скрипты, занимали они over 100 строк и выглядели они очень не эстетично. Да и возможности структуризации кода в этом языке ограничены.Когда заметил поддержку js, был приятно удивлён. Но языка я не знал (как впрочем и сейчас).

Хватит воды. Даёшь примеры кода!

Итак, сначала пишем основу — это несколько iim скриптов для выполнения определенных действий кликера (непосредственно клики).

Пишем скрипт для входа.
login_vk.iim

VERSION BUILD=8810214 RECORDER=FX 'Стандартная команда с указанием версии imacrosSET !REPLAYSPEED FAST 'Ускоряем выполнение скрипта до максимумаFILTER TYPE=IMAGES STATUS=ON 'Отключаем показ картинок (для большего ускорения загрузки)SET !DATASOURCE "turboliker.csv" 'Задаём базу аккаунтов для входаSET !DATASOURCE_COLUMNS 5 'Кол-во колонок со значениями в файле (можно поставить 3 )SET !LOOP {{!VAR1}} 'Переменная берется из js файла (терпение и все станет понятно)URL GOTO=https://m.vk.com/ 'Используем моб версию, так же для ускоренияTAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:https://login.vk.com/?act=login&_origin=https://m.vk.com&ip_h=* ATTR=NAME:email CONTENT={{!COL2}}SET !ENCRYPTION NOTAG POS=1 TYPE=INPUT:PASSWORD FORM=ACTION:https://login.vk.com/?act=login&_origin=https://m.vk.com&ip_h=* ATTR=NAME:pass CONTENT={{!COL3}}TAG POS=1 TYPE=INPUT:SUBMIT FORM=ACTION:https://login.vk.com/?act=login&_origin=https://m.vk.com&ip_h=* ATTR=*

Логин и пароль этот и следующие скрипты будут брать из файла «turboliker.csv», который необходимо создать в папке «Datasources» директории imacros'a.

Аналогично логинимся на turboliker'e
login_turb.iim

VERSION BUILD=8810214 RECORDER=FXSET !REPLAYSPEED FASTFILTER TYPE=IMAGES STATUS=ONSET !DATASOURCE "turboliker.csv"SET !DATASOURCE_COLUMNS 5SET !LOOP {{!VAR1}}URL GOTO=http://turboliker.ru/TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:link CONTENT={{!COL4}}TAG POS=1 TYPE=P ATTR=TXT:ВойтиSET !ENCRYPTION NOTAG POS=1 TYPE=INPUT:PASSWORD ATTR=ID:pass CONTENT={{!COL5}}TAG POS=1 TYPE=P ATTR=TXT:ВойтиSET !ERRORIGNORE YESSET !TIMEOUT_STEP 1TAG POS=2 TYPE=DIV ATTR=TXT:ОкTAG POS=1 TYPE=DIV ATTR=ID:nomore

Логично, что сперва необходимо задать пароль в настройках профиля turboliker

И youtube
login_you.iim

VERSION BUILD=8810214 RECORDER=FXSET !REPLAYSPEED FASTFILTER TYPE=IMAGES STATUS=ONSET !DATASOURCE "turboliker.csv"SET !DATASOURCE_COLUMNS 6SET !LOOP {{!VAR1}}URL GOTO=https://accounts.google.com/ServiceLoginTAG POS=1 TYPE=INPUT:EMAIL FORM=ID:gaia_loginform ATTR=ID:Email CONTENT={{!COL6}}SET !ENCRYPTION NOTAG POS=1 TYPE=INPUT:PASSWORD FORM=ID:gaia_loginform ATTR=ID:Passwd CONTENT={{!COL5}}TAG POS=1 TYPE=INPUT:CHECKBOX FORM=ID:gaia_loginform ATTR=ID:PersistentCookie CONTENT=NOTAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:gaia_loginform ATTR=ID:signIn
Теперь напишем logout'ы для каждого аккаунта (впоследствии они нам пригодятся.)
logout_vk.iim

VERSION BUILD=8810214 RECORDER=FXSET !REPLAYSPEED FASTSET !TIMEOUT_STEP 1FILTER TYPE=IMAGES STATUS=ONURL GOTO=https://vk.com/TAG POS=1 TYPE=A ATTR=ID:logout_linkTAB CLOSE
logout_turb.iim

VERSION BUILD=8810214 RECORDER=FXSET !REPLAYSPEED FASTSET !TIMEOUT_STEP 1FILTER TYPE=IMAGES STATUS=ONURL GOTO=http://turboliker.ru/TAG POS=1 TYPE=A ATTR=TXT:ВыходTAB CLOSE
logout_you.iim

VERSION BUILD=8810214 RECORDER=FXSET !REPLAYSPEED FASTSET !TIMEOUT_STEP 1URL GOTO=http://www.youtube.com/TAG POS=3 TYPE=BUTTON ATTR=TXT:TAG POS=1 TYPE=A ATTR=TXT:ВыйтиTAB CLOSE
Приступим к выполнению самих заданий. Начнём с постановки лайка вк.
vk_like.iim

VERSION BUILD=8601111 RECORDER=FXSET !REPLAYSPEED MEDIUMFILTER TYPE=IMAGES STATUS=ONTAB CLOSEALLOTHERSURL GOTO=http://turboliker.ru/index.php?page=likes&tab=setListLikeEVENT TYPE=CLICK SELECTOR="#turbo-main>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(5)>DIV>DIV>DIV:nth-of-type(2)>DIV>DIV>DIV>DIV>TABLE>TBODY>TR>TD>DIV>DIV:nth-of-type(2)" BUTTON=0TAB T=2SET !ERRORIGNORE YESSET !TIMEOUT_STEP 1'likeTAG POS=1 TYPE=SPAN ATTR=ID:like_link*'like fotoTAG POS=1 TYPE=SPAN ATTR=ID:pv_like_link'like videoTAG POS=1 TYPE=SPAN ATTR=ID:mv_like_linkWAIT SECONDS=5TAB CLOSESET !VAR1 EVAL("var randomNumber=Math.floor(Math.random()*120 + 1); randomNumber;")
WAIT SECONDS={{!VAR1}}
TAG POS=1 TYPE=I ATTR=CLASS:icon-check<SP>icon-white&&TXT:
Вступаем в группы.
vk_group.iim
VERSION BUILD=8810214 RECORDER=FXSET !REPLAYSPEED MEDIUMFILTER TYPE=IMAGES STATUS=ONURL GOTO=http://turboliker.ru/index.php?page=group&tab=getGroupWinTAG POS=1 TYPE=DIV ATTR=TXT:подписаться...TAB T=2SET !ERRORIGNORE YESSET !TIMEOUT_STEP 1TAG POS=1 TYPE=BUTTON ATTR=ID:subscribe_buttonTAG POS=1 TYPE=BUTTON ATTR=TXT:Вступить<SP>в<SP>группуTAG POS=1 TYPE=BUTTON:SUBMIT ATTR=ID:join_buttonWAIT SECONDS=5TAB CLOSESET !VAR1 EVAL("var randomNumber=Math.floor(Math.random()*110 + 1); randomNumber;")WAIT SECONDS={{!VAR1}}TAG POS=1 TYPE=I ATTR=CLASS:icon-check<SP>icon-white&&TXT:
Делаем репосты
vk_share.iim

VERSION BUILD=8810214 RECORDER=FX
FILTER TYPE=IMAGES STATUS=ON
URL GOTO=http://turboliker.ru/index.php?page=repost&tab=setListRepostEVENT TYPE=CLICK SELECTOR="#turbo-main>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(5)>DIV>DIV>DIV:nth-of-type(2)>DIV>DIV>DIV>DIV>TABLE>TBODY>TR>TD>DIV>DIV>B" BUTTON=0TAB T=2TAG POS=1 TYPE=A ATTR=TXT:ПоделитьсяSET !ERRORIGNORE YESTAG POS=1 TYPE=BUTTON ATTR=ID:like_share_sendTAG POS=1 TYPE=SPAN ATTR=ID:pv_like_linkTAG POS=1 TYPE=SPAN ATTR=TXT:Рассказать<SP>друзьямWAIT SECONDS=5TAB CLOSESET !VAR1 EVAL("var randomNumber=Math.floor(Math.random()*130 + 1); randomNumber;")WAIT SECONDS={{!VAR1}}TAG POS=1 TYPE=P ATTR=ID:btn1
Добавляем в друзья
vk_follow.iim

VERSION BUILD=8601111 RECORDER=FXSET !REPLAYSPEED MEDIUMFILTER TYPE=IMAGES STATUS=ONURL GOTO=http://turboliker.ru/index.php?page=frnd&tab=getFrndCLICK X=362 Y=488TAB T=2TAG POS=1 TYPE=BUTTON ATTR=TXT:Добавить<SP>в<SP>друзьяWAIT SECONDS=5TAB CLOSESET !VAR1 EVAL("var randomNumber=Math.floor(Math.random()*140 + 1); randomNumber;")WAIT SECONDS={{!VAR1}}TAG POS=1 TYPE=I ATTR=CLASS:icon-check<SP>icon-white&&TXT:
Пишем свободные комментарии.

Текст берем из «komment_turboliker.csv» базу спам-комментариев можно нагуглить или написать свою.

vk_freekomment.iim

VERSION BUILD=8810214 RECORDER=FXSET !REPLAYSPEED FASTFILTER TYPE=IMAGES STATUS=ONTAB CLOSEALLOTHERSURL GOTO=http://turboliker.ru/index.php?page=comm&tab=getCommEVENT TYPE=CLICK SELECTOR="#turbo-main>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(5)>DIV>DIV>DIV:nth-of-type(2)>DIV>DIV>DIV>DIV>TABLE>TBODY>TR>TD>DIV>DIV>B" BUTTON=0TAB T=2SET !VAR2 EVAL("var randomNumber=Math.floor(Math.random()*104 + 1); randomNumber;")SET !DATASOURCE komment_turboliker.csvSET !DATASOURCE_COLUMNS 1SET !LOOP {{!VAR2}}SET !ERRORIGNORE YESSET !TIMEOUT_STEP 1TAG POS=1 TYPE=TEXTAREA ATTR=ID:pv_comment CONTENT={{!COL1}}TAG POS=1 TYPE=BUTTON ATTR=ID:pv_comment_sendTAG POS=1 TYPE=TEXTAREA ATTR=ID:fwr_text CONTENT={{!COL1}}TAG POS=1 TYPE=BUTTON ATTR=ID:fwr_sendTAG POS=1 TYPE=TEXTAREA ATTR=ID:ba_text CONTENT={{!COL1}}TAG POS=1 TYPE=BUTTON ATTR=TXT:ОтправитьWAIT SECONDS=5TAB CLOSESET !VAR1 EVAL("var randomNumber=Math.floor(Math.random()*110 + 1); randomNumber;")WAIT SECONDS={{!VAR1}}TAG POS=1 TYPE=I ATTR=CLASS:icon-check<SP>icon-white&&TXT:
Ставим лайк в youtube
you_like.iim

VERSION BUILD=8810214 RECORDER=FXSET !REPLAYSPEED MEDIUMFILTER TYPE=IMAGES STATUS=ONTAB CLOSEALLOTHERSURL GOTO=http://turboliker.ru/index.php?page=Ylikes&tab=setYListLikeEVENT TYPE=CLICK SELECTOR="#turbo-main>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(5)>DIV>DIV>DIV:nth-of-type(2)>DIV>DIV>DIV>DIV>TABLE>TBODY>TR>TD>DIV>DIV:nth-of-type(2)" BUTTON=0TAB T=2SET !ERRORIGNORE YESTAG POS=1 TYPE=BUTTON ATTR=ID:watch-likeWAIT SECINDS=5TAB CLOSESET !VAR1 EVAL("var randomNumber=Math.floor(Math.random()*120 + 1); randomNumber;")WAIT SECONDS={{!VAR1}}TAG POS=1 TYPE=I ATTR=CLASS:icon-check<SP>icon-white&&TXT:
Просмотр видео в youtube
you_watch.iim

VERSION BUILD=8810214 RECORDER=FXSET !REPLAYSPEED FASTFILTER TYPE=IMAGES STATUS=ONURL GOTO=http://turboliker.ru/index.php?page=YView&tab=setYListViewTAG POS=1 TYPE=A ATTR=ID:linkFILTER TYPE=IMAGES STATUS=OFFTAB T=2SET !ERRORIGNORE YESWAIT SECONDS=35TAB CLOSE
Делаем подписку на канал youtube
you_follow.iim

VERSION BUILD=8810214 RECORDER=FXSET !REPLAYSPEED FASTFILTER TYPE=IMAGES STATUS=ONURL GOTO=http://turboliker.ru/index.php?page=Ysubs&tab=setYListsubsEVENT TYPE=CLICK SELECTOR="#turbo-main>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(5)>DIV>DIV>DIV:nth-of-type(2)>DIV>DIV>DIV>DIV>TABLE>TBODY>TR>TD>DIV>DIV>B" BUTTON=0TAB T=2EVENT TYPE=CLICK SELECTOR="#c4-primary-header-contents>DIV>SPAN>BUTTON" BUTTON=0WAIT SECONDS=5TAB CLOSETAG POS=1 TYPE=P ATTR=ID:btn1
Самое вкусное.

С iim скриптами покончено. Теперь осталось написать управляющий js скрипт и можно запускать.

start.js

var replay = prompt('Кол-во повторов', ''); //форма с запросом кол-ва повторов
var allreplay = prompt('Кол-во повторов всех макросов', ''); //Форма с запросом повторов выполнения заданий
var n = 0 //Объявляем переменную, равную количеству повторов цикла выполнения заданий
var macro = "CODE:";
macro += "CLEAR"
while (n <allreplay ) { //Повтор всех циклов до значения 
n += 1 //Увеличение n на 1 при каждом повторе цикла
     iimDisplay (n);
     iimPlay("turboliker/logout_vk");
     iimPlay("turboliker/logout_turb");
     iimPlay("turboliker/logout_you");
     iimSet("VAR1",n);
     iimPlay("turboliker/login_vk.iim");
     iimSet("VAR1",n);
     iimPlay("turboliker/login_turb.iim");
     iimSet("VAR1",n);
     iimPlay("turboliker/login_you");
for (i=1;i<=replay;i++){ //Повтор всех цикла до значения
     iimDisplay (i);
     iimPlay("turboliker/vk_like");
     iimPlay("turboliker/vk_group");
     iimPlay("turboliker/vk_share");
     iimPlay("turboliker/vk_follow");
     iimPlay("turboliker/vk_freekomment");
     iimPlay("turboliker/you_like");
     iimPlay("turboliker/you_watch");
     iimPlay("turboliker/you_follow");
}
iimPlay(macro);
}

При запуске управляющего скрипта, появится окно с запросом кол-ва повторов replay (можно вписать любое значение, но я рекомендую «5») и allreplay — это кол-во аккаунтов, которые следует чередовать между собой.

Эксперименты с «батником»

Процесс накрутки автоматизирован. Это хорошо, но есть пара подводных камней: 1) Кол-во входов в систему на турболайкере ограничено 20-ю. 2) Скрипт должен работать 24 часа в сутки, следовательно бат-файл должен должен быть готов к крахам и ошибкам на стороне браузере.

Закрытие «огненной лисы» средствами js.

Чтобы обойти ограничение входов на сайт, как ни странно, не понадобились никакие прокси. Достаточно просто чистить куки и кэш, но для их очистки нужно перезапускать окно. Как это сделать? Оказывается все довольно просто: надо лишь вставить в конце управляющего js вставить "javascript:window.close(); " эта команда закроет текущее окно браузера, тем самым куки и кэшь после повторного запуска будут чисты.

Bat для повторного запуска мозилы.

Исходные данные этого батника были найдены на каком-то форуме. Модернизированный вариант для наших нужд выглядит так:@echo offset fullname=C:Program Files (x86)Mozilla Firefoxfirefox.exeset prog=firefox.exe:waitingtasklist |>nul FindStr /B /L /I /C:%prog%&&(ping -n 1 -w 1000 192.168.254.254>NUL & goto :waiting)start firefox imacros://run/?m=turboliker/start.jsgoto :waitingОн и будет мониторить процесс браузера, при необходимости запускать его и js, который нам так нужен.

Заключение.

Конечно скрипт не совершенен и находится далеко не на последней стадии разработки, т.к. каждый день совершенствуется и исправляется. Последнюю версию вы всегда можете скачать здесь.Спасибо за внимание и до новых встреч.

Автор: holzed

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js