August 7, 2023

Разрабатываем свой первый чекер на BAS

BAS - универсальная программа, с её помощью мы можем автоматизировать абсолютно любые действия в браузере.

Для начала нам требуется установить сам BAS, для этого переходим по ссылке:

И устанавливаем бесплатную версию (кнопка находится в конце страницы).

Остается лишь запустить exe файл и мы попадаем на главную страницу BAS.

Теперь нам нужно создать новый проект, создавать его нужно чтобы не потерять нашу разработку.

Начало

Создаем проект:

На главной странице кликаем по кнопке "Новый":

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

Для примера возьмем любой сайт, где можно авторизоваться по log:pass + разберем обход простейшей капчи.

Первым на глаза попался https://starpets.gg

Сделали все необходимое, теперь переходим непосредственно к разработке.

Заходим в BAS. Начнем с создания ресурсов. Ресурс - способ ввода информации в нашу программу. Через него мы можем подгрузить аккаунты на проверку/токены сервисов по решению капчи/скорость проверки аккаунтов и т.д.

Жмем "Создать новый ресурс":

Первое, что мы будем загружать в нашу программу - это сами аккаунты. Поэтому задаем имя ресурсу "База" (указываем только имя и жмем Вперед).

Мы будем загружать наши аккаунты из тхт, поэтому выбираем "Из файла" и жмем "Вперед".

Выбираем чтение и удаление строк.

"Использовать каждую строку один раз". Жмем "Вперед" и "Finish".

Далее нам нужно создать ресурс для записи рабочих аккаунтов, для указания скорости чека и ресурс для подгрузки прокси. Создаем новый ресурс, задаем имя - Гуды.

Тип ресурса - из файла.

Ресурс будем использовать только для записи данных.

Данные будем записывать только один раз.

Теперь создаем ресурс Потоки (1 Поток = 1 браузер, количество потоков = количество браузеров которые мы будем запускать одновременно).

Тип ресурса - число.

По умолчанию и минимальное значение выставляем 1, максимум 100.

Подгрузка прокси . Теперь переходим к самому интересному, будем обучать наш скрипт проверять валид ли аккаунт и парсить весь инвентарь + баланс.

Заходим на главную страницу в BAS и выбираем "Запись". Игнорируем табличку ниже, никакие поля не заполняем.

Просто жмем "ОК" в правом нижнем углу.

Для начала настроим скорость чека, в левом верхнем углу жмем на "Количество потоков".

Жмем прямо на циферку 1.

По умолчанию стоит 1 поток, мы стираем эту единицу и жмем F7 (чтобы сработало вам нужно нажать на поле ввода).

Выбираем тут потоки.

Теперь скрипт автоматически заместо единички будет подставлять наше значение, которое мы будем вводить при запуске чекера. Жмем "ОК".

Возвращаемся на главную страницу и меняем тип запуска. Нам нужно выставить значение "Повторять".

Жмем "Ok" и наконец приступаем к разработке!

Делаем загрузку проксей в браузер + проверка валидности прокси

Выбираем браузер:

Выбираем Прокси:

Выбираем поле для ввода. Жмем F7 и выбираем наш ресурс:

Теперь меняем под себя тип прокси, по умолчанию стоит http. Жмем "Ок".

В логике нашего скрипта появилось первое действие. Наводим наш курсор прямо на "прокси".

Жмем на знак предупреждения. Мы получили отработку ошибок. Если прокся валидная - мы перейдем к проверке аккаунта, если прокся невалидная - мы будем подбирать следующую по списку, пока не найдем валидную. для этого жмем на полоску в самом начале нашего скрипта.

После нажатия она загориться красным, это означает что мы будем добавлять действие прямо в это место. В BAS'e есть возможность поиска действий, воспользуемся этим: ищем слово "Метку". Жмем установить метку. Даем ей имя "Проверка прокси" и жмем ОК.

В нашей логике появилось новое действие - метка. Если сравнить метку с видеоиграми, то метка это что-то вроде чекпоинта. В случае если что-то пошло не так - мы возращаемся к месту где установлена метка.

Теперь добавим тот самый переход к метке, жмем на полоску под красным действием "Лог".

И в поисковике ищем "Перейти к метке". Выбираем нашу метку "Проверка прокси".

Остается лишь удалять проксю из списка, если она не валидная, для этого жмем на ту же полоску под красным логом.

В поисковике ищем "Удалить текущий элемент". Выбираем наш ресурс и жмем ОК.

Переходим к авторизации: достаем логин и пароль из нашего ресурса и вводим их на сайте.

Авторизация на сайте

Жмем на самую нижнию полоску в нашем скрипте:

В поисковик вбиваем "Загрузить". Указываем URL сайта: starpets.gg и жмем ОК.

У нас появилась эмуляция нашего браузера. Теперь нам нужно чтобы наш скрипт нажал на "PROFILE". Для этого жмем F1 и нажимаем ПКМ по кнопке PROFILE. Выбираем действие "Кликнуть по элементу".

Жмем Ок. Мы попали на страницу регистрации, таким же способом переходим к авторизации. ПКМ выбираем PROFILE.

Мы дошли до нужной страницы.

Теперь достанем наши log:pass, для этого вбиваем в поисковик "Парсить CSV". Выбираем первое действие.

В поле строка указываем наш ресурс. Все как делали до этого - кликаем по полю для ввода, жмем F7, выбираем ресурс "База".

Далее указываем наши разделители, в моем случае это ":".

Возвращаемся к браузеру, теперь нам нужно ввести наш логин и пароль. Кликаем по окошку для ввода логина и жмем "Ввод текста".

Жмем "Текст для ввода" и клацаем F8. Выбираем USERNAME. Задержку выставляем 0 и жмем ОК.

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

Для этого вбиваем в поисковик "Спать". Спать будем 333 миллисекунды. Жмем ОК.

С вводом пароля делаем все также, ниже прикреплю скрин как это выглядит у меня

Так как мы в режиме разработчика, то нам нужно зайти на любой рабочий аккаунт. Для этого берем рабочий log:pass и жмем F2 в нашем браузере (эта функция позволит нам вводить данные в реальном времени).

Снова жмем F1 и учим наш скрипт кликать SING IN.

Жмем ОК. В браузере нам выдало cloudflare капчу, решить её можно одним кликом. Наводим на окошко для клика и жмем "Кликнуть по элементу".

В идеале сделать задержку перед решением капчи + сделать проверку есть ли капча на экране, но капча вылазит в 100% случаев, поэтому проверки не обязательны.

Тут мы видим что в элементе какие-то рандомные символы. Можем предположить что в каждом новом потоке (браузере) будут другие символы, а значит наш браузер не сможет найти капчу. Поэтому кликаем на это поле с текстом и ставим 2-ой элемент.

Выбираем его и жмем ОК. Как мы видим в браузере решилась капча и мы попали на сайт.

Теперь сделаем проверку валидности аккаунта по URL, для этого находим любую страницу, которая доступна только авторизованным пользователям. В нашем случае это Inventory: https://starpets.gg/inventory.

Получаем ссылку, по которой нам нужно перейти чтобы попасть в инвентарь и загружаем её в браузере через действие "Загрузить". Указываем полученную ссылку.

Попадаем на страницу с инвентарем. Если перейти по этой ссылку с не авторизованного (в нашем случае с невалидного) аккаунта, то нас перебросит совсем по другой ссылке.

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

Для этого ищем в браузере действие "Текущий URL". Оставляем все как есть и жмем OK. Теперь нам нужно проверить, правильный у нас URL или нет, для этого ищем действие в браузере: if. Кликаем по пустому полю и жмем F8.

Выбираем CURRENT_URL

Дописываем "==" ставим две ковычки "" и в них пихаем ссылку.

[[CURRENT_URL]] == "https://starpets.gg/inventory"

Ставим галочку "Добавить else блок" и жмем ОК.

Если ссылка равна нашей, то выполняем действия из спойлера ниже, если не равна (else) то помечаем аккаунт как нерабочий, для этого жмем на полоску под else.

Ищем действие FAIL. Сообщение об ошибке - указываем логин и пароль от аккаунта и оповещаем об его состоянии.

Указываем наш ресурс БАЗА и пишем что аккаунт невалид.

Получаем такую логику.

Проверка баланса + парс вещей с инвентаря

Жмем на полоску под IF. Проверить баланс очень просто, загружаем любую страницу где его видно, делаем ПКМ по значению.

"Получить текст". Рекомендуется выбрать второй элемент.

Где SAVED_TEXT - там нужно указать как мы будем называть нашу переменную. Пишем BALANCE.

Теперь самое сложное - спарсить все вещи которые есть на аккаунте. Многие кодеры делают это через цикл. мы же поступим умнее и 1-им действием получим все вещи на аккаунте.

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

Для этого в обычном браузере (НЕ В BAS!) добираемся до этой же страницы, открываем код элемента и наводим мышку на название игрушки.

Не забываем включить режим поиска элемента как на скрине выше. Само название не имеет элемента, поэтому вручную изучаем код пока не доберемся до названия. Запоминаем класс и идем в CHATGPT ( chat.openai.com )

Переписываем это значение <div class="pet___info">

<h3>Bat Face Roller Skates</h3>

И просим у ChatGPT написать нам xpath путь чтобы достать значение Bat Face Roller Skates

Готовая фраза:

<div class="pet___info">
<h3>Bat Face Roller Skates</h3>
напиши xpath путь чтобы достать значение Bat Face Roller Skates

Получаем ответ:

//div[@class="pet__info"]/h3/text()

Далее возвращаемся к нашему скрипту. Забиваем в поисковик: Код страницы. Ничего не меняя, жмем ОК. Теперь перейдем к xpath, ищем в поисковике

Текст для применения: [[SAVED_PAGE_HTML]]

xpath запрос - то, что нам выдал джпт: //div[@class="pet__info"]/h3/text()

ЖмемОК. Мы получили данные в виде списка, нам нужно преобразовать его в текст для прочтения. Для этого ищем действе в браузере: объединить в строку.

Переменная содержащая список: XPATH_XML_LIST. И больше ничего не меняем.

Жмем ОК

Вот и все! Остается лишь сделать запись аккаунта в файл и вывести в консоль что аккаунт рабочий

Запись и логгирование

Ищем действие "Запись в файл". Сразу ставим галочки как на скрине

Путь к файлу - наш ресурс "Гуды".

Данные для записи - наш логпасс + данные которые мы получили: {{База}} | Balance: [[BALANCE]] | Pets: [[JOIN_RESULT_STRING]]. Жмем OK.

Ищем действие success и выводим туда тоже самое что и записывали: {{База}} | Balance: [[BALANCE]] | Pets: [[JOIN_RESULT_STRING]].

Жмем ОК и скрипт завершен! Осталось его затестить.

Жмем красную кнопку. Выбираем здесь "запуск" и вводим все нужные ресурсы.