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

Журналист

Журналист
Статус
offline
Регистрация
28.09.2022
Сообщения
1,120
Репутация
996
BAS - универсальная программа, с её помощью мы можем автоматизировать абсолютно любые действия в браузере.

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

6d19ccba0a03c6f72b98e5012713cac1dba36fdf4bddd0f98e477d89cd34f1a2.webp


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

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

Начало

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

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

8d68815e0fb426d67f59ae43120723c82bdfe19f63d2a66a9e1518720182ca40.webp


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

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

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

8324b962d8c35f81ed3be6dc9394edbd0ca806ad6234a54d8520f3d222dc21c6.webp


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

ea25a9d93393b8d723863a652f91ab46362bae71d2b1f4dc66a8b4efea7d3cad.webp


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

f38a404e19ea8c19a9861490fcee3cc282b3f4abc1e86ab0a7e551383caf57f4.webp


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

90597cebfe89db8f1b857fa7ac8e3ebed6ab8b27104a6f071e06ea981907a981.webp


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

5aec020ca3dabf38fe4066e2a05ecde483f44d66280975301f38e1e1595e0779.webp


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

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

0d4eb819aee65a87b7409abb7d12fdb50610e1d46963fc1b6415c2880dac2600.webp


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

6d3df50804ae090879432ea2d76b56d433da04aaf651b3ccf441753e5be1aa8c.webp


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

b58de8b0558f84dd50b76ba1b2682635c9d5e497425e00d0727667f7276c0ac2.webp


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

0f4affdd93ac0ebebe0452428567ffc157802b33a90419f78e29ef2a3e4d198a.webp


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

10bce023b6532a91a2d63441adfe32b9f071491c121b5a8c07612350c377aef3.webp


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

20d518c80896daeb9fdb8b317bf5fbfb86a591dbf2c832370110dd679c4625e4.webp


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

7cf56e921b73005afb00a484e4a97a927de15f186f31e9562a1ada93e08f9525.webp


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

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

29b34aff310a3a2a353176be30052c95d95d3099ca2beffa026580ecdc7cd4fb.webp


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

93786fe72274e29dce0022e4ea21f809f90a571d59f085ec65347d8399f09a3e.webp


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

57f9089ec9c0c5a807e010b0eed6eefb71396fae9c7fa3af1c452e9ee7613b0e.webp
57f9089ec9c0c5a807e010b0eed6eefb71396fae9c7fa3af1c452e9ee7613b0e.webp

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

e621e811d9e7d3974c87cdb954288a077adc1cf8b14179a031d122f89a7fe495.webp


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

c6229b6312989f8eb26ded1046e50fbdbf6c1debd9199aadd4acd7b5a979b873.webp


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

ee59bfcd9d670a8041c1f11cda2406a0d319cf415a0a9cfe5382cf9b8cbff7fe.webp


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

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

7c033f1332885995b8534bd6c1475e0f8323b76bea2a680cf27d7e00c98d241d.webp


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

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

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

54324d16a7b7cb7dc2be41fddf5edb356abccea54135b583c3ee94505065650d.webp


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

febafd189475ca35c2f3f7a6271583ee7a65646b8e35a401a12f8121eefb2404.webp


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

5bb748688f6bfabf8344d621c2432b1fd092371af80a8481e898eaf8c329d160.webp


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

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

6aeeed8838c511249641683a2605b51dbb367742b903c9a21334c38cc713a73f.webp


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

58a9ab091141aa90aefb473b9f2e82c1f345c3fc85336960b675c9b2de5622ee.webp


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

a1c39017e696102b51d169976978b192dbba9d7c615d8d36eacc93e32fdb4b6d.webp


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

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

f21892068fd72190f3a1ca7a9ed5b775b01ef28ee183dcfb98dc1cb541835cdf.webp


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

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

415c627081677895d6367564a5c94ec6196a69d1095cf183e7cd2de32bf0600e.webp


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

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

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

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

884ff03237db340e7d5a1d1006d22f438d96b36aaafcd9ad63c60d5af0b593b0.webp


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

4422a59522df8be3646eea147a88cc61db8533bedcb247770b5b32670f55e84a.webp


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

c819881dab7e26e1c12b3bca4767bfa74fb4bb5161d772f2802ec0651382978a.webp


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

52e873eb3833489b1cfdb7f2369d98db28f21f65d8fafaa3eb28e8f34a08f9be.webp


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

71add89318f0b60ba41733f715cca0a7d05fcaa9924829b2e1548f7efc6fec59.webp


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

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

2bd1088f32350909fc8bf6bb8823949ea471d0981ebfa8bb61019ca6492bbcf1.webp


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

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

7a6870cfacf770e64facd549db80dc50ef0fb9891652abdac0fcd4d3ab739e6a.webp


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

1ea5c0e8bcbafe943f13afc6faddc2acf2059e59ce81f659fab8d6ade5e9c5da.webp


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

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

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

64a362235f8fcaa19faf5973bace2f61f1a51feef7c55a26273e0754173bff48.webp


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

96611faa359da0d7633fb9b0424650599042557373f5cb6e7431abe45633f716.webp


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

721433029530ff54b1fa3737728c6ffb8bf058f6356417c916f1057f891ae4df.webp


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

2465c7d59e124dba677479d56ffd2cc7f73097f12f47eb0f3607e1cde1074d11.webp


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

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

09d5e442581517714064affc41d63d7a22e5a63035dc8313b156da78c9500bf1.webp


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

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

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

c744432dafc591989a69f16cbd1933c253d40c375147588812cb674ea54c5b3a.webp


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

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

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

9ae3e333047b1b2269bfc2b1b98fd364151a048813452497d7fe5d6e31c948be.webp


Выбираем CURRENT_URL

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

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

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

4602587ac453644ace3d358f92278498169156be6a055da428f2e425497662e4.webp


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

2f318238c7fd68207630f2b7767000203101b1f3d4fb2c36fd1e23880706b37d.webp


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

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

82602c8f10408466fb1e6fbb8043c4ca17db25bba33ab8ea345e0295b6d3ff6f.webp


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

f86a6fe0a2946a55e2159c8cbe8a33f168d2ea91013439fea59aa5379c99854c.webp


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

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

d00ebdde368926dd06f0e3566d84f0fea8d1a9f65fb2ac56394b698c9a6435ee.webp


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

c811b8c4cbdb5d5cab9bd6f700fbb2c009fd5d6d3ac00980c9b8a695e09d8e7c.webp


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

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

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

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

d9e76bbe5a8e6b49e055966be61f06af210dc40b9023bcb485343b41e2140728.webp


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

4dd2576bf1fe77581142f520f5ea9c433aa0627b703e0f2413aa60341b0350d5.webp


Переписываем это значение <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, ищем в поисковике

a2ef3ec7ce9404aefadf9046a21579b3360519e496e0a88fe2ddee435502d528.webp


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

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

03b1264ba31db63d1a88c898f7b9c2e46ad81c5894a401dd366c2aaa337b9496.webp


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

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

c2b88053ef65c75b189e2b553c9e101d38d9b5bcdb252788491806e4540a9e24.webp


Жмем ОК

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

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

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

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

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

d852c53f7ee433b1b5d92c377b23a3e88c3f02358954807b487282d38688e9d6.webp


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

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

852e0d5e1d84d2d086e9b9d83eb1a64bf4b2025c9b8d16abad326bae712d0452.webp


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