Начало работы с BotBrowser и Puppeteer
Полное руководство по интеграции BotBrowser с Puppeteer: профили отпечатков, поддержка прокси и развёртывание в продакшн.
Введение
Puppeteer — это библиотека Node.js от Google для управления Chrome через Chrome DevTools Protocol (CDP). Она предоставляет API высокого уровня для навигации, захвата скриншотов, взаимодействия с формами, перехвата сети и многого другого. BotBrowser заменяет стандартный бинарник Chromium на бинарник, выдающий согласованные отпечатки, управляемые профилями. Puppeteer отвечает за автоматизацию, BotBrowser — за идентичность.
Это руководство охватывает установку, конфигурацию запуска, управление viewport, настройку прокси, доступ через CDP, развёртывание на Linux и распространённые проблемы.
Почему Puppeteer + BotBrowser
Обычный Chromium раскрывает отпечаток хоста. С BotBrowser каждая инстанция Puppeteer может загружать отдельный профиль отпечатка, что даёт уникальную идентичность без изменения автоматизационного кода.
Технические детали
puppeteer-core vs puppeteer
Пакет puppeteer содержит бинарный Chromium. puppeteer-core предоставляет тот же API без бинарников, поэтому при запуске требуется указать executablePath, чтобы направить Puppeteer на бинарник BotBrowser.
# Установите puppeteer-core, а не puppeteer
npm install puppeteer-core
defaultViewport
По умолчанию Puppeteer устанавливает defaultViewport в 800x600, что может переопределять настройки viewport из профиля BotBrowser. Всегда задавайте defaultViewport: null, чтобы профиль контролировал viewport.
Пример запуска
const puppeteer = require('puppeteer-core');
(async () => {
const browser = await puppeteer.launch({
executablePath: '/path/to/botbrowser/chrome',
args: ['--bot-profile=/path/to/profile.enc'],
headless: true,
defaultViewport: null,
});
const page = await browser.newPage();
await page.goto('https://example.com');
console.log('Page title:', await page.title());
await browser.close();
})();
Лучшие практики
- Используйте
puppeteer-core. - Да, используйте абсолютные пути для
--bot-profile. - Обязательно
defaultViewport: null. - На серверах Linux установите
DISPLAY=:10.0, при необходимости.
Резюме
Интеграция BotBrowser с Puppeteer сводится к использованию puppeteer-core, указанию executablePath на бинарник BotBrowser и передаче --bot-profile, при этом defaultViewport должен быть null.
title: "Начало работы с BotBrowser и Puppeteer" description: "Руководство по быстрому старту с BotBrowser и Puppeteer для автоматизации браузера с согласованными профилями фингерпринтов." date: "2025-03-04" locale: ru category: getting-started tags: ["puppeteer", "automation", "getting-started", "tutorial"] published: true
Обзор
Puppeteer - библиотека Google для Node.js по управлению Chrome. BotBrowser заменяет стандартный бинарный файл Chromium на тот, который производит согласованный вывод фингерпринтов, контролируемый файлами профилей. Puppeteer управляет автоматизацией, BotBrowser управляет идентификацией.
Предварительные требования
- Бинарный файл BotBrowser (скачать с GitHub)
- Файл профиля фингерпринта (формат
.enc) - Node.js 18+
npm install puppeteer-core
Быстрый старт
const puppeteer = require('puppeteer-core');
(async () => {
const browser = await puppeteer.launch({
executablePath: '/path/to/botbrowser/chrome',
args: [
'--bot-profile=/path/to/profile.enc',
],
headless: true,
defaultViewport: null,
});
const page = await browser.newPage();
await page.goto('https://example.com');
// Ваша логика автоматизации
await browser.close();
})();
Ключевая конфигурация
Используйте puppeteer-core, а не полный пакет puppeteer, который скачивает собственный Chromium.
Установите defaultViewport: null, чтобы Puppeteer не переопределял размеры viewport из вашего профиля фингерпринта.
Профиль + прокси
const browser = await puppeteer.launch({
executablePath: '/path/to/botbrowser/chrome',
args: [
'--bot-profile=/path/to/profile.enc',
'--proxy-server=socks5://user:pass@proxy:1080',
'--bot-config-timezone=Europe/London',
'--bot-config-locale=en-GB',
'--bot-config-languages=en-GB,en',
],
headless: true,
defaultViewport: null,
});
Headless на Ubuntu
Установите переменную окружения DISPLAY=:10.0 даже для headless-режима при работе на серверах Linux.
Распространенные проблемы
Браузер не запускается: проверьте права на выполнение бинарного файла и путь к нему.
Несоответствие viewport: всегда устанавливайте defaultViewport: null.
Проблемы с путем профиля: используйте абсолютные пути для --bot-profile.
Следующие шаги
- CLI-рецепты для дополнительных комбинаций флагов
- Настройка headless-сервера для продакшен-развертывания
- Управление профилями для организации профилей