Сесії безкоштовні — платіть лише за трафік
Хмарний браузер для вебскрапінгу
Сесія хмарного браузера завантажує сторінку так, як для справжнього відвідувача, разом зі скриптами: на момент, коли ваш код її зчитує, контент уже на місці.
- Сторінки на React, Vue і Angular рендеряться повністю — без порожньої оболонки
- Резидентські, мобільні IP або IP дата-центрів — фіксовані чи ротаційні
- Playwright і Puppeteer — зазвичай змінюється лише один рядок
Вебскрапінг
Ваш код керує
браузером.
Підключайтеся через CDP до нашого Chromium замість отримання HTML. Він завантажує сторінку як справжній відвідувач — з усім JS, нашими проксі та правдоподібним фінгерпринтом — а ви зчитуєте відрендерений DOM.
Навіщо використовувати хмарний браузер замість звичайних HTTP-запитів?
Звичайний HTTP-запит отримує лише той HTML, який надсилає сервер, і нічого більше. Для статичної сторінки цього досить. Але на більшій частині сучасного вебу такий підхід не працює: сайти на React, Vue або Angular не віддають контент у першій відповіді — вони будують його в браузері після виконання JS. Якщо спрямувати на таку сторінку скрапер, що працює лише із запитами, ви отримаєте порожню оболонку, а справжні дані залишаться в бандлі, який ніхто не виконав.
Вебскрапінг через сесії хмарного браузера цієї проблеми не має. Сторінка завантажується так, як для справжнього відвідувача, разом зі скриптами, і на момент, коли ваш код її зчитує, контент уже на місці. Не потрібно здогадуватися, який endpoint наповнює сторінку, чи розбирати бандл, щоб знайти шаблон запиту — лише готовий результат, який можна забирати.
Обхід блокувань і антибот-захисту на рівні браузера
Колись вистачало надіслати правильні заголовки, щоб отримати сторінку. Тепер ні — сайти оцінюють десятки дрібних сигналів, перш ніж вирішити, чи запит узагалі виглядає справжнім:
-
Порядок заголовків, а не лише їхня наявність
-
Інтервали в часі між діями
-
Чи схожі рухи миші та прокрутка на поведінку людини
-
Особливості фінгерпринта: встановлені шрифти, вивід canvas тощо
Динамічний рендеринг JavaScript і односторінкові застосунки (SPA)
Односторінкові застосунки завантажуються один раз, а потім перебудовуються під час кліків: відкриваються вкладки, застосовуються фільтри, оновлюються результати — і нічого з цього немає в першій відповіді. Хмарний браузер проходить увесь той самий процес, що й відвідувач, а потім зчитує сторінку, коли вона стабілізується. Якщо пропустити цей крок, напрочуд багато скрапінгу тихо ламається на сайтах із важким клієнтським кодом.
Автоматичне розв’язання CAPTCHA та керування фінгерпринтом
Шрифти, вивід canvas, поведінка аудіо, розмір екрана — разом вони утворюють фінгерпринт, який звіряється з тим, як має виглядати справжній браузер. Якщо помилитися, сайти швидко це помічають, іноді вже після одного-двох запитів. Антидетект-хмарний браузер, антидетект-налаштування чи просто непомітний режим — хоч як це називати, завдання те саме: підтримувати переконливий фінгерпринт без ручного втручання. Розв’язання CAPTCHA зазвичай працює в тій самій сесії, тож завдання не простоює в очікуванні ручного розв’язання щоразу, коли вона з’являється.
Інтеграція з ротаційними проксі (резидентськими та дата-центр проксі)
Сесія може працювати через резидентські, мобільні IP або IP дата-центрів — залежно від того, наскільки чутливий цільовий сайт. Ротація може бути фіксованою на всю сесію або змінюватися за таймером — і цей вибір справді має значення. Скрапінг за логіном потребує того самого IP весь час, щоб cookies і стан сесії трималися разом. Скрапінг великих обсягів потребує протилежного: розподілити запити так, щоб жодна адреса не приймала весь удар.
Працює з Playwright і Puppeteer
Щоб усе це запрацювало, не потрібно викидати наявний код скрапінгу. Playwright і Puppeteer підключаються через CDP замість запуску локального Chrome, а все, що під цим — селектори, очікування, вилучення даних — залишається без змін. Краулер дворічної давності, написаний для локального headless Chrome, зазвичай потребує зміни одного рядка, а не переписування.
- Playwright
- Puppeteer
- Python
- Node.js
Швидкий старт: приклад коду для підключення
Щоб запустити сесію, достатньо кількох рядків:
Додайте тип проксі та країну під час відкриття сесії — решта скрипта майже не відрізнятиметься від того, що працював би локально.
const browser = await chromium.connectOverCDP(connectUrl);const page = await browser.newPage();await page.goto('https://example.com');const data = await page.textContent('body'); const browser = await puppeteer.connect({ browserWSEndpoint: connectUrl });const page = await browser.newPage();await page.goto('https://example.com');const data = await page.evaluate(() => document.body.innerText); Порівняння ефективності: скрапінг через запити та через хмарний браузер
Скрапінг через хмарний браузер коштує дорожче за сторінку, ніж простий запит — цього не оминути, адже повноцінна сесія браузера виконує більше роботи. Ось де ці підходи справді розходяться:
| Звичайні HTTP-запити | Скрапінг через Floppydata Cloud Browser | |
|---|---|---|
| Сторінки, що рендеряться через JavaScript | Повертається порожнім | Рендериться повністю, як для справжнього відвідувача |
| Вартість сторінки | Нижча | Вища, але блокування непотрібних ресурсів її знижує |
| Контент за логіном | Немає сесії, яку можна зберегти | Cookies і сесія зберігаються між сторінками |
| Антибот-фінгерпринт | Відсутній, легко виявити | Обробляється автоматично |
| Трафік | Завантажує все | Може пропускати зображення, шрифти та CSS |
Для статичного контенту без JavaScript і захисту від ботів звичайні запити все ще виграють за вартістю — немає сенсу запускати повноцінний браузер для сторінки, якій він не потрібен. В інших випадках скрапінг через хмарний браузер зазвичай виходить дешевшим, якщо врахувати повторні спроби, проксі та ручні доробки, яких налаштування лише із запитами все одно потребує. Щойно цільовий сайт починає активно протидіяти, розрахунки рідко залишаються на користь запитів.