Обсудим, для чего нужны боты, где они применяются и как самим его написать. Рассмотрим применение разных программ от ZennoLab.

Электронная коммерция для многих - основное направление бизнеса, другие его только осваивают. На поиск информации, обработку, продвижение (рекламирование) товара или услуг среди большого количества сайтов затрачивается очень большой процент времени. Необходимо ввести учётные данные, применить фильтр к поиску, написать текст сообщения, разгадать капчу. Вручную это долго и утомительно. Однако, эти процессы можно упростить или ускорить, минимизируя  затраты, и в этом помогут специальные программы-боты. В этом случае не нужно быть веб-программистом или SEO-специалистом, следовательно, нет смысла держать в штате отдельную единицу для таких целей.

 

Задача. На польском сайте объявлений www.olx.pl автоматизировать процесс поиска игровых ноутбуков, а также процесс написания сообщений продавцам. 

Нами было изучено несколько программ по разгадыванию капч (XRumer, RuCaptchaBotX), продвижению сайтов (CS Yazzle, AddStudio, Site–auditor), сервисы автоматической регистрации и автопостинга. Перечень впечатляет... Решили остановиться на наборе программ от ZennoLab, так как они по всем нужным нам направлениям от одного производителя, хорошая поддержка, функционал больше, чем у других, можно самостоятельно содавать бот-программы, приятный интерфейс.      

Сначала разберёмся, из чего состоит ZennoLab [http://zennolab.com/ru/]. Платная версия ZennoPoster, включает в себя ProjectMaker, в котором создаются алгоритмы работы ботов, сам ZennoPoster - является самой основной программой, которая запускает процесс выполнения алгоритмов, CapMonster, необходимый для разгадывания капч, который можно купить и отдельно, CodeCreator – среда для написания кода программы, ZennoProxyChecker (идёт отдельно) – обработчик списков прокси-серверов. В демо-версии ZennoPoster имеются ограничения как во времени (доступна на протяжении 14 дней), так и в функционале.

Мы приобрели Lite-версию ZennoPoster стоимостью в 3470 рублей, Lite-версию CapMonster за 37 долларов, ZennoProxyChecker Pro-версию за 1870 рублей. При инсталляции программ потребуются зависимости .NetFramework 3.5 [ https://winnote.ru/instructions/219-kak-ustanovit-net-framework-35-i-45-v-windows-10.html ], Microsoft Visual C++ 2008\2010, а также необходимо иметь полный доступ в интернет (у нас через прокси-сервер не работал встроенный в ProjectMaker браузер).  

Бот-программу можно написать с помощью записи действий, где все само создастся, или с помощью детального самостоятельно созданного алгоритма. Мы рассмотрим оба случая.

 

Самостоятельно созданный алгоритм

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

Открываем ProjectMaker и создаём новый проект. Переходим во встроенный браузер и открываем сайт объявлений www.olx.pl, заходим под своими учётными данными, в поиске находим необходимые товары, применяем фильтры (например, лэптопы фирмы ASUS серии ROG, с ценой от 4700 до 5000 злотых) и получаем более укороченный их список (см. рис. 1), а именно из 7 объявлений.

Рисунок 1. Встроенный браузер в ProjectMaker.

Далее копируем сформированный URL-адрес, переходим в Расширенный редактор (кнопкой в верхнем меню) и слева на панели инструментов нам будет доступно множество компонентов (см. рис 2.). Первым делом перенесём компонент Переход на страницу на главную рабочую область и соединим стрелкой с началом алгоритма Start, двойным кликом левой кнопкой мыши заходим в свойства и в строке URL вставляем скопированный адрес. Для проверки запускаем проект по нажатию на кнопку С начала и в браузере ProjectMaker наблюдаем, что произошёл переход на отфильтрованный список.

Рисунок 2. Расширенный редактор ProjectMaker.

Затем в алгоритм добавляем компонент Данные, который распарсит полученные с сайта данные, это будут объявления. Данный компонент один из самых сложных в понимании, так как необходимо использовать регулярные выражения [ https://zennoscript.com/ru/blog/zennoscript-novosti/regular-expressions-regexp , http://zennolab.com/discussion/threads/reguljarnye-vyrazhenija-na-vse-sluchai-zhizni.20829/ ], а их стандартных не бывает. Проверить правильность составленного регулярного выражения можно с помощью конструктора, нажав на панели на кнопку Тестер рег. выражений. В нём нужно заполнить некоторые поля, где указать начало и окончание URL-адреса, какие-то выражения, символы начала и конца адреса сайта. В нашем случае в поле Текст для обработки мы вставим весь исходный код страницы, начало будет выглядеть так:  https://www.olx.pl/oferta, а заканчиваться кавычками. Нужное регулярное выражение (https://www\.olx\.pl/oferta.*?") создастся само (см. рис. 3).

Рисунок 3. Конструктор регулярных выражений.

В поле Результат обработки увидим перечень объявлений, который состоит из 14 штук, но относительно фильтра на веб-странице отображено 7 штук. Проанализировав результат, стало понятно, что каждый URL-адрес задвоен, так как картинка в объявлениях тоже является ссылкой. Это мы устраним позже. Сейчас копируем созданное регулярное выражение и вставляем его в компонент Данные в поле Regex, в выпадающем списке Что взять: выбираем Source, в выпадающем списке Что брать выбираем Все, и ещё в одном списке ниже Положить результат в список будет выбран Список 1.

Следующим шагом в построении алгоритма следует добавить несколько компонентов Список, а именно 3. В первый список будет помещаться значение переменной Variable1 от предыдущего контейнера, во втором – удаляться дубли, в третий – передаваться оригинальные данные, то есть наши 7 ссылок.  Для удобства можно поместить ещё один список и контейнер Оповещение (см. рис. 2) для вывода на экран сообщения с общим количеством объявлений. Для этого в свойствах добавленного списка выбираем Получить количество строк и указываем переменную.

Далее переносим контейнер Переход на страницу и в свойствах в поле URL вписываем не адрес, а переменную {-Variable.Variable1-}, которая будет принимать разные значения из списка. Этот шаг позволит войти внутрь конкретного объявления.

На следующем шаге добавляем контейнер Установка значения, в свойствах которого в поле Что: пишем нужный нам текст, например, “Good day. Is 20 % discount possible? ”, в выпадающем списке Куда: выбираем Value.   

Ещё один контейнер – Событие - необходим для нажатия на веб-сайте кнопки Отправить, который мы добавим из ProjectMaker. Для этого на ней нажимаем правой кнопкой мыши и в контекстном меню выбираем пункт В конструктор действий, после чего внизу появится дополнительная панель с настройками. В полях уже будут отражены необходимые данные – это название тэга, имя и значение атрибута, тип поиска. Здесь мы должны выбрать точку Rise, а затем кнопку Добавить в проект (см. рис. 4).

Рисунок 4. Дополнительная панель настроек в ProjectMaker.

Осталось соединить все контейнеры последовательно, это делается мышью. Тут же надо учитывать, что необходимо зациклить действия, чтобы бот прошёлся по всем выбранным объявлениям. Зацикливание должно происходить в том месте, где получаем оригинальный перечень ссылок. После этого на панели жмём кнопку С начала и следим за выполнением каждого шага созданного алгоритма.

 

Аутентификация с помощью записи действий

Сейчас алгоритм начинается с залогиненного пользователя. Чтобы каждый раз не вводить учётные данные, автоматизируем этот процесс.

В панели инструментов ProjectMaker я не нашёл специального компонента для ввода логина и пароля, а какой для этого выбрать, сразу и не скажешь. Выходом является применение записи действий для автоматического создания части алгоритма. В этом случае ProjectMaker будет следить за срабатыванием клавиатуры и мыши, и создавать необходимые экшены с заполненными параметрами.

В ProjectMaker на верхней панели нажимаем кнопку Запись, затем во встроенном браузере входим на сайт www.olx.pl, где жмём кнопку Moj OLX (Мой профиль), в появившемся окне вписываем логин и пароль и жмём кнопку Zaloguj sie (Войти). В проекте появились несколько контейнеров Установка значения и Событие. Эту часть алгоритма копируем и вставляем в начало нашего алгоритма, а затем соединяем экшены. Получившийся результат можно увидеть на рисунке 5.

Рисунок 5. Автоматически созданная часть алгоритма.

Распознавание капчи

Процесс распознавания капч не является простым, так как нужно понять её тип, учитывать время её появления, при необходимости устанавливать в алгоритме задержку, анализировать с помощью разных модулей, использовать переменные и\или GET\POST-запросы, передавать данные в специальные сайты распознавания капч, а потом получать обратно результат и применять многие другие варианты. Стандартного подхода нет. 

Как и многие другие многопользовательские интернет-порталы, www.olx.pl, также старается защититься от бот-программ с помощью капчи, а вернее рекапчи. Для их распознавания применяется отдельная программа CapMonster, созданная на основе OCR-алгоритмов. Она включает в себя все необходимые модули распознавания и эмуляции капча-сервисов. Имеется даже статистика основных разгаданных капч (в %), которую можно посмотреть здесь [ https://docs.google.com/spreadsheets/d/1W1EdvNhu34vAxWAjmIBZY8hsZWoNj3poChIHYVQCHAo/edit#gid=0 ].

                Капчи можно разделить на несколько типов:

  • регистрозависимые ;
  • состоящие из нескольких картинок – считаются более сложные и защищённые;
  • текстовые – считаются слабозащищённые, так как текст не нарисован на картинке;
  • математические текстовые капчи, где нужно вводить какое-то выражение из цифр, например, 35+66 и\или написать результат их суммы;
  • flash-капчи;
  • аудио-капчи и некоторые другие.

Компанией Google была выпущена новая версия защиты от ботов – ReCaptcha2. На веб-странице имеется галочка Я не робот, при активации которой появляется несколько картинок, где нужно выбрать требуемые изображения, например, дорожные знаки (см. рис. 6).

Рисунок 6. Пример рекапчи.

Чтобы отправить такую капчу на опознание, в ProjectMaker имеется специальный компонент Распознать ReCaptcha2 [ http://zennolab.com/wiki/ru:addons:capmonster:rc2 ], в свойствах которой достаточно выбрать лишь модуль распознавания, в нашем случае это CapMonster2.dll (см. рис. 7). Ещё должна быть запущена программа CapMonster (см. рис. 8), которая получает параметры от экшена и выполняет действия по распознаванию, а затем возвращает ответ.

Также необходимо добавить в алгоритм событие активации галочки Я не робот, которое как раз и будет запускать окно с картинкой. Для этих целей снова воспользуемся конструктором, нажав на элементе правой кнопкой мыши и выбрав в контекстном меню пункт В конструктор действий. В нём нужно изменить только точку на Rise и рядом нажать кнопку Добавить в проект.

Рисунок 7. Настройка экшена распознавания рекаптчи.

Основных установленных параметров по умолчанию в программе CapMonster достаточно, чтобы началось опознавание капч. На вкладке База модулей можно просмотреть список всех имеющихся модулей, которые и делают основную работу. Их большое множество и они делятся на следующие группы: Blogs, CMS, Emails, Forums, Guest Books, Internet Shops, Other, ReCaptcha, SearchEngines, Social, SolveMedia, Special sites, Trash Captchas, Universal captchas. 

Разгадывание капч можно производить с помощью универсального модуля, нажав на Universal правой кнопкой мыши и выбрав в меню пункт Распознавать все капчи через этот модуль, или с помощью специальных (остальных). Время разгадывания капч может варьироваться от нескольких секунд до нескольких минут, результат будет виден как в цифрах, так и графически (см. рис. 8).

Рисунок 8. Программа CapMonster.

После этого CapMonster отдаёт результат и в алгоритме происходит переход на следующий экшн, у нас это событие нажатия на кнопку Отправить, результатом чего будет отправлено сообщение продавцу товара.

На некоторых сайтах после выбора картинок иногда появляется событие autosubmit - отправка решения рекапчи в формах, - где нет кнопки Отправить. Для работы с autosubmit в программе ProjectMaker в свойствах экшена Распознать ReCaptcha2 нужно выбрать вкладку Активная.

Ещё один способ определения капчи – с помощью ресурса RuCaptcha [ https://rucaptcha.com/ ], указав в свойствах того же экшена другой модуль - RuCaptcha.dll, в поле SiteKey – параметр {-Variable.sitekey-}, в поле URL - параметр {-Variable.url_page-} или ключ sitekey, который парсится с сайта, где находится капча и адрес самого cайта,а в поле Положить в переменную – имя какой-то переменной [ http://zennolab.com/wiki/ru:addons:capmonster:sitekey#подключение-модуля-recaptcha2-sitekey-addon , https://rucaptcha.com/blog/for_webmaster/rucaptcha-recaptcha-zennoposter ].

 

ZennoPoster

После того, как алгоритм (шаблон) создан, проверен и сохранён, его надо открыть в программе ZennoPoster для выполнения.  

В настройках программы ZennoPoster в поле Сколько делать необходимо указать число (количество раз) его выполнения, также можно указать приоритет, правила, прокси, метки, количество потоков, расписание и другое (см. рис. 9).

Рисунок 9. Программа ZennoPoster.

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

 

Анонимность

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

Платная программа ZennoProxyChecker может обрабатывать большое количество прокси-адресов, отбирая среди них “живые” относительно указанных правил и применяя их при работе бота. Для этого в ZennoProxyChecker необходимо загрузить список прокси-серверов, что можно сделать как вручную (прямой вставкой адресов прокси), так и автоматически (когда программа сама парсит адреса прокси-серверов указанных сайтов или локальных файлов со списками). Списки с прокси можно либо купить, либо найти на бесплатных ресурсах [ http://www.therealist.ru/proksi/spisok-vsex-rabochix-proksi , http://free-proxy.cz/ru/ ].

Добавление прокси в программу происходит на вкладке Источники по нажатию на кнопку Добавить прокси. Тут нужно учитывать формат написания, например, ip:port  подходит для обычных прокси, а login:password@ip:port - для прокси с авторизацией.

Далее нужно выполнить проверку прокси, для этого переходим на вкладку Управление и нажимаем на кнопку Загружать прокси, а затем жмём кнопку Проверять прокси. Для просмотра полученных “чистых” прокси-адресов переходим на вкладку Прокси (см. рис. 10), тут можно применять правила для отбора.

Рисунок 10. Список прокси-адресов в программе ZennoProxyChecker.

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

Второй вариант дополнительной анонимности – очистка Cookie в начале алгоритма (см. рис. 7), экшн появляется автоматически.

Третий – новые регистрации, новые учётные данные. В ProjectMaker для такого случая имеется экшн – Операции над профилем, который позволяет эмулировать профиль человека. Все необходимые данные (имя, фамилия, дата рождения, e-mail, пол, национальность) генерируются программой и обход защит от ботов происходит автоматически. Если веб-сервис требует подтверждения через смс-сообщение, то нужно будет добавить и настроить ещё и компонент sms-сервисы [ https://zennolab.com/wiki/ru:sms-services ].

 

Конечно, изначально нужно познакомиться с программами ProjectMaker, ZennoPoster, CapMonster, ZennoProxyChecker, понять принцип составления алгоритма, какие компоненты необходимы, какие параметры заполняются автоматически, а какие требуют ручного ввода, как распознать капчу и не быть заблокированным, а после этого создать простого бота. Проработав алгоритмы и перенеся свои интернет-идеи в ProjectMaker, можно “легально” спамить и добиться существенной минимизации затрат. 

 

Готовые боты

На сайте ZennoLab имеется немалое количество уже готовых ботов [ https://zennostore.com/ ], но они платные, стоимостью от 15 до 222 долларов и применяются для:

  • авторегистрации аккаунтов в ВКонтакте;
  • твита, ретвита, комментариев, фолловинга, рассылки сообщений, подписки и удаления подписчиков в Twitter;
  • парсинга, рассылки личных сообщений, регистрации и размещения объявлений на сайте Avito.ru;
  • комбайна ОК и ВК;
  • продвижения в Яндекс;
  • парсинга анкет и фото с Mamba.ru;
  • авторегистрации, автолайков и авторепостов постов в ВК;
  • парсинга ОК;
  • переноса рекламных компаний из Яндекс Директ в Google Adwords.