Рубрика:
Администрирование /
Автоматизация
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
СЕРГЕЙ БОЛДИН, системный администратор в энергетической компании, bsergey2@gmail.com
Автоматизация работы в интернете, или Как «легально» спамить. Часть 2. Авторегистрация
Рассмотрим различные почтовые сервисы, как автоматически заполнять формы регистрации, логиниться, нажимать активационную ссылку
В прошлой статье [1] мы рассмотрели различные программы от ZennoLab, как составляется алгоритм работы бота, разгадываются капчи, пишется и отправляется текст продавцу товара. Но все действия происходили от имени одного пользователя, и этот недостаток мы решили устранить. Чтобы спамить более глобально, необходимо иметь множество почтовых аккаунтов, так как для одного аккаунта устанавливаются ограничения в написании сообщений или просмотре какого-то контента. Создавать почтовые аккаунты вручную утомительно и долго, поэтому поставим этот процесс на поток c помощью интернет-роботов на примере нескольких почтовых сервисов.
Хитрости интернет-сервисов
Многие сайты применяют различные приемы для защиты от интернет-роботов, перечислю несколько известных мне:
- разгадывание разного рода капч;
- отправка на почту активационной/подтверждающей ссылки;
- отправка кода/пароля с помощью смс;
- использование временного интервала;
- ограничение по количеству посещений страниц, открытия картинок, написания сообщений, разгадывания капч и другое;
- при регистрации, помимо ввода основного почтового ящика, требуется указать еще и дополнительный;
- применение всплывающих окон с описанием функций своего сервиса или же сторонней рекламой, которые могут закрывать нужные кнопки или часть меню;
- использование различных инструментов для определения ботов по IP-адресу, спам-словам, электронным адресам, повышенной активности.
Зная об этом, можно обучить робота обходить данные ограничения и оставаться незамеченным.
Авторегистрация в Яндексе
Одним из популярных почтовых сервисов является Яндекс.Почта. Воспользуемся его услугами.
Сначала в программе ProjectMaker настраиваем профиль [2], который необходим для генерации данных и дальнейшей подстановки в поля на формах регистраций. Профиль состоит из двух частей (см. рис. 1):
- первая (Profile) находится на нижней панели инструментов, в которой настраиваются национальность, местоположение, логин, пол, возраст, браузер,
- а вторая (Человек) расположена на верхней панели инструментов, в ней видны все сгенерированные данные.
Рисунок 1. Настройка профиля
Далее переходим на сайт yandex.ru, нажимаем ссылку Завести почту. На регистрационной форме в первом поле Имя нажимаем правой кнопкой мыши, в контекстном меню выбираем В конструктор действий и опускаемся вниз экрана коткрывшимся настройкам. Чтобы поле Имя получило рандомное значение, необходимо выбрать точку Set, в выпадающем списке Атрибут выбрать пункт Value, а в поле Значение нажать правой кнопкой мыши и выбрать в контекстном меню Установить значение из профиля → Фамилия (см. рис. 2).
Рисунок 2. Подстановка сгенерированных данных
После этого в поле Значение появится переменная {-Profile.Name-}, затем нажимаем кнопку Добавить в проект. Таким образом, проходим все компоненты на форме, подставляя сгенерированные значения переменных из профиля и создавая алгоритм работы бот-программы.
В данном варианте мы будем регистрироваться без ввода номера телефона, нажав на ссылку У меня нет телефона. В этом случае появится три дополнительных поля, где нужно выбрать контрольный вопрос, ввести ответ на него и разгадать капчу. Тут более простая капча, нежели в OLX.
Чтобы ее разгадать, нужно на ней нажать правой кнопкой мыши, в контекстном меню выбрать пункт Это капча, появится нужный экшн для добавления его в алгоритм. В параметрах экшна нам необходимо выбрать модуль CapMostr2.dll и создать переменную, например capcha, значение которой вставится в требующее его поле.
После этого добавим еще в алгоритм экшн Пауза со значением пять секунд, так как не всегда правильно отрабатывает следующее действие нажатия на кнопку Зарегистрироваться. Если все гладко прошло, то сервис Яндекс откроет только что созданный почтовый ящик.
Внутри открывшегося почтового ящика сразу будет множество окон с различными вопросами и предложениями, и это нужно учесть, так как их необходимо корректно закрыть, а затем разлогиниться. Для этого в алгоритм мы переносим уже известные нам компоненты с событием нажатия на кнопки (Пропустить, Закрыть, Напомнить позже и другие), а также между ними поставим интервал по три секунды.
После выхода из почтового ящика данные (нам достаточно логина и пароля) нужно куда-то сохранить. Для этих целей в программе ProjectMaker имеется несколько экшнов:
- Файлы,
- Базы данных,
- Список,
- Таблица.
Мы применили экшн Файлы. Сначала на диске создается текстовый файл, затем в экшне указывается действие (нам нужно Записать текст), путь к файлу, активируются галочки Дописать файл и Записать перенос строки в конец, чтобы новая запись была с новой строки, а в текстовом поле Что писать нужно записать переменные, содержащие значения логина и пароля из профиля, а также мы еще добавим домен и разделители. Строка с переменными будет выглядеть так:
{-Profile.Login-}@yandex.ru---{-Profile.Password-}
После этого запускаем проект в программе ZennoPoster. Примерно в течение часа файл содержал около 40 записей. На разгадывание капч уходило три – пять секунд, так как Яндекс не использует сложные капчи, поэтому и скорость работы робота высокая. Алгоритм работы бота-авторегистратора для почтового Яндекс-сервиса можно увидеть на рис. 3.
Рисунок 3. Алгоритм работы бота для Яндекса
Авторегистрация в MailRu
Воспользуемся еще одним популярным почтовым сервисом Почта Mail.Ru, пройдя проверку на робота другим способом.
Создаем новый проект, добавляем в алгоритм нужные компоненты, форму регистрации заполняем по принципу Яндекса. Доходим до поля Телефон, где требуется ввести номер телефона, чтобы получить смс-код активации. Для этого случая в ProjectMaker имеется экшн SMS-сервисы. Чтобы его задействовать, нужно сначала воспользоваться услугами любого смс-сервиса, например 5SIM, Get-SMS, Give-SMS, Simsms, SMSAktiwator, SMS Activate, Smska, Sms-reg, VirtualSMS. Они предоставляют возможность использовать временный номер для получения смс онлайн, но за свои услуги требуют оплату.
Мы воспользовались смс-сервисом 5SIM [3]. За 50 руб. у нас в распоряжении было 50 смс, а также код подтверждения, который вводится в поле Секретный ключ в настройках программы ProjectMaker, пройдя Старт → Настройки → СМС.
Теперь добавим в алгоритм два компонента SMS-сервисы и настроим их. Данный экшн имеет несколько видов действий (см. рис. 4).
Рисунок 4. Создание почтовых аккаунтов в MailRu
Первый нужен для генерации номера телефона, на который отправится код подтверждения регистрации. В параметрах этого экшна в выпадающих списках выбираем FiveSimSms.dll и Получить номер, в поле Сервис нужно вписать mailru(без www и «.», найти название можно на сайте смс-сервиса), затем вписываем название оператора и создаем две переменные – для ID-активации (num_id) и номера телефона (number). После этого нужно еще добавить экшны для нажатия на кнопку и паузы.
Второй экшн SMS-сервисы будет принимать смс, считывать полученный код и вставлять его в требуемое поле. Для этого в настройках данного экшна в выпадающих списках выбираем FiveSimSms.dll и Получить статус, в поле ID активации вводим переменную от первого экшна, в нашем случае она выглядит так:
{-Variable.num_id-}
а в последнем поле Положить в переменную создадим переменную, например get_status (см. рис. 4).
В следующем компоненте Установка значения мы получим значение переменной get_status, содержащей код, который в свою очередь впишется в поле на форме регистрации. И снова добавляем несколько экшнов с паузами и для нажатия на кнопки.
В самом конце расположим два компонента Файлы, чтобы сохранять получившиеся логины и пароли, соответствующие переменные выглядят так:
{-Profile.Login-}@mail.ru---{-Profile.Password-}
Если ориентироваться на время, то примерно в течение часа в файле было 20 записей. Время на получение смс и определение содержащегося в ней кода занимает около двух-трех минут, и это считается быстро, так как время отклика может достигать и 10-15 минут.
Авторегистрация в OLX
Когда у нас в наличии имеется множество почтовых аккаунтов, следует перейти к следующему этапу – автоматической регистрации на польском сайте объявлений www.olx.pl. Мы уже умеем активировать аккаунт с помощью смс, поэтому рассмотрим иной случай – как обучить робота находить активационную ссылку в почтовых письмах.
В программе ProjectMaker создаем новый проект – новый бот с новыми задачами. Заходим на сайт объявлений, открываем форму регистрации, заполняем поля, как описано выше, доходим до ввода логина (почтового ящика). Из имеющегося текстового файла нам нужно брать логины и пароли, то есть вычитывать строки, учитывать знаки разделения, подставлять в поле на форме.
Чтобы вычитать содержимое файла, нужно использовать компонент Списки и подключить к нему файл. Делается это в настройках списка, указывая путь к файлу, устанавливая галочки Загружать из файла, Сохранять изменения списка в файл, Оставлять пустой файл, сразу же можно просмотреть и содержимое (см. рис. 5).
Рисунок 5. Настройка списка
Далее в алгоритм добавляем экшн Операции над списком, в его настройках нужно выбрать действие и соответствующий ему параметр. В нашем случае действие – это Получить строку, а параметр – Первую, затем нужно создать переменную, в которую будет ложиться полученный результат. У нас она называется from_file.
Тут стоит сказать о небольшом неудобстве: считывать строки из файла без удаления нельзя, нужно обязательно в свойствах экшна Операции над списком активировать галочку Удалить строку после взятия (см. рис. 5). Именно по этой причине при авторегистрациях мы использовали по два компонента Файлы с одинаковыми настройками, чтобы в дальнейшем один из них оставался неизменным.
Так как в файле логин и пароль мы разделяем символами «---», а список позволяет вычитать целиком строку, то необходимо применить регулярное выражение, позволяющее «откусить» часть строки. Для этого мы добавили два экшна Обработка текста, чтобы по отдельности вычитать логин и пароль.
В свойствах первого выбрали Regex, создали переменную mail_login и написали регулярное выражение [4] " .*(?=---) ". Такое выражение означает, что нужно считать все символы до разделителя «---» .
Второй экшн по настройкам похож на первый, только переменная будет 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
Время работы данного робота более длительное, нежели у предыдущих двух, потому как в OLX используется более сложная капча (reCaptcha2), ее не всегда получается разгадать даже с трех-четырех раз, а иногда и вовсе не выходит.
Еще о некоторых компонентах
Расскажем еще о часто используемых компонентах.
Экшн Оповещение носит информационный характер, он может выводить на экран любой текст или значения переменных. Например, для почтового экшна мы применили следующее оповещение: «Данных уже нет, файл пуст», а также отображение сгенерированных номеров телефонов и кодов подтверждения при регистрации почтовых аккаунтов. Также с помощью данного компонента мы в алгоритме смогли легко зациклить процесс разгадывания капч при наличии неразгаданных (см. рис. 7).
Компонент Настройки (относится к браузеру) содержит в себе большой перечень действий на выбор. Он может включать/выключать отображение картинок, JavaScript, анимационный контент на Flash, Java, Silverlight и с тэгами <audio> и<video>, всплывающие окна, загрузку плагинов и стилей браузера, рекламу, эмуляцию геопозиции, очищать кэш и куки, обрабатывать запросы подтверждения, ввода данных и авторизации и другое.
Логические экшны If и Switch. В If используются операторы больше, меньше, равно, не равно, И, ИЛИ, больше или равно, меньше или равно, после чего он имеет две ветки для соответствующего результата – «Да», «Нет».
Компонент Switch может иметь несколько веток с результатами «Да» и только лишь одну «Нет».
Данные экшны применяют при необходимости устроить какую-то проверку, например наличие кнопки на странице сайта, ссылки или окошка с вопросами, прошел ли нужный результат, правильно ли взяты данные и так далее.
Спамим по-крупному
Для массовой рассылки сообщений продавцам на сайте объявлений необходимо сделать мелкие доработки.
Для бота-спамера заменяем первую часть алгоритма – добавляем ему экшны считывания и обрезки данных из файла, как описано выше. Также добавляем компонент для связи с ProxyChecker, чтобы скрывать IP-адрес компьютера, подставляя «живые» прокси-адреса из имеющегося перечня.
Для статистики мы считаем, сколько средств уходит на смс-сервис, сколько почтовых аккаунтов создается и сколько задействуется, а сколько из них забанено, сколько времени тратится на отправку 1000 сообщений, сколько расходуется электроэнергии и т.д. Какую-то часть статистики мы выводим через компонент Оповещение, а какую-то сохраняем в файл, таблицу и базу данных.
Работа в команде
У нас имеется как минимум четыре бота: два выдают почтовые аккаунты сервисов Яндекса и MailRu, один производит регистрации на сайте объявлений, один рассылает текстовые сообщения продавцам. Добавляем все боты в программу ZennoPoster, чтобы они трудились вместе.
Одновременная работа четырех ботов (см. рис. 8) заставляет задуматься о мощности компьютера. При такой нагрузке процессор работает примерно на 60% больше, а памяти задействуется на 10% больше (см. рис. 9), нежели при обычной офисной работе.
Рисунок 8. Программа ZennoPoster
Рисунок 9. Загруженность компьютера
Достоинства: всю монотонную работу выполняет робот, а следовательно, отбрасывается человеческий фактор, увеличивается скорость работы, быстро происходит отладка, так как визуально видно, на каком компоненте произошла остановка.
Недостатки: нельзя считывать строку из файла без ее последующего удаления, нельзя работать напрямую с содержимым файла, а нужно подключать к нему компонент Списки, при открытии параметров экшна в конструкторе в поле Значение остаются переменные от предыдущего компонента, нельзя изменить существующую переменную, а можно создавать только новую, при открытии программы ZennoPoster требуется закрыть Skype.
Мы рассмотрели более расширенный вариант использования интернет-роботов, различные сервисы, новые компоненты и их настройки, научились создавать боты-спамеры и боты-авторегистраторы. Мы ставим их работу на поток, облегчая в разы работу в интернете по рассылке своих предложений продавцам. Таким образом мы продолжаем «легально» спамить, но только уже по-крупному.
- Болдин С. Автоматизация работы в интернете, или Как «легально» спамить. // «Системный администратор», № 5, 2018 г. – С. 10-17. URL: http://samag.ru/archive/article/3644.
- Настройка профиля пользователя – https://zennolab.com/wiki/ru:actions:profile.
- СМС-сервис 5SIM – https://5sim.net/.
- Символы и параметры регулярных выражений – https://zennolab.com/wiki/ru:creating-a-regular-expressions.
Ключевые слова: почтовый аккаунт, смс-сервис, авторегистрация, форма, экшн, профиль, алгоритм, интернет-робот, значение, переменная, генерация, бот-программа, нажатие кнопки, логин, пароль, работа, компонент, поле, активационная ссылка, регулярное выражение, вычитать.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|