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», «сравни три ноутбука и сделай таблицу с ценами».
Для установки достаточно вставить агенту такой промпт — он сам всё настроит:
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+:
uv add browser-use
# или: pip install browser-use
API-ключ модели кладётся в .env:
# .env
BROWSER_USE_API_KEY=your-key
# GOOGLE_API_KEY=your-key
# ANTHROPIC_API_KEY=your-key
Минимальный рабочий агент:
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:
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:
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:
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 разбирается независимо от того, отчитался ли агент об успехе: если он сообщил о неудаче, ответ всё равно возвращается — но помечается как незавершённый, а не как чистый успешный результат.
Работа с чувствительными данными
Логины и пароли можно передать так, что модель никогда не увидит их реальные значения — она получает только плейсхолдер-ключи, а сама библиотека уже на уровне браузера подставляет настоящее значение:
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 у объекта браузера:
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-запрос:
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.