Pull to refresh

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

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


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


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


Я ознакомился с сайтом и обнаружил там много 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:



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


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

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.
Change theme settings