~/wiki / github / browser-use-ai-browser-agent-guide

browser-use: библиотека, которая превращает браузер в инструмент AI-агента

Основной чат

Чат для вайбкодеров: новости, гайды, поиск исполнителей, маркетплейс и разбор реальных кейсов.

$ cd раздел/ $ join vibe dev
browser-use: библиотека, которая превращает браузер в инструмент AI-агента - обложка

browser-use — открытая (MIT) библиотека, которая даёт ИИ-агенту возможность пользоваться браузером так же, как это делает человек: открывать страницы, кликать по кнопкам, печатать текст, заполнять формы. Вы описываете задачу словами — агент выполняет её сам, шаг за шагом наблюдая за страницей и решая, что делать дальше.

Проект сделан цюрихской командой (Магнус Мюллер и Грегор Жунич) и на сентябрь 2026 года собрал 111,7 тыс. звёзд и 12,3 тыс. форков на GitHub — то есть это один из самых популярных инструментов в нише «дать LLM браузер». Под капотом — Playwright для управления Chromium.

Позиционирование простое: «скажи компьютеру, что сделать, и он это сделает». Из показанных на странице проекта примеров — заполнение анкеты на работу по резюме, выгрузка списка подписчиков в CSV, сравнение нескольких товаров в таблицу.

Два способа использования: CLI-скилл vs Python-библиотека

Правило простое: разовая задача через уже работающего агента → CLI-скилл. Повторяемая автоматизация в коде → Python-библиотека.

CLI-скилл — если у вас уже есть агент

Если вы работаете с Claude Code, Codex, Cursor или другим агентом (в том числе с уже разобранным нами omp), можно один раз подключить browser-use как скилл и дальше просто говорить агенту, что сделать в браузере — «залей это видео на YouTube», «сравни три ноутбука и сделай таблицу с ценами».

Для установки достаточно вставить агенту такой промпт — он сам всё настроит:

text
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.

Python-библиотека — если вы пишете свой код

Для массовой автоматизации (скрейпинг по расписанию, встраивание браузерного агента в свой продукт, кастомные инструменты и системные промпты, строгий контроль над форматом ответа) используется сама библиотека.

Установка и первый запуск

Нужен Python 3.11+:

bash
uv add browser-use
# или: pip install browser-use

API-ключ модели кладётся в .env:

bash
# .env
BROWSER_USE_API_KEY=your-key
# GOOGLE_API_KEY=your-key
# ANTHROPIC_API_KEY=your-key

Минимальный рабочий агент:

python
import asyncio
from browser_use import Agent, ChatBrowserUse

async def main():
    agent = Agent(
        task="Find the number of stars of the browser-use repo",
        llm=ChatBrowserUse(model='openai/gpt-5.5'),
        # llm=ChatBrowserUse(model='bu-2-0-mini-preview'),  # своя оптимизированная модель
        # llm=ChatAnthropic(model='claude-opus-4-8'),
    )
    history = await agent.run()

if __name__ == "__main__":
    asyncio.run(main())

Какую модель выбрать

Библиотека сама не является моделью — она подключает любую LLM через провайдера ChatBrowserUse, который принимает строку вида provider/model, и один и тот же BROWSER_USE_API_KEY даёт доступ ко всем из них — не нужно заводить отдельные ключи OpenAI/Anthropic/Google:

python
from browser_use import Agent, ChatBrowserUse

llm = ChatBrowserUse(model='anthropic/claude-sonnet-4-6')
# или 'openai/gpt-5.5', 'google/gemini-3-pro'
agent = Agent(task='...', llm=llm)

Отдельно у команды есть собственная модель ChatBrowserUse() (семейство bu-*), заточенная именно под браузерную автоматизацию — по их бенчмаркам она проходит задачи в 3–5 раз быстрее конкурентов при сопоставимой точности. Есть и открытый превью-вариант — browser-use/bu-30b-a3b-preview; при его использовании библиотека всё равно сама подставляет свой системный промпт для агента, отдельно прописывать его не нужно.

Кастомные инструменты

Любую Python-функцию можно превратить в действие, доступное агенту, через декоратор @tools.action:

python
from browser_use import Tools

tools = Tools()

@tools.action(description='Description of what this tool does.')
def custom_tool(param: str) -> str:
    return f"Result: {param}"

agent = Agent(
    task="Your task",
    llm=llm,
    browser=browser,
    tools=tools,
)

Описание (description) обязательно — по нему модель решает, когда вызывать инструмент. В функцию можно принимать служебные объекты рантайма — например, browser_session: BrowserSession (именно с таким именем параметра — по-другому инжект не сработает), page_extraction_llm, file_system, available_file_paths. Результат инструмента может быть простой строкой или объектом ActionResult с полями extracted_content, error, is_done, success и другими.

Структурированный вывод

Чтобы получить не текст, а провалидированный объект, задаётся Pydantic-схема через output_model_schema:

python
from pydantic import BaseModel

class Result(BaseModel):
    title: str
    price: float

agent = Agent(
    task="Extract the product title and price",
    llm=llm,
    output_model_schema=Result,
)
history = await agent.run()
result = history.structured_output  # Result | None

Финальный результат в history разбирается независимо от того, отчитался ли агент об успехе: если он сообщил о неудаче, ответ всё равно возвращается — но помечается как незавершённый, а не как чистый успешный результат.

Работа с чувствительными данными

Логины и пароли можно передать так, что модель никогда не увидит их реальные значения — она получает только плейсхолдер-ключи, а сама библиотека уже на уровне браузера подставляет настоящее значение:

python
agent = Agent(
    task="Log in and download the latest invoice",
    llm=llm,
    sensitive_data={
        "*.example.com": {
            "username": "my_user",
            "password": "my_pass",
        },
    },
)

Вложенная форма с доменной привязкой ("*.example.com": {...}) используется, если заранее неизвестны разрешённые домены. Как только sensitive_data задан, библиотека отключает обработку кросс-доменных iframe — это защита от того, чтобы секрет случайно не оказался введён в поле с другого источника.

Разрешённые домены и другие настройки браузера

Ограничить, по каким сайтам вообще может ходить агент, можно через allowed_domains у объекта браузера:

python
from browser_use import Agent, Browser

browser = Browser(allowed_domains=["*.example.com"])
agent = Agent(task="...", llm=llm, browser=browser)

Из других параметров Agent(...), которые часто нужны на практике:

  • use_vision ("auto" по умолчанию) — режим работы со скриншотами: True — всегда прикладывать скриншот, False — никогда (и вообще не включать инструмент скриншота), "auto" — инструмент доступен, но модель обращается к нему по необходимости.
  • vision_detail_level — детализация скриншотов: low/high/auto.
  • page_extraction_llm — отдельная (обычно более дешёвая) модель специально для извлечения контента со страницы.
  • generate_gif — записать GIF с действиями агента для отладки/демонстрации.
  • available_file_paths — список файлов на диске, которые агент может использовать (например, резюме для формы).

Open Source vs Cloud

Библиотека полностью бесплатна и работает на своей машине — но у команды есть и платное облако для продакшн-нагрузки. Разница:

Открытый агент (self-hosted)

  • Бесплатный, работает локально
  • Глубокий контроль на уровне кода: любая LLM, кастомизация поведения
  • Разработчики рекомендуют для стелса, ротации прокси и масштабирования всё равно подключать облачные браузеры

Облачный агент (Cloud, рекомендуется для продакшена)

  • Более мощный агент под сложные задачи
  • Ротация прокси и решение капч из коробки
  • 1000+ готовых интеграций (Gmail, Slack, Notion и другие)
  • Персистентная файловая система и память между запусками
  • Скрипты можно перезапускать позже, и они сами подтянут актуальные данные, даже если сайт успел измениться

Вызов облачного API — это просто HTTP-запрос:

bash
curl -X POST https://api.browser-use.com/api/v4/runs \
  -H "X-Browser-Use-API-Key: $BROWSER_USE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"task": "Your task"}'

Бенчмарки

Команда прогоняет модели через собственный BU Bench — 100 реалистичных браузерных задач, сам бенчмарк тоже открытый (browser-use/benchmark). По их данным, библиотека также занимает первое место в лидерборде Odysseys (200 «длинных» веб-задач) со средним результатом 87,4%, опережая computer-use-агентов от OpenAI, Anthropic, Google и Microsoft.

Как решать проблемы с продакшеном

В FAQ проекта отдельно предупреждают: Chrome прожорлив по памяти, и держать много параллельных агентов на своей инфраструктуре — не самая тривиальная задача. Для этого и существует облако — с масштабируемой браузерной инфраструктурой, управлением памятью, ротацией прокси и стелс-фингерпринтингом «из коробки».

Для авторизации в открытой версии на практике есть три пути: переиспользовать существующий профиль Chrome с уже сохранёнными логинами, использовать временные почтовые ящики (например, AgentMail) для одноразовых аккаунтов, либо синхронизировать локальный авторизационный профиль с удалённым браузером через отдельную утилиту profile-use.

Коротко: что нужно знать

  • browser-use — открытая (MIT) библиотека и CLI-скилл на Playwright, которая даёт LLM-агенту управлять настоящим Chromium-браузером: клики, ввод текста, формы.
  • Два режима использования: CLI-скилл для уже существующего агента (Claude Code, Codex, Cursor и другие) и Python-библиотека для написания своей автоматизации.
  • Модель подключается через ChatBrowserUse(model='provider/model') — один ключ даёт доступ к 15+ провайдерам, либо к собственной оптимизированной модели bu-*.
  • Из коробки — кастомные инструменты через @tools.action, структурированный вывод по Pydantic-схеме, безопасная работа с логинами/паролями через sensitive_data, ограничение доменов через allowed_domains.
  • По собственным бенчмаркам занимает первое место в лидерборде Odysseys среди агентов для длинных веб-задач.

Источник: официальный репозиторий github.com/browser-use/browser-use, документация docs.browser-use.com.

$ cd ../ ← назад к GitHub

$ nav --prev

ChatGPT-подписка в Codex: разбор codex-chatgpt-web и codex-with-chatgpt

$ nav --next