browser-use: LLM управляет браузером
📂 Исходный код на GitHubБиблиотека для браузерных агентов: LLM управляет реальным браузером через естественный язык. Локальный запуск на Python, режим CLI для coding-агентов, облачные браузеры с stealth и прокси.
Browser Use — это open-source библиотека на Python, которая превращает языковую модель в оператора браузера. Вместо того чтобы писать селекторы и сценарии для Playwright, вы описываете задачу словами, а агент сам открывает страницы, находит нужные элементы, кликает, заполняет формы и возвращает результат. Репозиторий создан в конце 2024 года, написан на Python, распространяется под MIT-лицензией и собрал больше 116 тысяч звёзд и 12,8 тысячи форков.
Проект изначально задумывался как демонстрация возможностей агентов, но быстро вырос в полноценный инструмент: он используется для автоматизации ввода данных, бронирования, сбора публичной информации и тестирования сценариев, где обычный HTTP-клиент не справляется из-за рендеринга на клиенте.
Три способа начать
Проект предлагает три независимых пути, и выбор между ними определяется тем, кто будет выполнять задачу — ваш код, ваш coding-агент или инфраструктура Browser Use.
| Путь | Что это | Для кого |
|---|---|---|
| Fully Hosted Cloud | Готовый агент и браузеры в облаке, API для отправки задач | Команды, которым нужна масштабируемая автоматизация без своей инфраструктуры |
| CLI | Обёртка, дающая доступ к браузеру уже готовому агенту | Пользователи Claude Code, Codex, Hermes, OpenClaw, Cursor |
| Python Library | Сама open-source библиотека | Разработчики, которые встраивают агента в собственное приложение |
CLI и Python-библиотека умеют подключаться как к локальному браузеру, так и к облачному. При этом облачный браузер — это только сам браузер, а полностью размещённый Cloud API запускает ещё и агента.
Быстрый старт через Python-библиотеку
Требуется Python версии 3.11 или новее. Установка делается через uv:
uv init --python 3.12
uv add browser-use
Ключи провайдеров кладутся в .env:
# .env
OPENAI_API_KEY=your-key
# BROWSER_USE_API_KEY=your-key # Optional: BU2 model or cloud browser
Дальше достаточно описать задачу. Минимальный агент выглядит так:
import asyncio
from browser_use import Agent, Browser, ChatBrowserUse, ChatOpenAI
from dotenv import load_dotenv
load_dotenv()
async def main():
llm = ChatOpenAI(model='gpt-5.6-luna', reasoning_effort='xhigh')
# llm = ChatBrowserUse(model= S2 ) # Use BU2 instead; requires BROWSER_USE_API_KEY
agent = Agent(
task="Find the number of stars of the browser-use repo",
llm=llm,
# browser=Browser(use_cloud=True), # Use a cloud browser; requires BROWSER_USE_API_KEY
)
history = await agent.run()
print(history.final_result())
if __name__ == "__main__":
asyncio.run(main())
Запуск — uv run agent.py. Агент откроет браузер, найдёт репозиторий и напечатает ответ. Никакого промпта вручную писать не нужно: объект Agent(...) подставляет системный промпт Browser Use сам, и он остаётся корректным при смене модели. Если поведение нужно изменить, есть extend_system_message для дописывания инструкций и override_system_message для полной замены.
Объект history, который возвращает run(), хранит всю историю шагов агента, а не только финальный ответ. Это полезно при отладке: видно, на каком шаге модель сошла с маршрута.
Выбор модели
Разработчики рекомендуют BU2 — собственную модель проекта, оптимизированную под браузерную автоматизацию:
llm = ChatBrowserUse(model='bu-2-0')
Она требует BROWSER_USE_API_KEY. При этом ChatBrowserUse умеет работать и как шлюз: через него доступны модели с префиксом провайдера — от Anthropic, Google и других поставщиков, оплата идёт через ключ Browser Use.
from browser_use import Agent, ChatBrowserUse
llm = ChatBrowserUse(model='anthropic/claude-sonnet-4-6') # or S1
agent = Agent(task='...', llm=llm)
Если хочется обращаться к провайдеру напрямую, есть отдельные обёртки — ChatOpenAI, ChatAnthropic, ChatGoogle, каждая со своим ключом. Для полностью локальной работы поддерживается Ollama, но требования к железу и к самой модели остаются на пользователе.
Собственные инструменты
Агенту можно добавлять свои функции. Регистрируются они через объект Tools и передаются в конструктор:
import asyncio
from datetime import datetime, timezone
from browser_use import ActionResult, Agent, ChatBrowserUse, Tools
from dotenv import load_dotenv
load_dotenv()
tools = Tools()
@tools.action(description='Get the current date and time in UTC.')
def get_current_time() -> ActionResult:
return ActionResult(extracted_content=datetime.now(timezone.utc).isoformat())
async def main():
agent = Agent(
task="What is the current UTC time?",
llm=ChatBrowserUse(model='bu-2-0'),
tools=tools,
)
history = await agent.run()
print(history.final_result())
if __name__ == "__main__":
asyncio.run(main())
Функция возвращает ActionResult, в котором результат отдаётся модели в виде текста. Это даёт агентам то, чего нет у «голого» браузера: доступ к текущему времени, к своей базе данных, к внутреннему API приложения.
CLI для coding-агентов
Второй путь — не писать код вообще. README предлагает готовый промпт, который вставляется прямо в Claude Code, Codex, Hermes, OpenClaw или любой другой агент:
Install or upgrade browser-use to the latest stable version with uv using Python 3.12, run `browser-use skill install` to register the skill, and connect it to my browser. If setup or connection fails, follow https://github.com/browser-use/browser-harness/blob/main/install.md.
То есть агент сам ставит пакет, регистрирует скилл и подключается к вашему браузеру. Инструкция по установке лежит в отдельном репозитории — Browser Harness.
Аутентификация и профили
Для локального браузера есть Browser.from_system_chrome() — так переиспользуется уже существующий профиль Chrome с вашими сессиями. Для облачного варианта профиль синхронизируется по гайду на profile sync, после чего подключается через Browser(use_cloud=True, cloud_profile_id='your-profile-id').
Важная оговорка: синхронизация переносит только cookies. Local storage, IndexedDB и расширения не переносятся, поэтому на части сайтов придётся логиниться заново.
CAPTCHA и stealth
Browser Use Cloud предоставляет браузеры со stealth-режимом и прокси, которые снижают вероятность срабатывания антибот-защиты. В Python-библиотеке тот же эффект даёт облачный браузер: Browser(use_cloud=True) плюс BROWSER_USE_API_KEY.
Разработчики честно предупреждают: результат зависит от сайта и конкретного challenge, и никакая конфигурация не гарантирует обход любой CAPTCHA.
Бенчмарк
Оценивать качество браузерных агентов сложно, поэтому у проекта есть собственный Browser Use Benchmark — набор сложных задач навигации. В README показаны результаты по 60 задачам из поднабора BU Bench v2: на относительно простых задачах даже небольшие модели показывают высокую долю успеха, и различия видны в основном на сложных сценариях вроде бронирования, где нужно пройти форму, найти свободный слот и обойти CAPTCHA.
Смежные репозитории
Проект развивается экосистемой из нескольких репозиториев.
| Репозиторий | Назначение |
|---|---|
| Browser Harness | CLI, дающий AI-агентам управление вашим браузером |
| Browser Harness JS | То же самое для JavaScript-агента |
| Browser Use Pi | TypeScript-агент для браузера на базе Pi |
| Cloud SDK | Интеграция Browser Use Cloud в приложение |
| Video Use | Монтаж видео через coding-агента |
| macOS Harness | Управление приложениями macOS, браузером и файлами |
| Benchmark | Набор браузерных задач для сравнения агентов |
Стоимость и лицензия
Сама библиотека бесплатна и распространяется по MIT-лицензии. Платными остаются вывод моделей и размещённые браузеры: и API-провайдеры, включая ChatBrowserUse, и Browser Use Cloud берут деньги за использование. Полностью локальный вариант возможен — локальный браузер плюс локальная модель через Ollama, но это вопрос вашего железа.
Для продакшена есть два пути: оставить агента у себя и подключить CLI или библиотеку к облачным браузерам, либо отдать и агента тоже, отправляя задачи в полностью размещённый Cloud API. Третий вариант — развернуть и библиотеку, и браузеры на собственной инфраструктуре.