Компиляция BAS в .exe: сборка бота, защита скрипта и передача клиенту
Как превратить проект Browser Automation Studio в самостоятельное приложение: что попадает в сборку, как защитить исходник от копирования, что настроить перед передачей клиенту и почему собранный бот ведёт себя не так, как в студии.
Все статьи гида Browser Automation Studio · 48
Пока бот живёт в студии, он ваш инструмент. Компиляция превращает его в продукт: самостоятельное приложение, которое можно отдать клиенту, продать или запустить на чужой машине, не показывая, как оно устроено внутри.
Что делает компиляция
На выходе получается приложение, которое запускается без установленного BAS и без доступа к дереву действий. Пользователь видит окно с настройками - количество потоков, поля для ресурсов, список прокси - и кнопку запуска. Логику он не видит и изменить её не может.
Важная деталь: движок браузера не зашивается в сам файл целиком. При первом запуске приложение докачивает нужную версию окружения, поэтому первый старт у клиента дольше обычного и требует интернета. Если бот поедет в изолированный контур, это надо учитывать заранее.
Интерфейс - это часть работы
Главная ошибка при первой сборке - считать, что достаточно скомпилировать. Ваше дерево действий превращается в программу, которой пользуется человек, ничего не знающий о BAS. Всё, что вы захардкодили в переменных, для него недоступно.
Поэтому до компиляции решите, что клиент должен менять, и вынесите это в настройки: логины, ссылки, лимиты, задержки, пути к файлам. Всё остальное оставьте внутри. Хороший ориентир - если для смены значения пришлось бы пересобирать бота, значение должно быть в интерфейсе.
Защита скрипта: что она даёт и чего не даёт
Скомпилированная сборка не показывает логику - это отсекает основной сценарий утечки, когда заказчик открывает проект и отдаёт его другому исполнителю. Для большинства коммерческих задач этого достаточно.
Но защиту стоит понимать трезво: она останавливает пользователя и конкурента, а не подготовленного реверс-инженера. Практический вывод один и простой: не храните в скрипте то, что нельзя отдать. Ключи от ваших API, пароли от вашей инфраструктуры, приватные токены - всё это в боте на чужой машине рано или поздно окажется в чужих руках. Если боту нужен доступ к вашему сервису, давайте ему отдельный ключ с ограниченными правами, который вы сможете отозвать.
Перед передачей клиенту
Пройдите короткий чек-лист - он экономит недели поддержки:
- Пути только относительные. Абсолютный путь вашей машины у клиента не существует.
- Ресурсы приложены. Всё, что бот читает, должно ехать вместе с ним или создаваться при первом запуске.
- Ошибки объяснимы. Клиент не станет читать стектрейс - сообщение должно говорить, что сделать: «прокси не отвечает», «файл со списком пуст».
- Логирование включено. Когда у клиента что-то сломается, лог - единственное, что вы получите. Пишите в файл, а не только на экран.
- Ограничения проверены на чужой машине. У клиента другой процессор и другая память: число потоков, комфортное на вашем ПК, у него может не поехать.
Почему собранный бот ведёт себя иначе
Расхождение между студией и сборкой почти всегда сводится к трём причинам.
Пути и файлы. В студии проект лежит в известной папке; после сборки структура другая. Всё, что читалось по абсолютному пути, ломается.
Скорость. В студии вы наблюдаете за ботом и невольно даёте ему время. В сборке на большем числе потоков страницы грузятся дольше, и ожидания, которых «хватало», перестают хватать. Ожидание события всегда надёжнее фиксированной паузы - на чужой машине это становится критично.
Окружение. Другая ОС, другая версия, другой антивирус. Автоматизирующее приложение с докачкой компонентов - типичный кандидат на ложное срабатывание, и клиента стоит предупредить заранее, а не после первого звонка.
Версии и обновления
Собранный бот - это снимок логики на момент сборки. Сайт поменяет вёрстку - селекторы отвалятся у всех, кому вы уже отдали сборку.
Поэтому договаривайтесь об обновлениях на входе, а не после поломки: как вы доставляете новую версию, кто платит за адаптацию под изменения сайта и сколько живёт поддержка. Бот, отданный «навсегда» за фиксированную сумму, превращается в бесконечное обязательство ровно в тот день, когда сайт обновит фронтенд.
Вопросы и ответы
Можно ли посмотреть исходник скомпилированного BAS-бота?
Готовая сборка не показывает дерево действий: клиент запускает приложение и видит только интерфейс с настройками, а не редактор. Это защита от обычного копирования, а не криптостойкая - считайте, что вы закрываете скрипт от пользователя и конкурента, а не от целенаправленного реверса.
Почему бот работает в студии, но падает после компиляции?
Почти всегда дело в путях и ресурсах. В студии проект лежит в своей папке, и относительные пути разрешаются от неё; у клиента структура другая. Проверьте, что все файлы подхватываются относительными путями и лежат внутри проекта, а не по абсолютному пути вашей машины.
Ещё по теме
- Browser Automation Studio: полный практический гидГид
- Создаём первого бота в Browser Automation StudioПошаговый разбор создания первого рабочего бота в BAS - от пустого проекта до процесса, который ходит по страницам, извлекает данные и работает в несколько потоков.
- Настройка прокси в Browser Automation StudioКак правильно настроить прокси в BAS - типы прокси, привязка по потокам, ротация и проверки, которые не дают мультиаккаунт-ботам попасть под бан.
- Поиск элементов в BAS: селекторы, которые не ломаютсяКак работает поиск элементов в Browser Automation Studio - CSS против XPath, почему записанные селекторы ломаются и как писать селекторы, переживающие изменения страницы.
Видео по теме
Сделаю под ключ
Не хотите собирать сами? Соберу бота на BAS под вашу задачу
Многопоточность, прокси, антидетект-профили и запуск по расписанию. Весь проект и доступы остаются у вас.
от 300 $ · 3-7 дней
«Павел крутой специалист выполнил парсер за несколько часов. Буду заказывать у Павла еще и еще! Спасибо ему огромное за его профессионализм и оперативность!»