const browser =
await chromium.launch(); Сессии бесплатны — платите только за трафик
Запуск Playwright в облаке
Запускайте свои скрипты и тесты Playwright в Chromium, который работает в облаке Floppydata. Браузер стартует по одному API-запросу, connectOverCDP() подключается к нему, а остальной код менять не нужно.
- Подключение через connectOverCDP() — без установки браузеров
- Node.js, Python и Playwright Test
- Бесплатно с прокси Floppydata — платите только за трафик
Как запустить Playwright в облаке
Создайте сессию одним API-запросом и передайте ее connectUrl в Playwright. Пример взят из руководства по Cloud Browser в нашей документации.
Три шага
- 1 Создайте Client API key в аккаунте Floppydata.
- 2 Отправьте POST /v2/browser/sessions. В ответе будет connectUrl.
- 3 Передайте его в connectOverCDP() и работайте как обычно. Закрытие браузера останавливает сессию.
import { chromium } from 'playwright';const res = await fetch('https://api.floppydata.net/v2/browser/sessions', { method: 'POST', headers: { 'X-Api-Key': process.env.FLOPPY_API_KEY, 'Content-Type': 'application/json', }, body: JSON.stringify({ proxy: { type: 'residential', location: { countryCode: 'US' } }, }),});const { connectUrl } = await res.json();const browser = await chromium.connectOverCDP(connectUrl);const page = await browser.contexts()[0].newPage();await page.goto('https://example.com/');console.log(await page.title());await browser.close(); // stops the session import os, requestsfrom playwright.sync_api import sync_playwrightsession = requests.post( 'https://api.floppydata.net/v2/browser/sessions', headers={'X-Api-Key': os.environ['FLOPPY_API_KEY']}, json={'proxy': { 'type': 'residential', 'location': {'countryCode': 'US'}, }},).json()with sync_playwright() as p: browser = p.chromium.connect_over_cdp(session['connectUrl']) page = browser.contexts[0].new_page() page.goto('https://example.com/') print(page.title()) browser.close() import { test as base, expect, chromium } from '@playwright/test';const SESSIONS_URL = 'https://api.floppydata.net/v2/browser/sessions';const test = base.extend({ page: async ({}, use) => { const res = await fetch(SESSIONS_URL, { method: 'POST', headers: { 'X-Api-Key': process.env.FLOPPY_API_KEY, 'Content-Type': 'application/json', }, body: '{}', }); const { connectUrl } = await res.json(); const browser = await chromium.connectOverCDP(connectUrl); await use(await browser.contexts()[0].newPage()); await browser.close(); },});test('home page loads', async ({ page }) => { await page.goto('https://example.com/'); await expect(page.locator('h1')).toBeVisible();}); Создать сессию, подключиться, открыть страницу.
От локального Playwright к облачному Playwright
Локально каждый воркер Playwright запускает свой Chromium. Когда набор тестов или парсер растет, эти браузеры конкурируют за CPU и память, а каждому раннеру в CI сначала нужно их скачать.
В Floppydata Cloud Browser Chromium работает удаленно. Ваш код подключается по протоколу Chrome DevTools, поэтому на вашей стороне достаточно playwright-core, а каждый запуск получает собственную сессию браузера.
const browser =
await chromium.connectOverCDP(connectUrl); Весь код после этой строки остается без изменений. connectUrl вы получаете из запроса на создание сессии выше.
Playwright со встроенными прокси
Каждая сессия работает через прокси Floppydata, так что настраивать прокси-сервер в Playwright не нужно. Выберите тип IP, страну и ротацию и передайте получившийся JSON в теле запроса на создание сессии.
Настройте облачную сессию Playwright
{
"proxy": {
"type": "residential",
"location": {
"countryCode": "US"
},
"rotation": {
"mode": "sticky"
}
}
} В том же запросе можно указать город, штат или ASN. Резидентские IP есть в 148 странах, мобильные — в 150, серверные — в 71.
Локальный или облачный Playwright
| Локальный Playwright | Playwright в Cloud Browser | |
|---|---|---|
| Chromium | Устанавливается и обновляется на каждой машине | Работает в облаке Floppydata |
| Браузеры в CI | Скачиваются на каждом раннере | Не нужны: достаточно playwright-core |
| Прокси | Настраиваете сами для каждого запуска | Встроены: резидентские, мобильные или серверные |
| Параллельные браузеры | Ограничены CPU и RAM | До 100 сессий на аккаунт |
| Стоимость браузера | Ресурсы ваших серверов | Бесплатно: оплачивается только трафик прокси |
| Подключение | Протокол Playwright, любой движок браузера | CDP через connectOverCDP(), только Chromium |
connectOverCDP() поддерживает все, что обычно нужно скриптам (навигацию, локаторы, клики, формы, ожидания и JavaScript), но это не полный протокол Playwright. Нестандартные сценарии проверьте на своих скриптах.
Масштабирование и настройка сессий
Все настройки — необязательные поля запроса на создание сессии. Передавайте только нужные; без них сессия запустится с резидентским прокси, согласованным отпечатком и таймаутом 10 минут.
-
Параллельные запуски: до 100 сессий одновременно на одном аккаунте, больше — по запросу
-
Отпечаток: ОС, локаль, часовой пояс, железо, а также маскировка canvas, WebGL и WebRTC
-
Время работы: от 1 минуты до 6 часов, с переподключением при включенном keepAlive
-
Сохраненное состояние: один и тот же профиль браузера с cookies в разных сессиях
-
Start URLs: одна или несколько страниц открываются сразу при запуске, каждая в своей вкладке
-
Metadata: добавьте к сессии ID своей задачи, чтобы легко найти ее в логах
Отладка Playwright в живом браузере
Если скрипт уперся в то, чего не ожидал, — баннер cookies или лишний шаг при входе, — откройте живой просмотр сессии в своем браузере и посмотрите, что на самом деле показывает страница.
Playwright и живой просмотр подключаются к сессии по очереди, поэтому скрипт продолжит с того места, где остановился, а не начнет заново. Подробнее о UI mode
- 1 Создайте сессию с keepAlive: true, чтобы отключение ее не останавливало.
- 2 Если скрипт застрял на неожиданном экране, отключите Playwright.
- 3 Запросите ссылку на живой просмотр, откройте ее и вручную пройдите проблемный шаг.
- 4 Запросите данные сессии заново и переподключите Playwright по новому connectUrl.
Бесплатно для пользователей прокси Floppydata
У Cloud Browser нет подписки и платы за время работы или за сессию. Платите вы только за трафик прокси Floppydata, через которые идут сессии: от $1.00 за ГБ, по одной цене для резидентских, мобильных и серверных.
Если вы уже покупаете прокси Floppydata, Cloud Browser доступен без доплат: тот же баланс и тот же API-ключ. На одном аккаунте можно запускать до 100 сессий одновременно, а если нужно больше — напишите в поддержку.
Частые ошибки подключения Playwright к облаку
Что означают ошибки API и подключения и как их исправить.
| Ошибка | Что это значит | Что делать |
|---|---|---|
unauthorized | Подписанный connectUrl истек или недействителен. | Запросите данные сессии заново и подключитесь по новому connectUrl. |
connection_in_use | К сессии уже подключен другой клиент или открыт живой просмотр, а одновременно допускается только одно подключение. | Закройте другое подключение и повторите попытку. |
session_not_active | Сессия остановлена, истекла или завершилась с ошибкой. | Создайте новую сессию; для долгих задач увеличьте runtime.timeoutSeconds. |
| Соединение закрывается | Сообщение оказалось больше примерно 1 MiB — например, полностраничный скриншот или кадр скринкаста. | Снимайте видимую область или отдельный элемент либо задайте clip для нужной области. |
upstream_error | Временный сбой на стороне сервиса браузеров. | Повторите попытку: остановку сессии можно безопасно повторять. |