Начало работы

Playwright и профильная идентичность браузера

Интеграция Playwright с согласованными профилями браузера, управляемыми прокси-маршрутами и несколькими контекстами.

Документация

Нужна поддерживаемая продуктовая документация?

У этой статьи есть соответствующая страница в центре документации. Используйте docs для каноничного сценария настройки, актуальных флагов и долгосрочной справки.

Playwright и BotBrowser

Playwright предоставляет автоматизацию браузера, надежные ожидания и понятный API для работы со страницами. BotBrowser добавляет профильную идентичность браузера для авторизованных задач приватности и совместимости. Playwright отвечает за навигацию и взаимодействие, а выбранный профиль управляет идентичностью, которую представляет браузер.

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

Влияние на приватность: почему Playwright + BotBrowser

Стандартная автоматизация может раскрывать характеристики хоста, которые выходят за предусмотренную границу приватности. Браузер с профилем позволяет управлять этим раскрытием в авторизованном развертывании и сохранять связанные характеристики согласованными в течение сессии.

Playwright управляет навигацией, проверками приложения и логикой взаимодействия. BotBrowser поддерживает идентичность выбранного семейства браузера. Такое разделение оставляет настройки приватности вне сценариев страницы и связывает проверенное назначение профиля с каждым процессом или поддерживаемым контекстным процессом.

Выбор способа интеграции

Почему playwright-core, а не playwright

Стандартный npm-пакет playwright включает собственный бинарный файл Chromium. При установке playwright он автоматически скачивает и управляет бинарными файлами браузеров. Это удобно для общего использования, но конфликтует с BotBrowser, который предоставляет свой модифицированный бинарный файл Chromium.

Пакет playwright-core предоставляет тот же API без встроенных браузеров. Он требует указания executablePath при запуске, что именно то, что нужно для указания Playwright на бинарный файл BotBrowser.

# Устанавливайте playwright-core, а не playwright
npm install playwright-core

Сохраняйте небольшую конфигурацию запуска

Укажите playwright-core исполняемый файл BotBrowser и назначьте одобренный профиль до открытия первой страницы. Версия, профиль и режим браузера должны быть явно видны в конфигурации развертывания. Небольшую конфигурацию проще проверить, воспроизвести и вернуть к прежнему состоянию.

Добавляйте параметры только при наличии документированного требования приложения. Храните секреты в системе развертывания и записывайте версии BotBrowser и Playwright вместе с результатом задания.

Контексты браузера в Playwright

Контекст Playwright задает границу сессии для cookies, хранилища, разрешений и кеша. Используйте его для разделения авторизованных тестовых учетных записей и состояний приложения. Назначьте владельца каждому контексту и закрывайте его после теста.

Назначение профиля зависит от выбранного поддерживаемого сценария BotBrowser. Выполните его до открытия первой страницы контекста и сохраняйте неизменным на протяжении сессии.

Распространенные подходы и ограничения

Встроенный браузер

Встроенный браузер Playwright подходит для обычной автоматизации, но не загружает пакет профиля BotBrowser. Используйте playwright-core, чтобы подключить библиотеку к бинарному файлу BotBrowser, выбранному для развертывания.

Изменения на странице

Сценарий страницы может менять отдельные значения после навигации, но не создает согласованную идентичность между запуском, рабочими процессами, графикой, мультимедиа и сетью. Храните настройки идентичности в профиле браузера.

Собственные сборки

Поддержка собственной сборки Chromium требует отслеживания выпусков, упаковки и распространения по платформам. BotBrowser предоставляет версионированные бинарные файлы и подходящие профили, чтобы приложение могло сосредоточиться на процессе Playwright.

Подход BotBrowser

BotBrowser подключается через стандартный параметр Playwright executablePath. Для запуска нужны playwright-core, бинарный файл BotBrowser и подходящий пакет профиля. Страницы, контексты, навигация, снимки и трассировка используют обычные API Playwright.

Загрузите профиль при запуске до первой страницы. Для Per-Context Fingerprint примените профиль контекста до его первой страницы или рабочего процесса. Поддерживаемые процессы Context и Live требуют ENT Tier3.

Настройка и использование

Необходимые условия

  • Бинарный файл BotBrowser (скачать с GitHub)
  • Файл профиля отпечатков (формат .enc)
  • Node.js 18+
  • npm install playwright-core

Убедитесь, что бинарный файл BotBrowser имеет разрешения на выполнение:

chmod +x path/to/botbrowser/chrome

Базовый запуск

const { chromium } = require('playwright-core');

(async () => {
  const browser = await chromium.launch({
    executablePath: 'path/to/botbrowser/chrome',
    args: [
      '--bot-profile=path/to/profile.enc',
    ],
    headless: true,
  });

  const context = await browser.newContext();
  const page = await context.newPage();
  await page.goto('https://example.com');

  // Ваша логика автоматизации здесь
  const title = await page.title();
  console.log('Page title:', title);

  await browser.close();
})();

Headless-запуск и проверка профиля

BotBrowser 150.0.7871.46 сообщает в терминале об отсутствующем, недействительном, просроченном или несовместимом профиле во время запуска без интерфейса. Загружайте подходящий пакет профиля до навигации и считайте ошибку проверки неудачным запуском рабочего процесса.

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

Профиль + прокси + локаль

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

Проверка изоляции сессий

const browser = await chromium.launch({
  executablePath: 'path/to/botbrowser/chrome',
  args: [
    '--bot-profile=path/to/profile.enc',
  ],
  headless: true,
});

const context1 = await browser.newContext();
const context2 = await browser.newContext();

const page1 = await context1.newPage();
const page2 = await context2.newPage();

await page1.goto('https://staging.example.test/account-a');
await page2.goto('https://staging.example.test/account-b');

// Выполните обычные проверки для каждой разрешенной тестовой записи.
await context1.close();
await context2.close();

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

Перехват сети

const context = await browser.newContext();
const page = await context.newPage();

// Перехватите запросы, предусмотренные тестом приложения.
await page.route('**/*.png', route => route.abort());
await page.route('**/api/**', route => {
  console.log('API request:', route.request().url());
  route.continue();
});

await page.goto('https://example.com');

Управление областью просмотра

// Вариант 1: Позвольте профилю контролировать viewport (рекомендуется)
const browser = await chromium.launch({
  executablePath: 'path/to/botbrowser/chrome',
  args: [
    '--bot-profile=path/to/profile.enc',
  ],
  headless: true,
});
const context = await browser.newContext(); // Без переопределения viewport

// Вариант 2: Явный viewport (может конфликтовать с мобильными профилями)
const context2 = await browser.newContext({
  viewport: { width: 1920, height: 1080 },
});

Мобильные профили должны сохранять область просмотра из профиля. BotBrowser 150.0.7871.46 поддерживает согласованность видимой области, когда экранная клавиатура уменьшает доступное пространство. Не переопределяйте область просмотра через Playwright, если тесту не нужны другие размеры.

Скриншоты и PDF

const page = await context.newPage();
await page.goto('https://example.com');

// Создайте артефакт, предусмотренный авторизованным планом проверки.
await page.screenshot({ path: 'screenshot.png', fullPage: true });

// Генерация PDF
await page.pdf({ path: 'page.pdf', format: 'A4' });
Путь автоматизации Сценарий передает задачи через Playwright, который управляет BotBrowser с идентичностью из профиля. Путь автоматизации Сценарий Логика задач Playwright Управление браузером BotBrowser Идентичность профиля

Проверка

Начните с одной авторизованной сессии в предпроизводственной среде. Убедитесь, что браузер запускается, первая навигация завершается, снимок выполняется, а браузер закрывается без ошибки профиля или процесса. Повторите запуск с тем же профилем и сетевым маршрутом для сопоставимой базы.

Для пакетной автоматизации сохраняйте ошибки запуска, статус выхода браузера и stderr каждого рабочего процесса. Во время проверки изменения сохраняйте одинаковые версию бинарного файла, пакет профиля, политику прокси и параметры области просмотра.

Явная пара версий

Записывайте вместе выпуск BotBrowser и версию пакета Playwright. Закрепляйте обе версии в файле зависимостей или манифесте развертывания и обновляйте их через обычную проверку производственных зависимостей. Стабильность одной пары не доказывает такое же поведение после изменения браузера или библиотеки автоматизации.

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

Рассматривайте браузер, пакет автоматизации, профиль и образ операционной системы как одну отслеживаемую единицу. В контейнерной среде записывайте также ревизию образа. Это позволяет воспроизвести результат без сбора посторонних данных страницы.

Проверка пары версий перед выпуском

Подготовьте новую пару в том же классе хостов, который используется в развертывании. Восстановите файл блокировки зависимостей, установите выбранный выпуск BotBrowser и используйте пакет профиля, утвержденный для этого выпуска. До начала сессии сверьте путь к исполняемому файлу, режим запуска, сетевую политику и конфигурацию приложения с записью о выпуске. Результат на компьютере разработчика помогает на этапе подготовки, но не заменяет проверку в целевой операционной среде.

Запустите пару на стабильном наборе страниц, принадлежащих команде. Не меняйте тестовую учетную запись, данные приложения, маршрут и ожидаемые проверки. Сравните наблюдаемые результаты: завершение навигации, действия в формах, создание нужных документов и штатное закрытие. Если ожидаемый результат изменился, сохраните предыдущую пару до завершения разбора. Не обновляйте одновременно браузер, пакет Playwright, пакет профиля и код приложения, иначе материалы проверки не укажут, какой компонент требует внимания.

Проверка качества одной сессии

Начните с одной сессии и одной утвержденной учетной записи. Рассматривайте запуск, открытие первой нужной страницы, действие приложения, очистку и выход браузера как единый жизненный цикл. Перед закрытием контекста убедитесь, что тест создал только ожидаемые приложением cookies, данные хранилища, разрешения и файлы. Затем откройте новую сессию и проверьте отсутствие состояния предыдущей учетной записи, если сохранение этого состояния не является явным требованием.

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

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

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

Материалы для восстановления

Для каждой принятой пары храните краткую запись о выпуске. Укажите выпуск браузера, версию пакета Playwright, семейство пакета профиля, образ операционной системы, группу развертывания, дату проверки и итог. Отметьте результаты запуска, репрезентативного сценария приложения, очистки состояния, отмены и завершения. Добавьте ревизию теста приложения, чтобы другой сотрудник мог повторить ту же разрешенную проверку.

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

Назначьте владельца записи о выпуске и владельца решения о возврате. Первый проверяет полноту версий, среды и результата. Второй подтверждает, что восстановленная единица прошла согласованный сценарий и может снова принимать задания. Разделение обязанностей полезно в производственной среде, где изменение может быть подготовлено одной командой, а приложение обслуживается другой.

Храните эти записи вместе с манифестом развертывания и сроком их актуальности. После удаления старого бинарного файла или истечения срока действия пакета профиля соответствующая запись перестает быть готовым планом возврата. До этого момента периодически проверяйте доступность материалов восстановления в рамках обычного процесса управления выпусками.

Владение процессом и контекстом

У каждого процесса браузера должен быть владелец в жизненном цикле приложения. Он создает процесс, назначает утвержденный профиль и маршрут, наблюдает запуск и закрывает процесс после успеха, отмены или ошибки. Общий вспомогательный модуль может выполнять эти действия, но приложение должно дождаться очистки до завершения задачи.

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

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

Согласование профиля и сети

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

При ротации учетных данных сохраняйте профиль и набор проверочных страниц. При изменении профиля сохраняйте утвержденный маршрут. Одновременная смена обоих компонентов затрудняет классификацию результата. После каждого изменения повторяйте обычные проверки приложения.

Не записывайте учетные данные прокси в вывод терминала, трассировки, снимки или метаданные задачи. Передавайте их через систему управления секретами и ограничивайте доступ сервисными учетными записями авторизованного процесса. До включения трассировки проверьте очистку журналов приложения.

Наблюдаемость без сбора страниц

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

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

Обновление и возврат

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

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

Классифицируйте сбой по первой наблюдаемой границе, которая не завершилась: запуск, проверка профиля, первая навигация, проверка приложения или закрытие. Сохраните обычный вывод и статус завершения, затем сравните единицу выпуска с последней успешной задачей. Вернитесь к рабочей базе и меняйте по одному компоненту.

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

Примечания для эксплуатации

  • Используйте playwright-core, а не полный пакет playwright. Полный пакет скачивает собственный Chromium, который вам не нужен.
  • Используйте абсолютные пути для --bot-profile. Относительные пути могут разрешаться некорректно в зависимости от рабочего каталога.
  • Не задавайте область просмотра для контекстов браузера, если вам специально не нужно переопределить размеры из профиля. Пусть профиль управляет размерами отображения.
  • Установите DISPLAY=:10.0 при запуске на Linux-серверах, даже в headless-режиме.
  • Явно назначайте владельца профиля. Используйте только назначение, поддерживаемое выбранным сценарием BotBrowser, и применяйте его до первой страницы.
  • Закрывайте браузеры по завершении. Незакрытая работа продолжает занимать ресурсы хоста.
  • Обрабатывайте ошибки запуска. Проверьте корректность пути к бинарному файлу и наличие разрешений на выполнение при ошибке запуска.

Часто задаваемые вопросы

Можно ли использовать полный пакет Playwright?

Да, но он загружает другой браузер, не нужный для этой настройки. playwright-core отделяет библиотеку автоматизации от бинарного файла BotBrowser.

Нужны ли сценарии страницы для идентичности?

Нет. Загрузите подходящий пакет профиля при запуске браузера или примените поддерживаемый Per-Context профиль до первой цели.

Можно ли использовать codegen или inspector?

Используйте инструменты разработки с тем же исполняемым файлом и настройками профиля, что и проект. Сохраняйте одинаковые версии в средах разработки и эксплуатации.

Как запустить BotBrowser в Ubuntu?

Установите библиотеки для выбранного выпуска и следуйте руководству Headless Server Setup. Выберите графический механизм по руководству Linux GPU Backend.

Можно ли использовать прокси по контексту?

Да. Процессы proxy Context и Live требуют ENT Tier3. Примените прокси и профиль до первой страницы или рабочего процесса.

Сколько рабочих процессов можно запустить?

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

Работают ли трассировка и снимки?

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

Можно ли использовать TypeScript?

Да. playwright-core содержит определения TypeScript.

Дальнейшие действия

Установите playwright-core, укажите в executablePath бинарный файл BotBrowser и назначьте утвержденный профиль при запуске. Взаимодействие со страницами, перехват сети, снимки и проверки используют поддерживаемые процессы Playwright с учетом выбранных версий и среды. До развертывания проверьте точную пару выпусков на целевой нагрузке.

По смежным темам смотрите Начало работы с Puppeteer для эквивалента Puppeteer, Рецепты CLI для дополнительных комбинаций флагов и Управление профилями для организации профилей.

#Playwright#автоматизация#быстрый старт#руководство

Переведите BotBrowser из исследований в продакшн

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