Перейти к содержанию

MCP-сервер Scrapling

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

Возможности

MCP-сервер Scrapling предоставляет 17 инструментов для сбора данных и работы с браузером. Одноразовые инструменты загружают один URL и закрывают свой браузер или клиент. Инструменты сессий сохраняют Cookie и настройки между вызовами, чтобы ИИ мог продолжить действия в той же вкладке и изучить сетевую историю.

Одноразовые инструменты

🚀 Обычный сбор данных через HTTP

  • make_request: быстрые HTTP-запросы разными методами (GET, POST, PUT, DELETE), имитация отпечатка браузера, генерация настоящих заголовков браузера, соответствующих версии TLS, поддержка HTTP/3 и другие возможности.

🔒 Сбор данных через скрытный браузер

  • browser_fetch_once: выполняет JavaScript и собирает данные с динамических страниц через браузер с функциями скрытности. Поддерживает подмену отпечатка, обход Cloudflare Turnstile/Interstitial и настройку браузера и запроса.

Инструменты сессий

🔌 Управление сессиями

  • browser_open: создаёт постоянную сессию скрытного браузера для нескольких вызовов browser_fetch. Это позволяет не запускать новый браузер каждый раз. Сессия хранит настройки уровня браузера и возвращает только session_id и session_type. Действующие settings можно посмотреть через list_sessions.
  • open_request_session: создаёт постоянную HTTP-сессию без браузера для session_make_request. Между запросами сохраняются Cookie, соединения и отпечаток браузера (impersonate). Возвращает только session_id и session_type; тип равен static. Действующие settings доступны через list_sessions.
  • close_session: закрывает постоянную сессию браузера или HTTP и освобождает её ресурсы.
  • list_sessions: показывает все активные сессии, их сведения и settings.

Состояние браузера

  • browser_save_state: сохраняет Cookie, local storage и IndexedDB в JSON-файл, совместимый с Playwright. Это позволяет восстановить вход после завершения сессии браузера. Существующий файл перезаписывается.
  • browser_load_state: загружает сохранённый файл в открытую сессию браузера, в том числе до первой загрузки страницы. Текущее сохранённое состояние заменяется, но открытые вкладки не закрываются и не переходят на другие страницы. Чтобы использовать восстановленный вход, загрузите или обновите страницу.

Файлы состояния находятся на машине, где работает MCP-сервер. Они не содержат sessionStorage, открытые вкладки или настройки браузера.

🎯 Загрузка через сессию

  • browser_fetch: выполняет JavaScript и загружает один URL через открытую сессию скрытного браузера. Поддерживает подмену отпечатка и обход Cloudflare Turnstile/Interstitial. Также может создать структурированный снимок страницы со ссылками на элементы, их координатами и размерами. Это помогает ИИ находить элементы управления и планировать действия мышью.
  • session_make_request: выполняет быстрые HTTP-запросы разными методами (GET, POST, PUT, DELETE), с имитацией отпечатка браузера, соответствующими заголовками и поддержкой HTTP/3. Повторно использует Cookie, соединения и отпечаток через сессию, открытую с помощью open_request_session.

📸 Скриншоты

  • browser_screenshot: снимает текущую страницу или выбранный элемент в PNG или JPEG без перезагрузки. Можно проверить заполненные поля, открытые меню, графики или карточки результатов. Снимок отдельного элемента уменьшает объём лишнего содержимого. Поддерживает видимую область, полную страницу и один элемент, а также настройку качества JPEG. Скриншот возвращается как настоящий блок изображения, который модель видит напрямую.
  • browser_observe: Помогает агенту понять движение и изменения по короткой последовательности изображений текущей страницы.

Содержимое текущей страницы

  • browser_extract: читает текущую страницу или один элемент как снимок для ИИ, HTML, Markdown или текст без перезагрузки. Позволяет извлечь результаты после заполнения формы или загрузки новых данных. Снимки содержат роли, имена, ссылки, координаты и размеры элементов для последующих действий. Поиск по регулярному выражению возвращает совпавшие строки снимка с соседним контекстом и родительскими узлами.

Действия в браузере

  • browser_actions: объединяет в одном вызове действия мышью, заполнение полей, сочетания клавиш, ответы на диалоговые окна и ожидания. Можно принять или отклонить уведомление и подтверждение, а также ввести текст в диалог запроса. Например, заполнить строку поиска, отправить запрос, дождаться результатов и открыть один из них. ИИ может объединять известные шаги, а снимки получать отдельно, когда нужно проверить изменение страницы. Это позволяет обойтись без отдельного обмена сообщениями с агентом между шагами. Такой подход полезен для быстро исчезающих меню и других элементов управления, где следующий шаг нужно выполнить быстро.

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

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

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

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

JavaScript

  • browser_evaluate: выполняет JavaScript на текущей странице для собственного извлечения данных, вычислений и задач, зависящих от страницы. ИИ может собрать данные из нескольких элементов, прочитать состояние приложения или изменить содержимое страницы. Поддерживает асинхронные скрипты и возвращает результат в JSON.

Сетевая история

  • browser_network_requests: ищет завершённые запросы между вкладками, загрузками страниц и действиями браузера. Можно найти API, из которого страница получает данные, проверить HTTP-ошибки и сохранённые перенаправления. Статические ресурсы по умолчанию скрыты, чтобы уменьшить результат. Сведения о запросах возвращаются в JSON, а длинную историю можно читать постранично.
  • browser_network_request: показывает сводку одного записанного запроса, заголовки, отправленные данные или текстовое тело ответа в виде структурированного JSON. Выбранная часть возвращается полностью, без загрузки страницы или повторной отправки запроса. Сохранённые ответы доступны после перехода на другие страницы. Размер истории ограничен; для нетекстовых, слишком больших или недоступных тел ответа указывается причина. Прочитайте нужные сведения до закрытия MCP-сессии.

Тела ответов читаются и сохраняются только для поддерживаемых текстовых значений Content-Type, например HTML, JSON, XML или JavaScript. Для двоичных, неизвестных или неуказанных типов сохраняются метаданные запроса и заголовки, но тело не читается и не записывается. Браузер продолжает загружать ресурсы как обычно.

Сохраняются только завершённые запросы, в том числе ответы HTTP 4xx и 5xx. Неудачные и незавершённые запросы не включаются. Запись появляется после завершения сохранения; чтение истории и закрытие сессии этого не ждут. Запись, ещё не завершённая при переходе или закрытии, может быть пропущена. Сохранённые байты поступают из браузера и могут отличаться от байтов сервера. Если текст является корректным UTF-8, он декодируется так же, как в Playwright. В остальных случаях используется заявленная кодировка.

Shadow DOM

Чтобы включить содержимое открытого Shadow DOM, задайте pierce_shadow=true в browser_fetch_once или в каждом вызове browser_fetch. По умолчанию используется false. Примеры селекторов и ограничения описаны в разделе Shadow DOM.

Селекторы браузера также позволяют выбирать элементы внутри закрытого Shadow DOM и взаимодействовать с ними.

Основные возможности

  • Извлечение содержимого: преобразование страниц и элементов в Markdown, HTML или очищенный текст.
  • Поддержка CSS-селекторов: точный выбор элементов движком Scrapling до передачи содержимого ИИ.
  • Обход защиты от ботов: работа с Cloudflare Turnstile, Interstitial и другими видами защиты.
  • Поддержка прокси: анонимность и выбор региона подключения.
  • Имитация браузера: TLS-отпечаток, настоящие заголовки соответствующей версии браузера и другие признаки.
  • Сохранение сессий: повторное использование браузера для нескольких запросов повышает скорость.
  • Блокировка рекламы: все браузерные инструменты автоматически блокируют запросы примерно к 3 500 известным рекламным и отслеживающим доменам, экономя токены и ускоряя загрузку.
  • Защита от внедрения инструкций в промпт: автоматическое удаление скрытого содержимого, пригодного для таких атак: элементов со встроенными скрывающими стилями, aria-hidden, скрытых слотов, символов нулевой ширины, HTML-комментариев и тегов template.

Установка

Установите Scrapling с поддержкой MCP и убедитесь, что зависимости браузера тоже установлены.

# Install Scrapling with MCP server dependencies
pip install "scrapling[ai]"

# Install browser dependencies
scrapling install

Или используйте Docker-образ прямо из Docker Registry:

docker pull pyd4vinci/scrapling
Его также можно скачать из реестра GitHub:
docker pull ghcr.io/d4vinci/scrapling:latest

Настройка MCP-сервера

Здесь мы покажем, как добавить MCP-сервер Scrapling в Claude Desktop и Claude Code. Тот же принцип подходит для других чатботов с поддержкой MCP.

Примечание

Команда scrapling-mcp ниже появилась в v0.4.13 как сокращение для scrapling mcp. Она упрощает добавление Scrapling в реестры и клиенты MCP, которые ожидают одну команду. В более старой версии используйте команду scrapling с первым аргументом mcp.

Claude Desktop

  1. Откройте Claude Desktop.
  2. Нажмите меню (☰) в левом верхнем углу, затем выберите Settings → Developer → Edit Config.
  3. Добавьте конфигурацию MCP-сервера Scrapling:

    "ScraplingServer": {
      "command": "scrapling-mcp"
    }
    
    Если это первый добавляемый MCP-сервер, замените содержимое файла следующим:
    {
      "mcpServers": {
        "ScraplingServer": {
          "command": "scrapling-mcp"
        }
      }
    }
    
    Согласно официальной статье, это действие открывает существующий файл настроек или создаёт новый. Файл находится здесь:

  4. macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  5. Windows: %APPDATA%\Claude\claude_desktop_config.json

Чтобы команда работала надёжно, используйте полный путь к исполняемому файлу scrapling-mcp:

  1. macOS: which scrapling-mcp
  2. Windows: where scrapling-mcp

На моём Mac команда вернула /Users/<MyUsername>/.venv/bin/scrapling-mcp, поэтому итоговая конфигурация получилась такой:

{
  "mcpServers": {
    "ScraplingServer": {
      "command": "/Users/<MyUsername>/.venv/bin/scrapling-mcp"
    }
  }
}

Docker

Для Docker-образа конфигурация будет примерно следующей:

{
  "mcpServers": {
    "ScraplingServer": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm", "pyd4vinci/scrapling", "mcp"
      ]
    }
  }
}

Тот же подход работает в Cursor, WindSurf и других клиентах.

Claude Code

В Claude Code всё проще:

claude mcp add ScraplingServer "/Users/<MyUsername>/.venv/bin/scrapling-mcp"
Путь к исполняемому файлу Scrapling можно узнать так:

  1. macOS: which scrapling-mcp
  2. Windows: where scrapling-mcp

Подробности есть в статье Anthropic о добавлении MCP-серверов в Claude Code.

После добавления сервера полностью закройте выбранное приложение и запустите его снова. В Claude Desktop справа внизу поля ввода должен появиться значок MCP-сервера (🔧), либо ScraplingServer появится в меню Search and tools в поле чата.

Свой исполняемый файл браузера

Инструменты browser_fetch_once и browser_open могут использовать другой Chromium-совместимый исполняемый файл вместо встроенного Chromium. Это полезно для собственных сборок или облегчённых браузерных движков.

Чтобы задать его для всего MCP-сервера, передайте путь при запуске:

scrapling-mcp --executable-path "/path/to/chromium"

В настройках Claude Desktop добавьте параметр в аргументы сервера:

{
  "mcpServers": {
    "ScraplingServer": {
      "command": "/Users/<MyUsername>/.venv/bin/scrapling-mcp",
      "args": [
        "--executable-path",
        "/path/to/chromium"
      ]
    }
  }
}

Также можно задать переменную окружения SCRAPLING_EXECUTABLE_PATH перед запуском. При этом ИИ всё ещё может выбрать другой исполняемый файл для одного вызова browser_fetch_once или при открытии сессии через browser_open.

Подключение к удалённому браузеру

browser_open не обязательно запускает браузер локально. Передайте CDP URL, чтобы подключиться к уже работающему браузеру через Chrome DevTools Protocol. Он может находиться на той же машине, другом сервере или в управляемом браузерном сервисе:

Open a stealthy browser session on wss://cdp.provider.example/session/abc123, then use it to scrape the product details from https://shop.example.com. Close the session when you're done.
Полученный session_id используется как обычно с browser_fetch, browser_extract, browser_actions, browser_evaluate, browser_screenshot, browser_observe, browser_network_requests, browser_network_request, browser_save_state и browser_load_state.

URL может быть WebSocket-адресом (ws:///wss://) от браузерного сервиса или HTTP-адресом браузера, который вы запустили сами с открытым портом удалённой отладки:

chrome --remote-debugging-port=9222
К нему можно подключиться через cdp_url="http://localhost:9222". Если браузер работает на другой машине, используйте её адрес.

Примечания

  • Браузер уже запущен, поэтому CDP-сессии игнорируют параметры, нужные только при запуске: headless, real_chrome и executable_path, включая описанное выше значение по умолчанию для всего сервера.
  • Ваш ИИ-агент может начать новую сессию или повторно использовать существующую для работы с сайтами, где вы уже вошли в аккаунт.
  • Scrapling закрывает новые сессии после завершения задачи. При повторном использовании сессии браузер и ваши существующие вкладки остаются открытыми. Закрываются только вкладки, созданные Scrapling.

Streamable HTTP

Начиная с версии 0.3.6, MCP-сервер может использовать транспорт Streamable HTTP вместо обычного stdio.

Для stdio используется такая команда:

scrapling-mcp
Чтобы включить Streamable HTTP, замените её следующей:
scrapling-mcp --http
По умолчанию сервер слушает адрес 127.0.0.1 и порт 8000. Оба значения можно изменить:
scrapling-mcp --http --host '0.0.0.0' --port 8000
По умолчанию принимаются только подключения с той же машины. Чтобы открыть доступ по сети, передайте --host '0.0.0.0'. Это отдельная настройка, не связанная с выбором аутентификации ниже.

Если Streamable HTTP работает в Docker, нужно самостоятельно привязать сервер к 0.0.0.0 и задать токен. Иначе опубликованный порт не сможет подключиться к серверу: адрес 127.0.0.1 контейнера доступен только внутри него.

docker run -p 8000:8000 -e SCRAPLING_MCP_AUTH_TOKEN="<your-token>" pyd4vinci/scrapling mcp --http --host '0.0.0.0'

Аутентификация

К stdio может обратиться только программа, которая его запустила. Но при переходе на Streamable HTTP любой, у кого есть доступ к порту, может вызывать все инструменты, в том числе загружать любой URL с машины сервера. Поэтому Streamable HTTP требует аутентификации. С одним --http сервер не запустится и попросит токен:

scrapling-mcp --http --auth-token "$(openssl rand -hex 32)"
Клиенты должны отправлять этот токен в заголовке Authorization. Запрос без него отклоняется с кодом 401:
{
  "mcpServers": {
    "ScraplingServer": {
      "url": "https://your-server.example.com/mcp",
      "headers": {
        "Authorization": "Bearer <your-token>"
      }
    }
  }
}
Токен, переданный в командной строке, остаётся в истории оболочки и списке процессов. Лучше использовать переменную окружения SCRAPLING_MCP_AUTH_TOKEN:
export SCRAPLING_MCP_AUTH_TOKEN="<your-token>"
scrapling-mcp --http
Если сервер без аутентификации действительно нужен, например для локальной проверки на стандартном адресе 127.0.0.1, явно укажите --no-auth:
scrapling-mcp --http --no-auth
Сочетание --no-auth и --host '0.0.0.0' открывает все инструменты любому, кто может подключиться к порту. Не используйте его за пределами доверенной сети.

Если сервер слушает публичный адрес, также задайте разрешённые имена хостов. Это включает защиту от DNS rebinding: атаки, при которой открытый в браузере сайт пытается обратиться к вашему серверу. Параметр можно повторять:

scrapling-mcp --http --allowed-host 'your-server.example.com:8000'

Примечания

  • Аутентификация применяется только к Streamable HTTP. В stdio она игнорируется, о чём сервер пишет предупреждение в журнал.
  • Обычный HTTP передаёт токен открытым текстом. Перед публикацией в интернете разместите сервер за обратным прокси, который обрабатывает TLS.
  • Это один общий ключ, а не отдельные учётные данные для каждого клиента. Все клиенты используют одинаковый токен, а для его замены нужно перезапустить сервер.
  • При запуске с --http --no-auth сервер всё равно записывает предупреждение об отсутствии аутентификации.
  • Если передать и --auth-token, и --no-auth, токен сохранится. Сервер не отключит аутентификацию незаметно.

Примеры

Покажем несколько промптов, которые мы использовали при тестировании MCP-сервера. Возможно, вы придумаете более интересные и точные варианты :)

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

  1. Обычный сбор данных со страницы

    Извлеките основное содержимое страницы в Markdown:

    Scrape the main content from https://example.com and convert it to markdown format.
    

    Claude может использовать make_request, чтобы получить страницу и вернуть чистый, удобный для чтения текст. HTTP-запросы по умолчанию выполняются с максимум тремя попытками и задержкой в одну секунду между ними. Если странице нужен JavaScript или она блокирует HTTP-запросы, ИИ может выбрать browser_fetch_once. Оба инструмента закрывают свои ресурсы после вызова.

    Более точный вариант того же промпта:

    Use regular requests to scrape the main content from https://example.com and convert it to markdown format.
    
    Он сразу указывает Claude, какой инструмент использовать. Без этого Claude иногда начинает с обычных запросов, а иногда без явной причины выбирает браузер. Обычно лучше задавать инструмент явно: это экономит время и деньги и делает результаты стабильнее.

  2. Извлечение конкретных данных

    Извлеките нужные элементы с помощью CSS-селекторов:

    Get all product titles from https://shop.example.com using the CSS selector '.product-title'. If the request fails, retry up to 5 times every 10 seconds.
    

    Сервер вернёт только элементы, совпавшие с селектором, в виде структурированного списка. Здесь задано до 5 попыток на случай проблем с соединением, но для большинства задач достаточно значения по умолчанию.

  3. Сбор данных интернет-магазина

    Ещё один, чуть более сложный промпт:

    Open a stealthy browser session and visit these e-commerce URLs one at a time:
    - https://shop1.com/product-a
    - https://shop2.com/product-b  
    - https://shop3.com/product-c
    
    Get the product names, prices, and descriptions from each page. Close the session when done.
    

    Claude может повторно использовать одну сессию браузера, последовательно вызвать browser_fetch для каждого URL и затем проанализировать извлечённые данные.

  4. Более сложный процесс

    Допустим, нужно получить все игры в жанре экшен с первой страницы магазина PlayStation прямо сейчас. Для этого можно использовать такой промпт:

    Extract the URLs of all games on this page, then visit each game in order and return a list of all action games: https://store.playstation.com/en-us/pages/browse
    
    Если данные доступны через обычные запросы, попросите ИИ повторно использовать HTTP-сессию, чтобы не запускать браузер:
    Open an HTTP session, extract the URLs of all games on this page, then fetch each game in order and return a list of all action games. Close the session when done: https://store.playstation.com/en-us/pages/browse
    
    Если вы умеете писать CSS-селекторы, можно сузить содержимое до того, как его прочитает ИИ:
    Use an HTTP session to extract the URLs of all games on the page below, then fetch each game in order and return a list of all action games.
    The selector for games in the first page is `[href*="/concept/"]` and the selector for the genre in each game page is `[data-qa="gameInfo#releaseInformation#genre-value"]`.
    Close the session when done.
    
    URL: https://store.playstation.com/en-us/pages/browse
    

  5. Получение данных с сайта под защитой Cloudflare

    Если вы предполагаете, что сайт использует Cloudflare, сообщите об этом Claude сразу, не заставляя его выяснять это самостоятельно.

    What's the price of this product? Be cautious, as it utilizes Cloudflare's Turnstile protection. Make the browser visible while you work.
    
    https://ao.com/product/oo101uk-ninja-woodfire-outdoor-pizza-oven-brown-99357-685.aspx
    

  6. Длинный процесс

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

    Extract all product URLs for the following category, then return the prices and details for the first 3 products.
    
    https://www.arnotts.ie/furniture/bedroom/bed-frames/
    
    Но лучше написать так:
    Go to the following category URL and extract all product URLs using the CSS selector "a". Then, reuse the session to fetch the first 3 product pages in order and extract each product’s price and details. Close the session when done.
    
    Keep the output in markdown format to reduce irrelevant content.
    
    Category URL:
    https://www.arnotts.ie/furniture/bedroom/bed-frames/
    

  7. Постоянные сессии

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

    Open a stealthy browser session, then use it to scrape the main details from the first 5 product pages on https://shop.example.com. Close the session when you're done.
    
    Claude создаст сессию через browser_open, вызовет browser_fetch для каждой страницы товара в этой сессии, а в конце вызовет close_session. Это заметно быстрее, чем запускать браузер для каждой страницы.

    Опасно

    Всегда закрывайте постоянную сессию после работы, иначе она останется открытой!

  8. Постоянная сессия в длинном процессе

    Ещё один длинный тест, над которым Claude придётся подумать:

    Use Scrapling MCP to do the following in this order:
    
    1. Open a stealthy browser session with headless mode off.
    2. Go to this page and collect the number of stars: https://github.com/D4Vinci/Scrapling
    3. From the README, get the URL that shows the number of downloads and go to it.
    4. Get the number of downloads and the top 3 countries from the graph.
    5. Prepare a report with the results.
    6. Close the browser.
    

Это лишь примеры. Дальше всё зависит от ваших идей.

Рекомендации

Несколько технических советов.

1. Выбирайте подходящий инструмент

  • make_request: быстрый HTTP-запрос к одной странице или API.
  • browser_fetch_once: одна динамическая страница с JavaScript или защищённый сайт, в том числе с Cloudflare.
  • Инструменты сессий: связанные запросы, действия браузера, скриншоты и сетевая история.

2. Повышайте скорость

  • Повторно используйте сессию и загружайте URL по порядку.
  • Отключайте ненужные ресурсы.
  • Задавайте подходящие тайм-ауты.
  • Используйте CSS-селекторы для точечного извлечения.

3. Учитывайте динамическое содержимое

  • Для SPA используйте network_idle.
  • Задавайте wait_selector для нужных элементов.
  • Увеличивайте тайм-аут для медленных сайтов.

4. Следите за качеством данных

  • Используйте main_content_only=true, чтобы выбрать и очистить основное содержимое страницы.
  • Выбирайте подходящий для задачи extraction_type.

5. Защищайтесь от внедрения инструкций в промпт

При включённом main_content_only, как по умолчанию, MCP-сервер автоматически очищает полученное содержимое. Он удаляет скрытые данные, с помощью которых вредоносные сайты могут передавать инструкции в контекст ИИ:

  • Встроенные скрывающие стили: display:none, visibility:hidden, а также нулевые непрозрачность, размер шрифта, высота, ширина, максимальная высота и максимальная ширина.
  • Элементы, скрытые от средств доступности: aria-hidden="true".
  • Теги template и скрытые слоты: элементы <template> и <slot hidden>.
  • HTML-комментарии: <!-- ... -->.
  • Символы нулевой ширины: невидимые символы Unicode, например пробел нулевой ширины.

Защита автоматически работает при извлечении HTML, Markdown и текста. Для максимальной защиты оставьте стандартное значение main_content_only=true.

6. Управляйте сессиями

  • Для разовой загрузки используйте make_request или browser_fetch_once. Они закрывают свои ресурсы и не оставляют сессию для следующих вызовов.
  • Для нескольких страниц создайте постоянную сессию браузера через browser_open, затем вызывайте browser_fetch для каждой страницы в этой сессии.
  • Для нескольких обычных HTTP-запросов используйте open_request_session и вызывайте session_make_request для каждого запроса. Без браузера между вызовами сохраняются Cookie, соединения и отпечаток браузера (impersonate).
  • Сессия хранит настройки, заданные при открытии: headless, locale, cookies, переключатели скрытности и другие для браузера; impersonate и proxy для HTTP-сессий. Параметры отдельных запросов, такие как timeout, wait_selector, network_idle и solve_cloudflare, передаются в browser_fetch/session_make_request при каждом вызове. Их значения по умолчанию указаны в схемах инструментов.
  • browser_fetch может решать проверки Cloudflare в открытой сессии скрытного браузера.
  • Всегда закрывайте сессии через close_session после работы, чтобы освободить ресурсы.
  • Через list_sessions можно проверить активные сессии и settings, с которыми они созданы. Эти сведения возвращаются ИИ-агенту.
  • Передайте свой session_id инструментам открытия сессии, чтобы использовать понятные имена вроде "search" или "checkout" вместо случайного шестнадцатеричного значения. Если ID уже занят, инструмент выдаст ошибку, поэтому конфликт можно обнаружить сразу.

7. Делайте скриншоты

  • browser_screenshot снимает страницу, уже открытую через browser_fetch в сессии скрытного браузера. Он не перезагружает страницу, поэтому ИИ может проверить заполненные поля, открытые меню и другие результаты действий.
  • Изображение возвращается настоящим блоком ImageContent, поэтому модель видит страницу напрямую.
  • Можно снять видимую область или всю страницу, включая содержимое ниже текущего экрана.
  • Снимайте отдельное поле, график, карточку или результат, чтобы убрать лишнее окружение. При съёмке элемента инструмент может прокрутить его в видимую область.
  • Выбирайте PNG для изображения без потерь или JPEG с настраиваемым качеством, чтобы уменьшить объём данных.
  • Перед скриншотом ИИ может использовать browser_actions, чтобы дождаться содержимого или закончить действия.

browser_observe помогает агенту следить за анимацией, движущимися элементами управления и другими изменениями, которые можно пропустить на одном скриншоте.

⚠️ Важные правила:

  • Проверяйте robots.txt: откройте https://website.com/robots.txt, чтобы узнать правила сбора данных.
  • Соблюдайте ограничения частоты: не перегружайте сервер запросами.
  • Условия использования: прочитайте правила сайта и следуйте им.
  • Авторское право: уважайте права на интеллектуальную собственность.
  • Конфиденциальность: учитывайте законы о защите персональных данных.
  • Коммерческое использование: убедитесь, что у вас есть нужное разрешение для деловых целей.

Создано с ❤️ командой Scrapling. Удачного сбора данных!