Рассмотрим различные почтовые сервисы, как автоматически заполнять формы регистрации, логиниться, нажимать активационную ссылку. 

В прошлой статье [https://corpadmin.pp.ua/blog/internet/post/98-kak-legalno-spamit-chast-1] мы рассмотрели различные программы от ZennoLab, как составляется алгоритм работы бота, разгадываются капчи, пишется и отправляется текст продавцу товара. Но все действия происходили от имени одного пользователя и этот недостаток мы решили устранить. Чтобы спамить более глобально, необходимо иметь множество почтовых аккаунтов, так как для одного аккаунта устанавливаются ограничения в написании сообщений или просмотре какого-то контента. Создавать почтовые аккаунты вручную утомительно и долго, поэтому поставим этот процесс на поток c помощью интернет-роботов на примере нескольких почтовых сервисов.

 

Хитрости интернет-сервисов

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

   - разгадывание разного рода капч;

   - отправка на почту активационной\подтверждающей ссылки;

   - отправка кода\пароля с помощью смс;

   - использование временного интервала;

   - ограничение по количеству посещений страниц, открытия картинок, написания сообщений, разгадывания капч и другое;

   - при регистрации помимо ввода основного почтового ящика, требуется указать ещё и дополнительный;

   - применение всплывающих окон с описанием функций своего сервиса или же сторонней рекламой, которые могут закрывать нужные кнопки или часть меню;

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

Зная об этом, можно обучить робота обходить данные ограничения и оставаться незамеченным.

 

Авторегистрация в Яндекс

Одним из популярных почтовых сервисов является www.yandex.ru. Воспользуемся его услугами.   

Сначала в программе ProjectMaker настраиваем профиль [https://zennolab.com/wiki/ru:actions:profile], который необходим для генерации данных и дальнейшей подстановки в поля на формах регистраций. Профиль состоит из 2х частей (см. рис. 1): первая (Profile) находится на нижней панели инструментов, в которой настраиваются национальность, местоположение, логин, пол, возраст, браузер, а вторая (Человек) - расположена на верхней панели инструментов, в ней видны все сгенерированные данные.

Рисунок 1. Настройка профиля.

Далее переходим на сайт www.yandex.ru, нажимаем ссылку Завести почту. На регистрационной форме в первом поле Имя нажимаем правой кнопкой мыши, в контекстном меню выбираем В конструктор действий, и опускаемся вниз экрана к открывшимся настройкам. Чтобы поле Имя получило рандомное значение, необходимо выбрать точку Set, в выпадающем списке Атрибут выбрать пункт Value, а в поле Значение нажать правой кнопкой мыши и выбрать в контекстном меню Установить значение из профиля->Фамилия (см. рис. 2). После этого в поле Значение появится переменная {-Profile.Name-}, затем нажимаем кнопку Добавить в проект. Таким образом проходим все компоненты на форме, подставляя сгенерированные значения переменных из профиля и создавая алгоритм работы бот-программы.

Рисунок 2. Подстановка сгенерированных данных.

В данном варианте мы будем регистрироваться без ввода номера телефона, нажав на ссылку У меня нет телефона. В этом случае появится 3 дополнительных поля, где нужно выбрать контрольный вопрос, ввести ответ на него и разгадать капчу. Тут более простая капча, нежели в OLX. Чтобы её разгадать, нужно на ней нажать правой кнопкой мыши, в контекстном меню выбрать пункт Это капча, появится нужный экшн для добавления его в алгоритм. В параметрах экшена нам необходимо выбрать модуль CapMostr2.dll и создать переменную, например, capcha, значение которой вставится в требующее его поле.

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

Внутри открывшегося почтового ящика сразу будет множество окон с различными вопросами и предложениями и это нужно учесть, так как их необходимо корректно закрыть, а затем разлогиниться. Для этого в алгоритм мы переносим уже известные нам компоненты с событием нажатия на кнопки (Пропустить, Закрыть, Напомнить позже и другие), а также между ними поставим интервал по 3 секунды.

После выхода из почтового ящика имеющиеся данные (нам достаточно логин и пароль) нужно куда-то сохранить. Для этих целей в программе ProjectMaker имеется несколько экшенов: Файлы, Базы данных, Список, Таблица. Мы применили экшн Файлы. Сначала на диске создаётся текстовый файл, затем в экшене указывается действие (нам нужно Записать текст), путь к файлу, активируются галочки Дописать файл и Записать перенос строки в конец, чтобы новая запись была с новой строки, а в текстовом поле Что писать нужно записать переменные, содержащие значения логина и пароля из профиля, а также мы ещё добавим домен и разделители. Строка с переменными будет выглядеть так:    {-Profile.Login-}@yandex.ru---{-Profile.Password-}.

После этого запускаем проект в программе ZennoPoster. Примерно за 1 час файл содержал около 40 записей. На разгадывание капч уходило 3-5 секунд, так как Яндекс не использует сложные капчи, поэтому и скорость работы робота высокая. Алгоритм работы бота-авторегистратора для почтового Яндекс-сервиса можно увидеть на рисунке 3.

Рисунок 3. Алгоритм работы бота для Яндекс.

 

Авторегистрация в MailRu

Воспользуемся ещё одним популярным почтовым сервисом www.mail.ru, пройдя проверку на робота другим способом.       

Создаём новый проект, добавляем в алгоритм нужные компоненты, форму регистрации заполняем по принципу с Яндекс. Доходим до поля Телефон, где требуется ввести номер телефона, чтобы получить смс-код активации. Для этого случая в ProjectMaker имеется экшн SMS-сервисы. Чтобы его задействовать, нужно сначала воспользоваться услугами любого смс-сервиса, например, 5SIM, Get-SMS, Give-SMS, Simsms, SMSAktiwator, SMS Activate, Smska, Sms-reg, VirtualSMS. Они предоставляют возможность использовать временный номер для получения смс онлайн, но за свои услуги требуют оплату.

Мы воспользовались смс-сервисом 5SIM [https://5sim.net/]. За 50 рублей у нас в распоряжении было 50 смс, а также код подтверждения, который вводится в поле Секретный ключ в настройках программы ProjectMaker, пройдя Старт->Настройки->СМС.    

Теперь добавим в алгоритм 2 компонента SMS-сервисы и настроим их. Данный экшн имеет несколько видов действий (см. рис. 4). Первый – нужен для генерации номера телефона, на который отправится код подтверждения регистрации. В параметрах этого экшена в выпадающих списках выбираем FiveSimSms.dll и Получить номер, в поле Сервис нужно вписать mailru (без www и “.”, найти название можно на сайте смс-сервиса), затем вписываем название оператора и создаем 2 переменные - для ID-активации (num_id) и номера телефона (number). После этого нужно ещё добавить экшены для нажатия на кнопку и паузы.

Рисунок 4. Создание почтовых аккаунтов в MailRu.

Второй экшн SMS-сервисы будет принимать смс, считывать полученный код и вставлять его в требуемое поле. Для этого в настройках данного экшена в выпадающих списках выбираем FiveSimSms.dll и Получить статус, в поле ID активации вводим переменную от первого экшена, в нашем случае она выглядит так:

{-Variable.num_id-} ,  а в последнем поле Положить в переменную создадим переменную, например, get_status (см. рис. 4).

В следующем компоненте Установка значения мы получим значение переменной get_status, содержащая код, который в свою очередь впишется в поле на форме регистрации. И снова добавляем несколько экшенов с паузами и для нажатия на кнопки.

В самом конце расположим 2 компонента Файлы, чтобы сохранять получившиеся логины и пароли, соответствующие переменные выглядят так:

{-Profile.Login-}@mail.ru---{-Profile.Password-} .

Если ориентироваться на время, то примерно за 1 час в файле было 20 записей. Время на получение смс и определения содержащегося в ней кода занимает около 2-3 минут и это считается быстро, так как время отклика может достигать и 10-15 минут.   

 

Авторегистрация в OLX

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

В программе ProjectMaker создаём новый проект – новый бот с новыми задачами. Заходим на сайт объявлений, открываем форму регистрации, заполняем поля, как описано выше, доходим до ввода логина (почтового ящика). Из имеющегося текстового файла нам нужно брать логины и пароли, то есть вычитывать строки, учитывать знаки разделения, подставлять в поле на форме.

Чтобы вычитать содержимое файла, нужно использовать компонент Списки и подключить к нему файл. Делается это в настройках списка, указав путь к файлу, установив галочки Загружать из файла, Сохранять изменения списка в файл, Оставлять пустой файл, сразу же можно просмотреть и содержимое (см. рис. 5).

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

Тут стоит сказать о небольшом неудобстве: считывать строки из файла без удаления нельзя, нужно обязательно в свойствах экшена Операции над списком активировать галочку Удалить строку после взятия (см. рис. 5). Именно по этой причине при авторегистрациях мы использовали по 2 компонента Файлы с одинаковыми настройками, чтобы в дальнейшем один из них оставался неизменным.

Рисунок 5. Настройка списка.

Так как в файле логин и пароль мы разделяем символами “---”, а список позволяет вычитать целиком строку, то необходимо применить регулярное выражение, позволяющее “откусить” часть строки. Для этого мы добавили 2 экшена Обработка текста, чтобы по отдельности вычитать логин и пароль.

В свойствах первого - выбрали Regex, создали переменную mail_login и написали регулярное выражение [https://zennolab.com/wiki/ru:creating-a-regular-expressions].*(?=---) “. Такое выражение означает, что нужно считать все символы до разделителя “ --- “. Второй экшн по настройкам похож на первый, только переменная будет mail_passw, а регулярное выражение - выглядеть так: “ (?<=---).* “.

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

Для работы с почтой добавляем в алгоритм компонент Принять почту (самый объёмный по количеству настроек). На первом шаге нужно заполнить некоторые поля для подключения к почтовому сервису:

   - Email и пароль – вставляем переменные {-Variable.mail_login-} и

{-Variable.mail_passw-}, значения которых передадутся от экшена Обработка переменных;

   - Сервер и порт: imap.mail.ru и 993;

   - Использовать SSL и протокол: TRUE и IMAP;

   - Имя пользователя: здесь указываем любое значение, например, логин от почтового ящика {-Variable.mail_login-};

   - Рег. выр: .*olx.pl.*;

   - Положить в переменную: activate_accaunt.

На втором шаге нажимаем на кнопку Скачать письма, чтобы увидеть весь список полученных писем, а затем жмём кнопку Искать письмо, что даст найти только одно письмо относительно первого регулярного выражения (см. рис. 6).  

Рисунок 6. Настройка получения писем.

Третий шаг заключается в поиске активационной ссылки внутри найденного письма, в нашем случае это кнопка с названием Aktywuj konto, имеющая длинный URL-адрес вместе со стилями, сократим его точками:

<a id = "confirmLink"

href="https://www.olx.pl/konto/confirm/?email=......=link" style="width:....:#ffffff"><strong>Aktywuj konto</strong></a>                                                                                                       

В конструкторе регулярных выражений мы подставляем символы начала и конца строки, а также слова для поиска, после чего получаем другое регулярное выражение:

(?<=href=")https://www\.olx\.pl/konto/confirm/\?email=.*(?=style=") .

На четвёртом шаге найденному результату требуется присвоить переменную, назовём её activate_accaunt_olxpl (см. рис. 6).

После экшена Принять почту в алгоритм добавляем компонент Перейти на страницу, а в его свойствах в поле URL пишем переменную

{-Variable.activate_account_olxpl-}, которая будет содержать в себе активационную ссылку. Весь алгоритм можно увидеть на рисунке 7.

Рисунок 7. Алгоритм работы авторегистрации в ОLX.

Время работы данного робота более длительное, нежели у предыдущих 2х, потому как в OLX используется более сложная капча (reCaptcha2), её не всегда получается разгадать даже с 3-4 раза, а иногда и вовсе не выходит.  

 

Ещё о некоторых компонентах

Расскажем ещё о нескольких часто используемых компонентах.

Экшн Оповещение носит информационный характер, он может выводить на экран любой текст или значения переменных. Например, для почтового экшена мы применили следующее оповещение: “Данных уже нет, файл пуст”, а также отображение сгенерированных номеров телефонов и кодов подтверждения при регистрации почтовых аккаунтов. Также с помощью данного компонента мы в алгоритме смогли легко зациклить процесс разгадывания капч при наличии неразгаданных (см. рис. 7).  

Компонент Настройки (относится к браузеру) – содержит в себе большой перечень действий на выбор. Он может: включать/выключать отображение картинок, JavaScript, анимационный контент на Flash, Java, Silverlight и с тэгами <audio> и <video>, всплывающие окна, загрузку плагинов и стилей браузера, рекламу, эмуляцию геопозиции, очищать кэш и куки, обрабатывать запросы подтверждения, ввода данных и авторизации и другое.

Логические экшены If и Switch. В If используются операторы больше, меньше, равно, не равно, И, ИЛИ, больше или равно, меньше или равно, после чего он имеет 2 ветки для соответствующего результата - “Да”, “Нет”. Компонент Switch может иметь несколько веток с результатами “Да” и только лишь одну – “Нет”. Данные экшены применяют при необходимости устроить какую-то проверку, например, наличие кнопки на странице сайта, ссылки или окошка с вопросами, прошёл ли нужный результат, правильно ли взяты данные и так далее. 

  

Спамим по-крупному

Для массовой рассылки сообщений продавцам на сайте объявлений необходимо сделать мелкие доработки.

Для бота-спамера заменяем первую часть алгоритма - добавляем ему экшены считывания и обрезки данных из файла, как описано выше. Также добавляем компонент для связи с ProxyChecker, чтобы скрывать IP-адрес компьютера, подставляя “живые” прокси-адреса из имеющегося перечня.

Для статистики мы считаем, сколько средств уходит на смс-сервис, сколько почтовых аккаунтов создаётся и сколько задействуется, а сколько из них забанено, сколько время тратиться на отправку 1000 сообщений, сколько расходуется электроэнергии и другое. Какую-то часть статистики мы выводим через компонент Оповещение, а какую-то – сохраняем в файл, таблицу и базу данных.

 

Работа в команде

У нас имеется как минимум 4 бота: 2 – выдают почтовые аккаунты сервисов Яндекс и MailRu, 1 – производит регистрации на сайте объявлений, 1 – рассылает текстовые сообщения продавцам. Добавляем всех ботов в программу ZennoPoster, чтобы они трудились вместе.   

Одновременная работа 4х ботов (см. рис. 8) заставляет задуматься о потребляемой мощности компьютера. При такой нагрузке процессор работает примерно на 60% больше, а памяти задействуется на 10% больше (см. рис. 9), нежели при обычной офисной работе.

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

Рисунок 9. Загруженность компьютера.

 

Достоинства: всю монотонную работу выполняет робот, а, следовательно, отбрасывается человеческий фактор, увеличивается скорость работы, быстро происходит отладка, так как визуально видно, на каком компоненте произошла остановка.

Недостатки: нельзя считывать строку из файла без её последующего удаления, нельзя работать напрямую с содержимым из файла, а нужно подключать к нему компонент Списки, при открытии параметров экшена в конструкторе в поле Значение остаются переменные от предыдущего компонента, нельзя изменить существующую переменную, а можно создавать только новую, при открытии программы ZennoPoster требуется закрыть Skype.

Вывод: Мы рассмотрели более расширенный вариант использования интернет-роботов, различные сервисы, новые компоненты и их настройки, научились создавать ботов-спамеров и ботов-авторегистраторов. Мы ставим их работу на поток, облегчая в разы работу в интернете по рассылке своих предложений продавцам. Таким образом мы продолжаем “легально” спамить, но только уже по-крупному.