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

в 16:28, , рубрики: Анализ и проектирование систем, ненормальное программирование, Программирование, Серверное администрирование, системное администрирование

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

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

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

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

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

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

Автор: рыцарь со стволом

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js