Agent Browser — браузерная автоматизация для AI-агентов на Rust

· 3 мин чтения
ai-agents browser-automation mcp tools rust
📂 Исходный код на GitHub

Браузерная автоматизация для AI-агентов. Нативный Rust CLI: accessibility tree, скриншоты с аннотациями, MCP-сервер, React DevTools, axe-core, сессии с автосохранением и система безопасности с domain allowlist.

Agent Browser — браузерная автоматизация для AI-агентов на Rust

Agent Browser — инструмент от Vercel Labs для управления браузером из AI-агентов. Написан на Rust, работает как CLI. 39 тысяч звёзд на GitHub. В отличие от Playwright или Puppeteer, он не требует Node.js для рантайма и спроектирован специально для AI-агентов: команды короткие, вывод структурированный, refs из accessibility tree стабильны между вызовами.

Установка

Глобально через npm (нативный Rust-бинар):

npm install -g agent-browser
agent-browser install  # Скачивает Chrome для автоматизации

Для macOS через Homebrew, для Rust-разработчиков — через Cargo. При первом запуске agent-browser install сам скачивает Chrome из Chrome for Testing. Уже установленные Chrome, Brave, Playwright и Puppeteer детектятся автоматически.

Обновление: agent-browser upgrade — сам определяет способ установки (npm, Homebrew, Cargo) и запускает нужную команду.

Быстрый старт

agent-browser open example.com
agent-browser snapshot          # Accessibility tree с ref-ами
agent-browser click @e2         # Клик по ref из snapshot
agent-browser fill @e3 "test@example.com"
agent-browser get text @e1
agent-browser screenshot page.png
agent-browser close

Главная фишка — snapshot возвращает accessibility tree, где каждый интерактивный элемент помечен ref (@e1, @e2...). Эти refs стабильны до следующего snapshot, и все команды работают по ним — никаких CSS-селекторов или XPath. Для тех, кто всё же предпочитает классические селекторы, они тоже поддерживаются:

agent-browser click "#submit"
agent-browser find role button click --name "Submit"

Ключевые возможности

Навигация и взаимодействие

  • open <url>, back, forward, reload, pushstate (SPA)
  • click, dblclick, hover, focus, type, fill, press, select, check, uncheck
  • scroll, scrollintoview, drag, upload
  • screenshot (с опцией --annotate — нумерованные метки на интерактивных элементах)
  • pdf, eval (JavaScript)

Snapshot и чтение

snapshot — основной способ понять страницу. Опции:

  • -i — только интерактивные элементы
  • -c — компактный режим (без пустых структурных элементов)
  • -d <n> — ограничение глубины
  • -s <selector> — скоуп на конкретный элемент

read — получение текста с URL без запуска браузера. Пробует Accept: text/markdown, ищет llms.txt, падает на readable-текст из HTML.

Поиск элементов (семантические локаторы)

agent-browser find role button click --name "Submit"
agent-browser find text "Sign In" click
agent-browser find label "Email" fill "test@test.com"
agent-browser find placeholder "Search" type "hello"
agent-browser find first ".item" click
agent-browser find nth 2 "a" text

Ожидания

agent-browser wait .selector     # До появления элемента
agent-browser wait 500           # 500 мс
agent-browser wait --text "Welcome"
agent-browser wait --load networkidle
agent-browser wait --fn "window.ready === true"

Batch-режим

Несколько команд за один запуск процесса — экономия на старте Rust-бинарника:

agent-browser batch "open https://example.com" "snapshot -i" "screenshot"

Или через JSON на stdin:

echo '[
  ["open", "https://example.com"],
  ["snapshot", "-i"],
  ["click", "@e1"],
  ["screenshot", "result.png"]
]' | agent-browser batch --json

Вкладки и окна

Tab ID — стабильные строки t1, t2, t3. Не переиспользуются в рамках сессии, можно назначать метки:

agent-browser tab new --label docs https://docs.example.com
agent-browser tab docs               # Переключиться
agent-browser tab close docs

React DevTools и Web Vitals

Встроенная поддержка React-приложений:

agent-browser open --enable react-devtools <url>
agent-browser react tree              # Полное дерево компонентов
agent-browser react inspect <fiberId> # props, hooks, state, source
agent-browser vitals                  # LCP, CLS, TTFB, FCP, INP

Работает с любым React-приложением: Next.js, Remix, Vite, CRA, TanStack Start.

Accessibility audit

Встроенный axe-core:

agent-browser a11y
agent-browser a11y https://example.com --tags wcag2a,wcag2aa --json

Diff

Сравнение состояния страницы:

agent-browser diff snapshot                              # Текущий vs последний snapshot
agent-browser diff screenshot --baseline before.png      # Визуальный pixel diff
agent-browser diff url https://v1.com https://v2.com     # Сравнение двух URL

Сеть

Перехват запросов, блокировка ресурсов, HAR:

agent-browser network route '*' --abort --resource-type script
agent-browser network requests --type xhr,fetch
agent-browser network har start --content all
agent-browser network har stop output.har

MCP-сервер

Agent Browser предоставляет MCP-сервер для интеграции с любыми MCP-клиентами:

agent-browser mcp
agent-browser mcp --tools all

Профили инструментов: core (дефолт), network, state, debug, tabs, react, mobile, all. Каждый инструмент имеет типизированные поля — MCP-клиенты показывают осмысленные запросы на подтверждение вместо сырых массивов команд.

Пример конфига для Claude Code / OpenCode:

{
  "mcpServers": {
    "agent-browser": {
      "command": "agent-browser",
      "args": ["mcp"]
    }
  }
}

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

Шесть способов работы с сессиями:

Подход Когда использовать
Chrome profile Переиспользовать логины из вашего Chrome
Persistent profile Полное состояние браузера между запусками
Session persistence Автосохранение cookies + localStorage
Import from browser Захватить авторизацию через --auto-connect
State file Загрузить JSON с состоянием
Auth vault Зашифрованное локальное хранилище credentials

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

agent-browser --session agent1 open site-a.com
agent-browser --session agent2 open site-b.com

Каждая сессия имеет свой браузер, cookies, историю и auth-состояние. Шифрование session-файлов — AES-256-GCM.

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

Agent Browser спроектирован для безопасного развёртывания AI-агентов:

  • Domain Allowlist — ограничение навигации только доверенными доменами. Блокирует WebRTC, worker-ы и запросы к неразрешённым доменам
  • Content Boundary Markers — оборачивает вывод страницы в маркеры, чтобы LLM отличала результат инструмента от недоверенного контента
  • Action Policy — статический файл политики для разрешения/запрета деструктивных действий
  • Action Confirmation — запрос подтверждения для чувствительных категорий (eval, download)
  • Output Length Limits — предотвращение context flooding
  • Auth Vault — credentials никогда не попадают в промпт к LLM

Система плагинов

Плагины работают внешними процессами по протоколу agent-browser.plugin.v1. Устанавливаются из npm или GitHub:

agent-browser plugin add agent-browser-plugin-captcha
agent-browser plugin add org/agent-browser-plugin-cloud-browser

Типы плагинов: credential provider, browser provider, launch mutator, command runner.

Дашборд

Локальный веб-дашборд для мониторинга сессий в реальном времени:

agent-browser dashboard start  # Порт 4848

Показывает live viewport, ленту команд, консоль, создание сессий и AI-чат (через Vercel AI Gateway).

Источник: https://github.com/vercel-labs/agent-browser