Автоматизация без фреймворков с Bot Script
Используйте флаг --bot-script в BotBrowser для легковесной автоматизации браузера через Chrome DevTools Protocol без внешних зависимостей.
Что такое Bot Script?
BotBrowser включает встроенный режим автоматизации через --bot-script. Он запускает JavaScript-файл в привилегированном контексте браузера с полным доступом к API chrome.debugger. Не нужен Playwright, Puppeteer или Node.js.
Как это работает
При передаче --bot-script=your-script.js BotBrowser загружает ваш файл в привилегированный контекст при запуске. Вы получаете:
- Полный доступ к API
chrome.debuggerдля отправки CDP-команд напрямую. - Отсутствие артефактов фреймворка в контексте страницы.
- Раннее выполнение до завершения первой навигации.
- Стандартные API браузера:
console,setTimeout,fetchи другие.
Быстрый старт
Создайте my-script.js:
chrome.debugger.getTargets(function (targets) {
const page = targets.find((t) => t.type === "page");
if (!page) return;
chrome.debugger.attach({ targetId: page.id }, "1.3", function () {
if (chrome.runtime.lastError) {
console.log("Attach failed:", chrome.runtime.lastError.message);
return;
}
chrome.debugger.sendCommand(
{ targetId: page.id },
"Page.navigate",
{ url: "https://example.com" },
function () {
console.log("Navigation started.");
}
);
});
});
Запустите BotBrowser с профилем и скриптом:
chromium-browser \
--bot-profile="/path/to/profile.enc" \
--bot-script="/path/to/my-script.js"
Когда использовать Bot Script, а когда Playwright/Puppeteer
| Bot Script | Playwright / Puppeteer | |
|---|---|---|
| Зависимости | Нет | Node.js + npm-пакеты |
| Стиль API | Колбэк-ориентированный chrome.debugger | Promise-ориентированный, высокоуровневые селекторы |
| Время настройки | Мгновенно | Требует установки и конфигурации |
| Лучше для | Легковесных одностраничных задач | Сложных многошаговых сценариев |
Устранение неполадок
"chrome.debugger API not available": убедитесь, что вы используете флаг --bot-script.
Скрипт не запускается: используйте абсолютный путь для --bot-script.
Attach завершается с ошибкой: другая сессия отладчика, возможно, уже подключена. Сначала вызовите chrome.debugger.detach().