Skip to content
Эта страница создана и переведена с помощью ИИ. Если вы заметили неточности, помогите нам улучшить её. Редактировать на GitHub

Инструмент браузера

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

Инструменты браузера защищены feature-гейтом и требуют browser.enabled = true в конфигурации. При включении PRX регистрирует browser и browser_open в реестре инструментов. Инструмент browser поддерживает сложные многошаговые веб-сценарии, а browser_open предоставляет упрощённый интерфейс для открытия URL и извлечения его содержимого.

PRX также включает инструменты для работы со зрением (screenshot, image, image_info), дополняющие инструмент браузера для визуальных задач. Скриншоты, полученные инструментом браузера, могут передаваться LLM с поддержкой зрения для визуального анализа.

Конфигурация

toml
[browser]
enabled = true
backend = "agent_browser"       # "agent_browser" | "rust_native" | "computer_use"
allowed_domains = ["github.com", "docs.rs", "*.openprx.dev", "stackoverflow.com"]
session_name = "default"        # Именованная сессия браузера для сохранения состояния

Варианты бэкендов

БэкендОписаниеЗависимостиЛучше всего для
agent_browserВызывает CLI agent-browser, внешний инструмент headless-браузераБинарник agent-browser в PATHОбщая веб-автоматизация, сайты с большим объёмом JavaScript
rust_nativeВстроенная Rust-реализация браузера на основе headless Chrome/ChromiumУстановленный ChromiumЛёгкая автоматизация, без внешних зависимостей
computer_useСайдкар computer-use для полного взаимодействия с рабочим столомСайдкар Anthropic computer-useВзаимодействие на уровне ОС, сложные GUI-сценарии

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

Список allowed_domains контролирует, к каким доменам может обращаться браузер. Сопоставление доменов поддерживает:

  • Точное совпадение: "github.com" совпадает только с github.com
  • Поддомен с подстановкой: "*.openprx.dev" совпадает с docs.openprx.dev, api.openprx.dev и т.д.
  • Без подстановки: Пустой список блокирует всю навигацию браузера
toml
[browser]
allowed_domains = [
  "github.com",
  "*.github.com",
  "docs.rs",
  "crates.io",
  "stackoverflow.com",
  "*.openprx.dev"
]

Использование

Инструмент browser

Основной инструмент browser поддерживает множество действий для сложных веб-сценариев:

Переход по URL:

json
{
  "name": "browser",
  "arguments": {
    "action": "navigate",
    "url": "https://github.com/openprx/prx"
  }
}

Заполнение поля формы:

json
{
  "name": "browser",
  "arguments": {
    "action": "fill",
    "selector": "#search-input",
    "value": "PRX documentation"
  }
}

Клик по элементу:

json
{
  "name": "browser",
  "arguments": {
    "action": "click",
    "selector": "button[type='submit']"
  }
}

Захват скриншота:

json
{
  "name": "browser",
  "arguments": {
    "action": "screenshot"
  }
}

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

json
{
  "name": "browser",
  "arguments": {
    "action": "content"
  }
}

Инструмент browser_open

Упрощённый инструмент для открытия URL и получения его содержимого:

json
{
  "name": "browser_open",
  "arguments": {
    "url": "https://docs.rs/tokio/latest/tokio/"
  }
}

Пример многошагового сценария

Типичный исследовательский сценарий может объединять несколько действий браузера:

  1. Перейти на поисковую систему
  2. Заполнить поле поиска запросом
  3. Нажать кнопку поиска
  4. Извлечь результаты со страницы
  5. Перейти к релевантному результату
  6. Извлечь подробное содержимое
  7. Сделать скриншот для визуальной справки

Параметры

Параметры browser

ПараметрТипОбязательныйПо умолчаниюОписание
actionstringДа--Действие: "navigate", "fill", "click", "screenshot", "content", "scroll", "wait", "back", "forward"
urlstringУсловно--URL для перехода (обязателен для действия "navigate")
selectorstringУсловно--CSS-селектор целевого элемента (обязателен для "fill", "click")
valuestringУсловно--Значение для заполнения (обязательно для действия "fill")
timeout_msintegerНет30000Максимальное время ожидания завершения действия

Параметры browser_open

ПараметрТипОбязательныйПо умолчаниюОписание
urlstringДа--URL для открытия и извлечения содержимого

Параметры инструментов зрения

screenshot:

ПараметрТипОбязательныйПо умолчаниюОписание
targetstringНет"screen"Что захватить: "screen" или идентификатор окна

image:

ПараметрТипОбязательныйПо умолчаниюОписание
actionstringДа--Операция с изображением: "resize", "crop", "convert"
pathstringДа--Путь к файлу изображения

image_info:

ПараметрТипОбязательныйПо умолчаниюОписание
pathstringДа--Путь к файлу изображения для проверки

Детали бэкендов

agent-browser

Бэкенд agent_browser делегирует работу внешнему CLI-инструменту agent-browser, который предоставляет среду headless-браузера на основе Chrome. Взаимодействие происходит через stdio с сообщениями JSON-RPC.

Преимущества:

  • Полное выполнение JavaScript
  • Сохранение cookies и сессий
  • Поддержка расширений

rust_native

Бэкенд rust_native использует Rust-привязки для прямого управления локальной установкой Chromium/Chrome. Взаимодействие осуществляется через Chrome DevTools Protocol (CDP).

Преимущества:

  • Отсутствие зависимости от внешних бинарников (помимо Chromium)
  • Меньшая задержка по сравнению с порождением подпроцесса
  • Более тесная интеграция с внутренними компонентами PRX

computer_use

Бэкенд computer_use использует сайдкар computer-use от Anthropic для выполнения взаимодействий на уровне ОС, включая движение мыши, ввод с клавиатуры и захват экрана. Это выходит за рамки автоматизации браузера и обеспечивает полное управление рабочим столом.

Преимущества:

  • Может взаимодействовать с нативными приложениями, а не только с браузерами
  • Поддерживает сложные GUI-сценарии
  • Обрабатывает всплывающие окна, файловые диалоги и системные подсказки

Безопасность

Белый список доменов

Инструмент браузера применяет строгий белый список доменов. Перед переходом на любой URL:

  1. URL разбирается, и извлекается имя хоста
  2. Имя хоста проверяется по allowed_domains
  3. При отсутствии совпадения навигация блокируется и возвращается ошибка

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

Изоляция сессий

Сессии браузера изолированы по имени. Разные сессии агента или подагенты могут использовать отдельные контексты браузера для предотвращения утечки состояния (cookies, localStorage, данные сессии).

Ограничения извлечения контента

Извлечение содержимого страницы ограничено значением web_search.fetch_max_chars для предотвращения исчерпания памяти на чрезмерно больших страницах.

Политика безопасности

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

toml
[security.tool_policy.tools]
browser = "supervised"
browser_open = "allow"

Безопасность учётных данных

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

Связанные разделы

Released under the Apache-2.0 License.