Agent Browser — браузерная автоматизация для AI-агентов на Rust
📂 Исходный код на GitHubБраузерная автоматизация для AI-агентов. Нативный Rust CLI: accessibility tree, скриншоты с аннотациями, MCP-сервер, React DevTools, axe-core, сессии с автосохранением и система безопасности с domain allowlist.
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,uncheckscroll,scrollintoview,drag,uploadscreenshot(с опцией--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).