Клиент-серверное решение для автоматизации регистрации доменных имен на сайте хостинг провайдера

Опыт создания клиент-серверного приложения для автоматизации регистрации доменных имен на сайте хостинг провайдера.


Часть первая: структура проекта.


Один из клиентов попросил о помощи в проекте для автоматизации регистрации бесплатных доменных имен на сайте провайдера в автоматическом режиме.


Я ознакомился с сайтом и обнаружил там много JavaScript и было принято решение использовать симуляцию пользовательской активности на сайте с помощью таких инструментов, как Сhromium и Lazarus-IDE на стороне сервера, с установленным там Linux Debian.


Я приступил к тестированию своего решения.


image


И когда все пользовательские действия были уже закодированы и я подошел к одному из ключевых этапов: ввода логина и пароля, то обнаружил, что на странице, также присутствует защита от автоматического ввода "google ReCaptcha", тогда для взаимодействия с данным элементом был выбран вариант интеграции API для стороннего сервиса Anti-Captcha, через php скрипт, то есть наш симулятор, определив, что требуется решить капчу, генерировал скрипт на php и выполнял его, и получив ответ от сервиса решения "Google reCAPTCHA", выполнялся успешный JavaScript Submit на форме с полученным значением "token". Прежде чем написать новый код, я скачал пробную версию программы HTTP-Analyzer и запустил анализатор трафика на моей виртуальной машине Windows XP. Я ознакомился со всеми результатами запросов сайта с капчей и нашел все необходимые данные для моего нового скрипта для получения значения "token", решения капчи. Один из самых важных моментов, это найти правильный URL для решения капчи на сервисе.

image

Я запустил скомпилированное приложение и убедился, что ввод данных и капча проходят ровно и без ошибок.

Оставалось настроить веб-сервер Apache на моем тестовом Debian сервере и сделать простую html форму для передачи запросов в наше приложение на сервере, которое запускается на сервере по запросу через эту html форму. Таким образом, на сервере создан еще один скрипт, работающий в терминале, в вечном цикле и проверяющий поступающие запросы на запуск нашего симулятора пользовательской активности с целью регистрации на целевом сайте, как только со стороны клиента через форму на сайте поступал запрос (через файлы с данными для регистрации, там email и пароль). Наш скрипт проверяет, если текущий email не был использован ранее, то запускает из-под X наше приложение, которое само закрывается после выполнения всех необходимых инструкций и получения ответа об успешном создании аккаунта. Иначе скрипт выводит -1 в терминале через определенный интервал времени (что говорит об ожидании входящих запросов от клиента), как видно в самом начале нашего видео ниже.
Практически все моменты были продуманы, протестированы и реализованы, остался самый последний элемент в нашей схеме.


Необходимо было добавить запуск нашего решения в автозагрузку операционной системы после перезапуска нашей виртуальной машины, с запуском X и терминала с запуском нашего "вечного скрипта", который отслеживает запросы, поступающие из формы на сайте.


На наш Линукс сервер я установил программу TightVNC Server и поставил Ripple PRO на свой планшет для подключения к серверу через VNC и мониторинга работы программного комплекса.
Был установлен Xfce и Mate для работы нашего приложения, собранного на Lazarus-IDE с компонентом fpCEF3 для корректного отображения встроенного браузера Chromium.


Задача: запуск при загрузке виртуальной машины, VNC сервера, со стартом X и графической оболочки типа Xfce, с рабочим терминалом, и в терминале запуск php скрипта (который отслеживает поступающие запросы от http клиента).


Для этого выполнил следующие пункты:


редактируем файл /etc/rc.local


И добавим эти строки после #!/bin/bash :


HOME=/root
export USER HOME
exec /usr/bin/tightvncserver -localhost :1

Всё, теперь VNC-сервер стартует при запуске, а ключ "-localhost" позволит подключаться к нему более безопасным способом через SSH.


Перезагрузим сервер и проверим, как это все работает, теперь подключимся к нашему VNC (я в примере использую приложение Ripple PRO на моем планшете, как в видео) на порту 5901 через SSH туннель.


Заходим в настройки в Xfce и настраиваем автозапуск приложений: добавим следующую команду в автозапуск:


 /usr/bin/xterm -e /usr/bin/php /var/scriptname.php

image


Видео о работе системы можно посмотреть вот тут, на YouTube:



Готово, теперь вся система будет автоматически запускаться при старте нашего сервера.


В следующий раз я могу описать более подробно весь процесс симуляции пользовательского поведения в браузере на текущем примере.

Метки:
автоматизация рутины, программирование для начинающих, recaptcha, lazarus-ide, lazarus, CEF3, php, linux, debian

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