Chatonio

This is taking longer than usual.

Chatonio

Как создать интеграцию Webscraper (Chromium)

25 апреля 2026 г. 63 просмотраИнтеграции

Webscraper — это инструмент, который запускает headless-браузер Chromium через Playwright, даёт скриптам страницы отработать и передаёт ИИ уже отрисованный HTML. Берите его, когда данные появляются в DOM только после выполнения скриптов: приложения на React/Vue/Svelte, страницы с бесконечной прокруткой, всё, что подгружает содержимое на клиенте.

Это медленный путь. Каждый вызов занимает 2–8 секунд, стоит дороже по ресурсам и выполняется в изолированном браузерном окружении с ограниченным числом одновременных запусков — чтобы аппетиты Chromium к памяти не мешали остальному проекту. Используйте его, только если парсер действительно не справляется.

Когда скрейпер вместо парсера

  1. Откройте исходный код страницы в браузере.
  2. Поищите в нём те данные, которые вам на самом деле нужны.
  3. Нашли? → берите Webparser, он в десять раз быстрее.
  4. Пусто или только <div id="root"></div>? → нужен скрейпер.

Шаг 1 — Добавьте инструмент скрейпинга с рендерингом JS

Порядок тот же, что у парсера — Проекты → ваш проект → Интеграции → + Добавить инструмент — с двумя отличиями:

  • Тип инструмента — Скрейпинг веб-страницы.
  • Рендерить JavaScript — включите. Это единственное отличие от инструмента-парсера.
  • Разрешённые домены — по-прежнему обязательны. Список строгий: перечислите точные хосты или добавьте запись с подстановкой вида *.example.com — она покрывает и сам example.com, и все его поддомены.

The How to call it step for a scraper, with Render JavaScript ticked

Шаг 2 — Стратегия CSS-селектора

У JavaScript-приложения страница сразу после загрузки какое-то время выглядит пустой — и только потом фреймворк дорисовывает настоящее содержимое. Укажите CSS-селектор того элемента, который вам действительно нужен: Playwright дождётся его появления, прежде чем забрать HTML. Именно это отличает «получить данные» от «получить скелет загрузки».

[data-testid="invoice-total"], .order-history-list

Если содержимое подгружается постепенно (ленивая подгрузка списка и тому подобное), выбирайте селектор, который появляется только тогда, когда данные уже на месте.

Поле Исключить работает здесь ровно так же, как у парсера: по одному селектору в строке, элементы удаляются до того, как отработает основной селектор. JavaScript-приложения обычно щедры на обвес — липкие шапки, панели про куки, виджеты чатов, полки «вам также может понравиться», — так что здесь оно окупается даже быстрее, чем на обычной серверной странице. Подробности — в статье Как создать интеграцию Webparser.

Шаг 3 — Таймауты

Жёсткий потолок одного вызова — 120 секунд, а медленные обращения начинают сворачивать примерно на 90-й. Если ваша страница честно собирается дольше, заводите эти данные за настоящей API-интеграцией.

Свои HTTP-заголовки пока нельзя задать из панели. Отдельного поля для заголовков у инструмента в интерфейсе нет, поэтому сессию через заголовок или cookie так не передать. Если страница требует особый заголовок, напишите в поддержку — или используйте API-интеграцию, где авторизация настраивается.

Шаг 4 — Тестовый скрейпинг

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

A scraper test result taking four seconds, against the parser’s fraction of one

Ограничения и подводные камни

  • Одновременных скрейпингов немного. Вызовы обслуживает выделенный воркер, который держит лишь несколько браузерных сессий одновременно, а сами процессы браузера регулярно перезапускаются, чтобы не росло потребление памяти. При наплыве запросы встают в очередь, а не масштабируются вширь.
  • Ограничение вывода — те же 16 КБ. Держите CSS-селектор узким, чтобы не раздувать контекст ИИ.
  • Защита от SSRF включена. Loopback, диапазоны RFC 1918 и link-local отклоняются ещё до запуска браузера.
  • Антибот-страницы будут сопротивляться. Cloudflare Turnstile, hCaptcha и им подобные покажут свою проверку вместо ваших данных — обойти это нельзя. Попросите у владельца сайта API.
  • Не скрейпите собственные внутренние приложения просто потому, что так проще. Нормальная API-интеграция с bearer-авторизацией быстрее, дешевле, надёжнее и переживает редизайны интерфейса.
  • Запросы идут с фиксированного IP — 64.7.198.218. Если ваш WAF проверяет незнакомые адреса, добавьте его в список разрешённых: headless-браузер не умеет проходить такую проверку, равно как и капчу.

Короткая таблица решений

  • HTML отдаётся сервером → Webparser.
  • JS-приложение, данные появляются после загрузки → Webscraper.
  • Закрыто логином, публичных данных нет → API-интеграция.
  • Статичные знания для FAQ → статья базы знаний, интеграция не нужна.

Эта статья была полезной?