- Регистрация
- 24.05.2016
- Сообщения
- 214
- Благодарностей
- 431
- Баллы
- 63
#region Лирическое отступление (можно не читать)
//(практика C# далее...)
Все началось с покупки шаблонов под ZP. Покупал разные шаблоны. И один из купленных шаблонов совершенно не хотел корректно работать. Это был шаблон для накрутки VK на сайте Likes.fm. Прошел месяц, два, три... Шаблон не работал, покупатели негодовали. А мне нужно было накручивать группы.//(практика C# далее...)
И понял я что придется писать шаблон самому. Долгое время я боялся подходить к ProjectMaker. Но выбора не было, нужна была накрутка. Я вроде не дурак, уж что-то простенькое наваяю.
Был август месяц 2016г. В течении недели смотрел видосы, читал статьи на форуме. Через неделю решился начать. За следующую неделю я навоял кривой, косой и убогий шаблон, который тем не менее выполнял свои функции.
То что справа это какой-то шаблон с форума по разгадыванию рекапчи2. VK как раз тогда поменял дизайн и ввел рекапчу. Я разгадывание так и не запустил. Шаблон благополучно накручивал баллы и без разгадывания.
Дабы не быть голословным, для любопытных все это безобразие я приложу к статье под названием "Теряя невинность".
В общем 2 недели теории и "практики" и в конце августа я решаю принять участие в одном не дешевом тренинге. Для простоты его прохождения решил написать для себя шаблон. Подумал, что он наверняка может также пригодится и другим и 28 августа выложил на складчике анонс своего шаблона. Шаблон был не простой. Я понятия не имел как его буду делать. Но делать надо было. Всего за несколько часов набралось 10+ желающих по 1000р. Такого я не ожидал. Появился очень хороший стимул действительно написать этот шаблон.
Осталось за месяц написать шаблон (тренинг стартовал в начале октября). Я не представлял как это сделать, т.к. я не имею ничего общего с программированием и у меня еще не было ни строчки кода...
#endregion
Ну что ж приступим к написанию шаблона на C# для Likes.fm. Шаблон писал специально для конкурса... Цель была уложиться со статьей и шаблоном за день, т.к. времени совершенно нет.
Рассмотрим первый снипет залогинивания в VK
PHP:
instance.ClearCache(); //чистим кэш
instance.ClearCookie(); //чистим куки
Tab tab = instance.ActiveTab;
tab.Navigate("vk.com", "vk.com"); //переходим по ссылке
if (tab.IsBusy) tab.WaitDownloading(); //ждем полной загружки страницы
//находим элементы на странице
HtmlElement inputEmail = tab.FindElementByXPath("//input[@id='index_email']", 0);
HtmlElement inputPass = tab.FindElementByXPath("//input[@id='index_pass']", 0);
HtmlElement buttonLogin = tab.FindElementByXPath("//form/button[contains(text(),'Войти') or contains(text(),'Log in')]", 0);
//производим с ними манипуляции (ввести значение, кликнуть)
inputEmail.SetValue(project.Variables["cfg_login"].Value, "Full");
inputPass.SetValue(project.Variables["cfg_pass"].Value, "Full");
buttonLogin.RiseEvent("click", "Full");
instance.Active.Navigate("vk.com", "vk.com");
Т.к. C# - объектный язык, то будем использовать эти преимущества.
PHP:
Tab tab = instance.ActiveTab;
tab.Navigate("vk.com", "vk.com");
if (tab.IsBusy) tab.WaitDownloading();
Это означает, что мы создаем объект типа Tab(закладка) с именем tab и присваиваем ему значение instance.ActiveTab (активная закладка)
Далее мы берем объект tab и обращаемся к его методу Navigate (открыть ссылку)
tab.Navigate("vk.com", "vk.com");
Так же получаем свойство объекта tab IsBusy (занятость).
И обращаемся к методу объекта tab WaitDownloading - что означает ждать загрузки.
И того выше приведенный код означает:
Создаем объект
Переходим по ссылке.
если(закладка занята), то ждем ее загрузки. (if (tab.IsBusy) tab.WaitDownloading()
Это все не профессиональное объяснение. Максимально простое, чтобы новичок не просто бездумно копировал снипеты, а более-менее понимал, что там происходит.
Следующий код идентичен первому, но как мы видим более громоздкий:
PHP:
instance.ActiveTab.Navigate("vk.com", "vk.com");
if (instance.ActiveTab.IsBusy) instance.ActiveTab.WaitDownloading();
Приведу еще пример. Следующие куски кода дадут один результат:
Код:
string strPattern = @"(?<=^).*?(?=\)\ )");
string strMsg = "3) Трололо";
string strResult = Regex.Match(strMsg, strPattern).Value;
Код:
string strResult = Regex.Match("3) Трололо", @"(?<=^).*?(?=\)\ )").Value;
Создаем объект HtmlElement с именем inputEmail
HtmlElement inputEmail = tab.FindElementByXPath("//input[@id='index_email']", 0);
Искать объект будем по пути XPath
Настоятельно рекомендую им овладеть. Очень мощный, гибкий и быстрый (в плане составления путей) инструмент. На сложный сайтах часто единственное решение находить нужный элемент.
Аналогично находим другие элементы. Чтобы донести всю прелесть xPath постараюсь находить элементы по разному. Вот один из примеров:
Составляю путь следующим образом
HtmlElement buttonLogin = tab.FindElementByXPath("//button[contains(text(),'Войти') or contains(text(),'Log in')]", 0);
Мы находим два элемента. И один из них в каком-то сайтбаре. Не разбираясь что это за сайтбар я немного модифицирую путь:
HtmlElement buttonLogin = tab.FindElementByXPath("//form/button[contains(text(),'Войти') or contains(text(),'Log in')]", 0);
В данном пути мы находим элемент по тексту содержащемуся внутри элемента contains(text(),'Войти') но при чистке куки VK может нам выкинуть страницу на английском, поэтому мы добавляем: or contains(text(),'Log in')]
Что означает или такой путь или такой...
Далее берем наш объект inputEmail и используем его метод SetValue (установить значение)
inputEmail.SetValue(project.Variables["cfg_login"].Value, "Full");
project.Variables["cfg_login"].Value - переменная из настроек проекта (логин)
"Full" - способ эмуляции. None, Medium или Full (документация)
И снова берем объект buttonLogin и вызываем его метод RiseEvent (клик)
buttonLogin.RiseEvent("click", "Full");
Все свойства и методы объектов сами появляются после того как вы поставите точку после объекта
Ну вот мы уже почти профи. Значит переходим ко второму снипету.
- Тема статьи
- Способы заработка
- Номер конкурса статей
- Седьмой конкурс статей
Вложения
-
4,1 КБ Просмотры: 1 006
-
25,8 КБ Просмотры: 496
-
612,9 КБ Просмотры: 512
Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...
Для того чтобы запустить шаблон, откройте нужную программу. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.