Идея
Идея заключалась в том, чтобы написать автоматический лайкер контакта, который бы сам все лайкал и не требовал нашего присутствия за компьютером.
Профессиональные SMM’щики поймут, а остальным, зачем это надо, объясню в конце.
Какие были успехи?
Удалось написать облайковщик постов страницы пользователя/группы без бана, в больших количествах.
Удалось написать облайковщик новостной ленты.
И еще одна интересная реализация, но она чаще актуальна пользователям с большим количеством подписок > 1000: в новостной ленте лайкается только вновь прилетевшая новость.
Как это работает?
Мы вручную заходим к жертве, скроллим вниз, до загрузки нужного количества постов и в консоль вставляем маленький js-код. Или заходим в новости vk.com/feed, запускаем код и он лайкает только новые посты или все загруженные, если необходимо.
Код (новый пост в ленте):
(function () { var e = document.createElement('script'); e.src = '//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js'; document.getElementById('system_msg').appendChild(e); }()); var func_prevClass = '', func_checkPostTimer; func_checkPostTimer = setInterval(function() { var func_curOb = $("#feed_rows .feed_row:first"), func_curClass = func_curOb.find(".post_like.fl_r").attr("onclick"); if (func_curClass != func_prevClass) { func_curOb.find(".post_like.fl_r").trigger("click"); } func_prevClass = func_curClass; }, 45000);
Что тут происходит?
Сначала мы подгружаем библиотеку jQuery, причем разными вставками, если сделать это одной вставкой с остальной частью кода, то библиотека не успеет загрузиться, а код на jQuery уже начнет выполняться и не сработает. Далее я расскажу как это обойти.
В основной части кода запускается таймер, который каждые 45 секунд проверяет наличие нового поста, если пост есть лайкает его при помощи принудительного вызова события $.trigger(«click»), кликает на тот элемент на который разработчики контакта уже любезно повесили обработку события onclick — вызов метода like, объекта wall с нужными параметрами.
Стоит обратить внимание, что 45 секунд подходят только мне и зависят от активности и количества пользователей на которых Вы подписаны. В моем случае получается так, что некоторые посты не лайкаются, т.е. их за 45 секунд появляется больше одного, а код лайкает только первый. При лайковке всех постов Вы будете забанены из-за выполнения однотипных действий, проверено!
И всё, выполнение программы можно оставлять на весь день, бана не будет.
Агрессивное облайкивание
Следующий метод, наверное можно назвать более агрессивным. Он лайкает сразу все посты на странице пользователя или группы, но в разном порядке и не мгновенно, а с разной задержкой. Особенно это весело, когда жертва online.
Код (все посты пользователя/группы):
function shuffle(o) { for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x); return o; }; var workArray = shuffle($("#page_wall_posts .post_like.fl_r")), curTaskElement = 0; function triggerCurElement() { if (curTaskElement >= workArray.length) { alert("Скликивание закончилось!"); return false; }; var rand = Math.floor(Math.random() * (4100 - 1550 + 1)) + 1550; $(workArray[curTaskElement]).trigger("click").animate({opacity:0},{duration:rand,complete:function() { curTaskElement++; if ($(".box_body .captcha").size()) { var me = $(".box_body .captcha").parent().parent().find(".box_controls_wrap .button_blue"); me.click(function() { triggerCurElement(); }); return false; } triggerCurElement(); }}); } triggerCurElement();
Половина кода здесь направлена на борьбу с баном. Собираем массив постов, перемешиваем его с помощью функции shuffle, затем обкликиваем все элементы массива, все тем же способом.
В данном случае стоит обратить внимание на то, что между кликами разное время, здесь это реализовано за счет небольшого хака псевдо-delay’ла, следующий вызов клика вызывается в callback animate, таким образом мы имитируем delay и нас не банят.
Кстати, чуть не забыл. Оказывается, что при большом количестве лайков, может тоже вылезти captcha и здесь она учитывается. При обнаружении каптчи, лайки останавливаются, и на кнопку проверить каптчу вешается событие, которое вновь запускает функцию лака.
Вот собственно и все
Чтобы избавиться от множественной вставки и работы с большим кодом, я поместил свой код и библиотеку jQuery в один файл и получил что-то типа своего API:
(function () { var e = document.createElement('script'); e.src = '[REQUEST]'; document.getElementById('system_msg').appendChild(e); }()); requests: // лайкает все подгруженные посты на стене или в группе http://funcbook.com/js/api/like/wall // лайкает все подгруженные посты в новостной ленте http://funcbook.com/js/api/like/feed // лайкает только первый пост в новостях, // при появлении нового поста в ленте тоже его лайкает и так до бесконечности http://funcbook.com/js/api/like/feed_new
Зачем все это и как мне пришла в голову такая идея?
Я показал свои наработки нескольким друзьям и все они спросили одно и то же: «А в чем смысл, зачем?» Хотя нет, один мой знакомый, он больше программист из всех, кому я показывал это, он очень удивился и ума не прикладывал, как ко мне пришла такая идея, как такие идеи вообще приходят в голову. Тоже мне идея, вот игра в 0xy 0 строк JS-кода я понимаю.
Отвечу этой статьей и последнему удивленному.
Черт меня за ногу дернул и я пошел на курс для начинающих предпринимателей от yurylifshits Earlydays в своем городе, Калининграде. Кстати не жалею, получил много полезного и познакомился там с человеком, SMM’щиком, который как раз и подтолкнул меня на идею написания JS-лайкера для контакта.
Вообще такие лайкеры можно писать, как оказалось после первой реализации кода, для любого сайта, это очень просто! Главное понимать цель.
Так вот, тот SMM’щик рассказал мне про то, как они раскручивают компании в instagram. Они с помощью API лайкают, например 10 000 пользователей, по статистике 25% подписываются на паблик с которого прилетели лайки, это конечно все абстрактно. И мне захотелось сделать такой инструмент для себя, вконтакте и я написал его, точнее я сделал первый шаг к его написанию и уже многого добился.
Весь код был написан гораздо быстрее этой статьи, первый свой бан я получил уже через 30 минут после начала написания кода. Мне, как наверное и многим программистам, писать на языке программирования намного проще, чем излагать свои мысли в подобных статьях.
Все вышеописанное пока не так полезно и больше является развлечением, в будущем код сам будет переходить по всем страницам, искать коды лайков, аккумулировать их и отложено вызывать, вот это уже будет более полезно.
Спасибо за внимание.
ссылка на оригинал статьи http://habrahabr.ru/post/203584/
Добавить комментарий