Инструмент браузера
Инструмент браузера предоставляет агентам PRX полные возможности веб-автоматизации -- навигация по страницам, заполнение форм, клики по элементам, извлечение контента и захват скриншотов. Он использует архитектуру подключаемых бэкендов, поддерживающую три движка автоматизации, и применяет ограничения по доменам для предотвращения неконтролируемого веб-доступа.
Инструменты браузера защищены feature-гейтом и требуют browser.enabled = true в конфигурации. При включении PRX регистрирует browser и browser_open в реестре инструментов. Инструмент browser поддерживает сложные многошаговые веб-сценарии, а browser_open предоставляет упрощённый интерфейс для открытия URL и извлечения его содержимого.
PRX также включает инструменты для работы со зрением (screenshot, image, image_info), дополняющие инструмент браузера для визуальных задач. Скриншоты, полученные инструментом браузера, могут передаваться LLM с поддержкой зрения для визуального анализа.
Конфигурация
[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и т.д. - Без подстановки: Пустой список блокирует всю навигацию браузера
[browser]
allowed_domains = [
"github.com",
"*.github.com",
"docs.rs",
"crates.io",
"stackoverflow.com",
"*.openprx.dev"
]Использование
Инструмент browser
Основной инструмент browser поддерживает множество действий для сложных веб-сценариев:
Переход по URL:
{
"name": "browser",
"arguments": {
"action": "navigate",
"url": "https://github.com/openprx/prx"
}
}Заполнение поля формы:
{
"name": "browser",
"arguments": {
"action": "fill",
"selector": "#search-input",
"value": "PRX documentation"
}
}Клик по элементу:
{
"name": "browser",
"arguments": {
"action": "click",
"selector": "button[type='submit']"
}
}Захват скриншота:
{
"name": "browser",
"arguments": {
"action": "screenshot"
}
}Извлечение содержимого страницы:
{
"name": "browser",
"arguments": {
"action": "content"
}
}Инструмент browser_open
Упрощённый инструмент для открытия URL и получения его содержимого:
{
"name": "browser_open",
"arguments": {
"url": "https://docs.rs/tokio/latest/tokio/"
}
}Пример многошагового сценария
Типичный исследовательский сценарий может объединять несколько действий браузера:
- Перейти на поисковую систему
- Заполнить поле поиска запросом
- Нажать кнопку поиска
- Извлечь результаты со страницы
- Перейти к релевантному результату
- Извлечь подробное содержимое
- Сделать скриншот для визуальной справки
Параметры
Параметры browser
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
action | string | Да | -- | Действие: "navigate", "fill", "click", "screenshot", "content", "scroll", "wait", "back", "forward" |
url | string | Условно | -- | URL для перехода (обязателен для действия "navigate") |
selector | string | Условно | -- | CSS-селектор целевого элемента (обязателен для "fill", "click") |
value | string | Условно | -- | Значение для заполнения (обязательно для действия "fill") |
timeout_ms | integer | Нет | 30000 | Максимальное время ожидания завершения действия |
Параметры browser_open
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
url | string | Да | -- | URL для открытия и извлечения содержимого |
Параметры инструментов зрения
screenshot:
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
target | string | Нет | "screen" | Что захватить: "screen" или идентификатор окна |
image:
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
action | string | Да | -- | Операция с изображением: "resize", "crop", "convert" |
path | string | Да | -- | Путь к файлу изображения |
image_info:
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
path | string | Да | -- | Путь к файлу изображения для проверки |
Детали бэкендов
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:
- URL разбирается, и извлекается имя хоста
- Имя хоста проверяется по
allowed_domains - При отсутствии совпадения навигация блокируется и возвращается ошибка
Это предотвращает доступ агента к произвольным веб-сайтам, которые могут содержать вредоносный контент или вызвать непреднамеренные действия в аутентифицированных сессиях.
Изоляция сессий
Сессии браузера изолированы по имени. Разные сессии агента или подагенты могут использовать отдельные контексты браузера для предотвращения утечки состояния (cookies, localStorage, данные сессии).
Ограничения извлечения контента
Извлечение содержимого страницы ограничено значением web_search.fetch_max_chars для предотвращения исчерпания памяти на чрезмерно больших страницах.
Политика безопасности
Вызовы инструмента браузера проходят через движок политик безопасности. Инструмент может быть полностью запрещён или переведён в режим наблюдения с требованием одобрения для каждой навигации:
[security.tool_policy.tools]
browser = "supervised"
browser_open = "allow"Безопасность учётных данных
Инструмент браузера не внедряет учётные данные или токены аутентификации в сессии браузера. Если агенту необходимо пройти аутентификацию на сайте, он должен использовать инструмент браузера для явного заполнения форм входа, что подчиняется политикам наблюдения.
Связанные разделы
- Веб-поиск -- поиск в интернете без автоматизации браузера
- HTTP-запросы -- программные HTTP-запросы к API
- Выполнение shell -- альтернатива для CLI-ориентированных веб-взаимодействий (curl, wget)
- Песочница безопасности -- изоляция процессов для выполнения инструментов
- Справочник конфигурации -- поля конфигурации
[browser] - Обзор инструментов -- все инструменты и система реестра