browser-agent
Autonomous Browser Agent — без скриншотов
Агент управляет реальным Chromium через Playwright, а решения принимает LLM на основе
структурного текстового снимка страницы (ref | role | name | состояния), а не картинок.
Vision-модель не нужна, скриншоты не делаются ни на одном шаге.
Три режима работы из одной кодовой базы:
Режим | Как включается | Зачем |
Локально, видимый браузер |
| отладка, визуальный контроль |
Твой реальный Chrome по CDP |
| живые сессии, лучший фингерпринт |
VPS headless 24/7 |
| автономная работа по очереди задач |
Архитектура
Файл | Назначение |
| JS-инжект: обход DOM + open Shadow DOM + iframes, отбор видимых интерактивных элементов, |
| сессия Playwright (headless/headful/CDP, stealth-init, прокси, блокировка картинок) и исполнитель 14 действий |
| планировщик: Anthropic / OpenAI-совместимые / Ollama, строгий JSON-протокол действий |
| LangGraph-цикл |
| CLI: |
| MCP-сервер: 13 инструментов браузера для Claude Code / Cursor / своего оркестратора |
| запуск твоего Chrome с отладочным портом (Linux/macOS и Windows) |
| образ на базе |
Related MCP server: Playwright MCP Server
1. Установка на локальный комп
git clone https://github.com/maxmkab/autonomous-browser-agent.git
cd autonomous-browser-agent
python -m venv .venv
source .venv/bin/activate # Windows: .venv\\Scripts\\activate
pip install -r requirements.txt
playwright install chromium
cp .env.example .env # вписать ANTHROPIC_API_KEYПроверка без трат на LLM — посмотреть, что именно видит модель:
python main.py snapshot --url https://example.comЗапуск задачи с видимым браузером:
HEADLESS=false python main.py run \
--task "Найди раздел с ценами и извлеки все тарифы через extract" \
--url https://example.com \
--json state/report.json2. Встраивание в твой реальный браузер (CDP)
Агент может работать не в своём чистом Chromium, а в твоём Chrome — с живыми сессиями, расширениями и настоящим фингерпринтом. Никакие расширения ставить не нужно — управление идёт по Chrome DevTools Protocol.
# 1) запустить Chrome с открытым портом (отдельный профиль для агента)
chmod +x scripts/chrome-cdp.sh
./scripts/chrome-cdp.sh 9222 # Windows: scripts\\chrome-cdp.bat 9222
# 2) в другом терминале отдать задачу агенту в этом же браузере
CDP_URL=http://127.0.0.1:9222 python main.py run --task "..."В этом режиме агент не трогает storage_state.json: сессии берутся из профиля Chrome.
Первый запуск — залогинься в нужных сервисах руками, дальше профиль их помнит.
3. Встраивание в Claude Code / Cursor через MCP
mcp_server.py поднимает MCP-сервер со stdio-транспортом. Инструменты:
browser_open, browser_snapshot, browser_click, browser_type, browser_select,
browser_check, browser_scroll, browser_press, browser_back, browser_tabs,
browser_save_session, browser_run_task, browser_close.
Конфиг для Claude Code (~/.claude.json или .mcp.json в корне проекта):
{
"mcpServers": {
"browser-agent": {
"command": "/absolute/path/autonomous-browser-agent/.venv/bin/python",
"args": ["/absolute/path/autonomous-browser-agent/mcp_server.py"],
"env": {
"HEADLESS": "false",
"CDP_URL": "http://127.0.0.1:9222",
"ANTHROPIC_API_KEY": "sk-ant-...",
"REQUIRE_APPROVAL": "true"
}
}
}
}Или одной командой:
claude mcp add browser-agent -- /absolute/path/.venv/bin/python /absolute/path/mcp_server.pyПосле этого модель в Claude Code ведёт браузер циклом
browser_snapshot → browser_click → browser_snapshot, получая только текстовые снимки.
Сессия браузера живёт между вызовами, поэтому сценарий можно вести шаг за шагом.
Для полной автономии есть browser_run_task — агент сам крутит цикл и возвращает JSON-отчёт.
4. Перенос авторизации на сервер
# локально, в видимом окне: залогинился → Enter в консоли
HEADLESS=false python main.py login --url https://site.ru/login
# переносим cookies + localStorage на сервер
scp state/storage_state.json root@YOUR_VPS_IP:/opt/browser-agent/state/5. Деплой на VPS (Ubuntu 24.04 + Docker)
mkdir -p /opt/browser-agent/state && cd /opt/browser-agent
git clone https://github.com/maxmkab/autonomous-browser-agent.git .
cp .env.example .env && nano .env
docker build -t browser-agent .
docker run -d --name browser-agent --restart unless-stopped \
--shm-size=1g \
--env-file .env \
-v /opt/browser-agent/state:/app/state \
browser-agent--shm-size=1g обязателен: Chromium в контейнере с дефолтными 64 МБ /dev/shm падает
на тяжёлых страницах.
Разовая задача на сервере:
docker exec -it browser-agent python main.py run --task "..." --url https://...Без Docker (systemd)
apt update && apt install -y python3-venv
cd /opt/browser-agent && python3 -m venv .venv && . .venv/bin/activate
pip install -r requirements.txt
playwright install --with-deps chromium/etc/systemd/system/browser-agent.service:
[Unit]
Description=Autonomous browser agent
After=network-online.target
[Service]
Type=simple
WorkingDirectory=/opt/browser-agent
EnvironmentFile=/opt/browser-agent/.env
ExecStart=/opt/browser-agent/.venv/bin/python main.py daemon --interval 300
Restart=always
RestartSec=10
StandardOutput=append:/var/log/browser-agent.log
StandardError=append:/var/log/browser-agent.log
[Install]
WantedBy=multi-user.targetsystemctl daemon-reload && systemctl enable --now browser-agent
journalctl -u browser-agent -f6. Постановка задач и n8n
Демон читает state/tasks.jsonl — одна строка = одна задача:
{"id":"price-check-1","task":"Открой карточку товара, извлеки цену и наличие через extract","url":"https://site.ru/item/123"}
{"id":"lead-form","task":"Заполни форму заявки: имя Иван, телефон +79990000000. Отправку подтвердит человек."}Результаты пишутся в state/results.jsonl с полями success, result, extracted,
steps, tokens_in/out и полной трассой history. n8n может писать задачи в этот файл
(нода Execute Command / SSH) и читать результаты.
7. Экономия токенов
Никаких скриншотов: только текст, без vision-модели.
Фильтрация DOM: в контекст идут лишь видимые интерактивные элементы с непустым именем, максимум 250 на фрейм.
Блокировка картинок/шрифтов/медиа на уровне сети (
BLOCK_MEDIA=true).Сжатие истории (
HISTORY_WINDOW): полные снимки только для последних шагов, старые сворачиваются вaction → result.Детект зацикливания: если fingerprint снимка не меняется, модели даётся указание сменить стратегию.
8. Безопасность
Действия, попадающие под RISKY_PATTERNS (оплата, купить, заказать, удалить, отправить,
checkout, pay, delete), требуют подтверждения: в консоли локально или ответом «да» в Telegram
на сервере (APPROVAL_MODE=telegram). ALLOW_EVAL=false по умолчанию запрещает выполнение
произвольного JS. Все ошибки действий возвращаются модели как observation и не роняют процесс.
Секреты хранятся только в .env, который исключён из git.
9. Проверка перед продакшеном
python main.py snapshot --url <целевой сайт>— нужные элементы попадают в снимок?Прогон задачи локально в headful с
REQUIRE_APPROVAL=true.Та же задача локально в headless — ловит различия рендеринга до деплоя.
Только потом деплой на VPS и запуск демона.
Лицензия
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables direct browser control via Chrome DevTools Protocol, supporting navigation, interaction, content extraction, and screenshots through a single MCP tool.1341MIT
- FlicenseNot gradedqualityCmaintenanceEnables browser automation through the MCP protocol, allowing AI agents to control a real browser using accessibility snapshots and natural language commands.
- AlicenseNot gradedqualityBmaintenanceEnables Codex to control a visible Chromium browser via MCP tools for navigation, page inspection, and interaction, while keeping sensitive steps like login and captcha under the user's control.31MIT
- AlicenseAqualityBmaintenanceBrowser automation MCP server that uses a real browser to give agents eyes and hands—open pages, click, fill, screenshot, and run scripts via accessibility-tree snapshots.22MIT
Related MCP Connectors
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/maxmkab/autonomous-browser-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server