Wbrowser
Official🤖 Wbrowser
Ваш ИИ ничего не видит за экраном входа. Wbrowser это исправляет — на той ОС, которую вы действительно используете.
Ваш ассистент умеет искать в интернете, но не может открыть вашу почту, ваш дашборд или внутренний инструмент компании. Всё полезное обычно скрыто за входом, которого у него нет.
Wbrowser даёт ему доступ к вашему собственному Chrome — тому, в который вы уже вошли. То же окно, те же вкладки. Вы видите, как каждый клик находит свою цель, и можете забрать мышь в середине задачи.
Ваш пароль никогда не покидает вас. Вы входите вручную; Chrome его хранит; Wbrowser просто управляет уже открытым окном.
Работает на Windows, macOS, Linux и WSL — каждая платформа проверена на реальном оборудовании, на отдельной машине и человеком, который не писал эту часть:
Платформа | Chrome | Кто проверил |
Windows 10 | 151 | другая машина и другой оператор — включая end-to-end |
macOS 15 | 151 | другая машина и другой оператор |
Linux (headless) | 148 | другая машина и другой оператор — включая ревизию безопасности |
WSL2 | 151 | мейнтейнер |
Измерено 2026-08-24. Не все проверки запускались везде — подробности в Примечаниях по платформам.
Около 2 600 строк кода на JavaScript, Python и shell. MIT. Достаточно мало, чтобы прочитать за полдня и переделать под себя.
Зачем это существует
Все ИИ-браузеры устроены одинаково: вы устанавливаете новый браузер со встроенным ассистентом — Aside, Comet, Dia. Такая схема обходится вам в три вещи:
Их схема | Чем это обходится |
Новый браузер для установки | Новый профиль, новые пароли, новые настройки по умолчанию |
Ассистент живёт внутри | Ваши сессии лежат в чужой сборке |
Платформу выбирают они | Aside и Dia сегодня работают только на macOS |
Мы выбрали обратный путь. Никакого нового браузера — обычный Chrome, ваши существующие входы, а ассистент работает в том самом окне, на которое вы смотрите. Вы видите каждый клик и можете перехватить мышь на середине задачи. ничего мигрировать или передавать не нужно.
Именно этот выбор объясняет, почему Wbrowser работает на Windows, macOS, Linux и WSL: нам не пришлось создавать отдельный браузер для каждой платформы, поэтому и платформу выбирать не было.
Что-то нужно? Сделайте это.
В этом вся идея. Не продукт, ждущий чужого плана, а маленький инструмент, который принадлежит вам, на машине, которой вы уже пользуетесь, в браузере, где вы প্রতিদিন уже авторизованы. Около 2 600 строк JavaScript, Python и CSS — мало настолько, что его можно прочитать за день. Читайте, редактируйте, делайте своим.
Wbrowser работает на Windows, macOS, Linux и WSL — потому что «какая у вас ОС?» было чувство для запрета автоматизации своего браузера. Измерено на macOS, обычном Linux, WSL2 и обычном Windows — хотя не каждый тест запускался на каждой платформе (см. Примечания по платформам).
Related MCP server: Chrome DevTools MCP
Что это?
Большинство инструментов автоматизации дают вашему ИИ чистый, пустой браузер. Поэтому он не видит вашу почту, ваши панели управления или всё, что находится за входом, — если вы не отдадите пароли панели или не создадите API-интеграцию для каждого сервиса.
Wbrowser применяет противоположный подход: вы один раз вручную входите в обычное окно Chrome. После этого ваш терминал (или ваш ИИ-ассистент) может управлять именно этим окном — уже авторизованным, везде.
./wb go https://mail.example.com # opens in YOUR logged-in session
./wb read # tells you what's on screen
./wb click '#compose' # clicks itWbrowser никогда не видит ваши пароли. Вы вводите их сами; Chrome их хранит; Wbrowser просто управляет уже открытым окном.
Один вход часто открывает многие сайты
Этото делает настройку ценной. Войдите в тот один раз в этом окне — и:
Google itself google.com · youtube.com · your Workspace apps
Sites using Google SSO your CRM, your booking system, your dashboards —
whatever "Sign in with Google" reaches
Everything else log in by hand once; it staysПроверено на реальном профиле: один вход в Google потянул за собой YouTube и две внутренние бизнес-системы, использующие Google SSO, — ни в одну из них не вучали отдельно. Остальные (GitHub, Reddit, банк-онлайн) были один раз и с тех пор сохранились.
Поэтому стоимость настройки примерно такая: один вход в Google плюс один вход для всего, что с Google не работает. После этого ваш агент имеет доступ к gracи.
🔴 Обратная сторона медали — тот же факт: тот, кто может управлять этим браузером, может действовать на любом из этих сайтов. Смотрите Безопасность.
Что он не делает
Не запрашивает и не хранит ваш пароль. Вход вы делаете сами; Chrome его сохраняет; Wbrowser только управляет открытым окном.
typeникогда не записывает, что было введено.Не выводит значения cookie. Ни вывод, ни печатает в логи — потому что cookie и есть вход в систему.
Не угадывает нужный вам аккаунт. Назовите аккаунт, который не запущен, — и операция не выполнится. Отправка письма с неверного аккаунта хуже, чем сообщение об ошибке.
Не щёлкает по submit / pay / delete по расписанию. Автоматические и unattended запуска отказывают в этих шагах, если только сам задача не даётся, прав. В момент сбоя cron-задачи рядом никого не смотрит на нее.
Один недодат, который мы измерили и о котором вам честно
У отладочного порта Chrome нет авторизации. Любой процесс, выполняющий от вашего имени, может подключиться и управлять вашими сессиями — мы это проверили, подключившись из постороннего процесса и список открытых вкладок. 127.0.0.1 — не барьер; это значит « весь, что работает за вас, попадает внутрь».
Это решение Chrome, не наше изобретение, и любой инструмент такого класса наследуется. Лучше мы вам прямо пропишем, чем потом будет которырваться — см. по безопасности Безопасность.
Быстрый старт
git clone https://github.com/<you>/Wbrowser.git
cd Wbrowser
# Wbrowser drives your *system* Chrome, so Playwright's own browser
# download is unnecessary — skip it and save ~400MB:
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm install
node launch.js # 1. opens a dedicated Chrome window
# 2. log into your sites in that window (by hand!)
node engine.js # 3. start the control engine
./wb go https://example.comВот и всё. Шаг 2 — единственный шаг, который вы делаете вручную.
Если
./wbотвечает «Permission denied» — бит исполнения не уцелел после клонирования (некоторые системы его стрипают). Исправьте один раз:chmod +x wb install.sh autostart.sh sync-session.sh
Серверы headless (без монитора): Wbrowser сам определяет отсутствующую переменную
$DISPLAYи автоматически запускает Chrome в этом режиме — либо принудительно черезWBROWSER_HEADLESS=1или=0. При большом учтите: без экрана нельзя бы войти вручную — используйте./sync-session.sh import, чтобы перенести сесии с настольной трубной.
Пользователям Windows: запускайте эти команды внутри WSL или используйте
nodeнапрямую в Windows — оба способа работает. См. Примечания по платформам.
Зачем отдельное окно Chrome?
Начиная с Chrome 136 (март 2025), флаг --remote-debugging-port игнорируется для стандартной папки профиля Chrome. Google внёс это изменение, потому что злоумышленники использовали удалённую отладку для кражи cookie. Поэтому аргумент --user-data-dir без дефолта теперь обязателен. Wbrowser создаёт его в ~/.wbrowser и запускает Chrome от there.
Это значит, что ваши текущие входы из обычного Chrome не переносятся. Вы один раз входите в новул окне, и с тех пор вход там сохраняется.
⚠️ Копировать папку профиля безворно не сработает. Проверяли: из куки 685 осталось 1, а сессированные cookie вообще удали. Chrome блокирует нераспознанные профили. Лучше войдите заново — это отнимает минуту и работает.
Команды
./wb go <url> open a page, return its structure
./wb read summarize the current page
./wb click <selector> click an element
./wb type <selector> <text> fill an input
./wb press <key> Enter, Tab, Escape, ArrowDown…
./wb eval '<js>' run JavaScript in the page
./wb console [regex] console logs + uncaught exceptions
./wb network failed requests (4xx/5xx, CORS, timeouts)
./wb shot [file.png] screenshot
./wb tabs open tabs, grouped by agent
./wb close close only the tabs you opened
./wb status is everything up? which profile?
./wb show bring the browser window to the frontНе гадайте селекторы
./wb read выдаёт реальные клика́п скомпоненты на странице:
inputs(1):
- #searchbox_input (Search the web without being tracked)
buttons(3): Search, Sign in, SettingsКопируйте оттуда. (Однажды мы предположили, что поле поиска — input[name=q], а оказалось — textarea. Когда читаешь — всегда правильные.)
Просто скажите ассистенту, что делать
Как только связь установленная, становится не нужно печатать команды — просто описываете результат:
"Открой мою панель и сжю вот сегодняшние цифры." "Что там в корзине на сайто?" "Проверь, прошло ли бронирование."
Соединение работает через Model Context Protocol (протокол).
Локальный способ (stdio):
{
"mcpServers": {
"wbrowser": {
"command": "node",
"args": ["/path/to/Wbrowser/mcp-server.js"]
}
}
}Удалённый (HTTP):
export WBROWSER_MCP_TOKEN=$(openssl rand -hex 32)
node mcp-server.js --http --port 7982 --host 127.0.0.1Дальше просто общаетесь с ассистентом:
"Откри мою приборную панель." "Что у меня в корзине в этом магазинчике?"
Инструменты: browser_open browser_read browser_click browser_type
🔴 Без токена сервер отказывается запускаться. Он управляет браузером со всеми вашими входами; токен здесь непростая формальность. Любой, кто достучится к порту, становится вами.
Что нужно знать агенту до старта
Появившиеся на реальных ошибках при разработке. Если вы пишете свой собственный скилл или промпт на базе Wbrowser — учитывайте их:
Не гадайте ключи.
browser_readвозвращает настоящие селекторы страницы. (Правильная догадка:input[name=q]— это былtextarea, иreadговорил правду.)Читайте форму перед отправкой. В одном бъдже формы (2–10) fields с customer были пусты, потому что чекбоксы «оставить» их не покрывали. Чтение строк до клика вилёту плаху; клик бы пропускал 9 странных записей.
Считайте повторы. Ввод Enter 8 раз подряд породил 40 строк — потому что страница быстрее была, чем ожидалось. Одно нажатие, пауза, подсчёт, остановка у цели.
evalпобеждаетtypeв формах Веба, аtype— когда гибелью. React откатан от прямого присвоенияvalue— используете нативный сеттор плюс события input/change. Если не помогает —browser_typeдаёт настоящие клавиго.Проверьте, к чему вы привязались.
browser_statusпокажет, держит ли окно реальные логины. Пустой профиль отвечает на любую команду успешно, но ничего не полезного.
Спланирунные задачи (cron)
Создайте jobs/morning-check.json:
{
"schedule": "0 9 * * 1-5",
"tab": "morning",
"steps": [
{ "goto": "https://dashboard.example.com", "wait": 2000 },
{ "eval": "document.querySelector('.total').innerText" },
{ "shot": true }
]
}node cron.js list # what's registered
node cron.js next # when each job runs next
node cron.js run <name> # run once, now
node cron.js daemon # run on schedule0 9 * * 1-5 = минута 0, час 9, будние дни.
Необратимые действия по умолчанию запрещены
Автоматическое выполнение означает никто не и стоя радом, когда что-то пойдёт не так. Поэтому шаги типе submit/pay/delete отвергаются:
⛔ step 2 blocked — looks irreversible (click: #submit-payment)
If you meant it, add "allowIrreversible": true to the job file.Вы можете разрешить конкретной задаче, но не глобально.
Кто рулит? (индикатор управления)
Когда агент управляет браузером, видно сразу:
прозорачная граница и вокруг страницы с надписия:
🤖 my-agent in controlв заговору вкладки: Добавить префикс:
[my-agent] Dashboard
Граница затухает через 6 секунд бездействия — «в управлении» значит вот прямо сейчас. Цвет рамки зависит от имени агента, так что несколько агентов отличаются сразу визуально.
Омётка в заголовке вкладки сохраняются и после перехода — MutationObserver снова добавляет его при каждом перезаписи заголовка страницы (что SPA делают постоянно).
Мiniплайн и судьи
Откройте несколько профилей Chrome в одном окне (переключатель профилей в Chrome) — и Wbrowser сможет адресовать их по отдельности:
./wb -a work@example.com go https://mail.example.com
./wb windows # list open profilesИли укажи соответствие сайтов аккаунтам в accounts.json:
{
"sites": {
"mail.example.com": { "account": "work@example.com" }
}
}🔴 Если вы укажте аккаунт, который не запущен, Wbrowser не станет запускаться, а просто сделает фейл/падает. Отправить письмо с неверного адреса — хуже, чем сообщение об ошибке.
Проверено на реальном железе (2026-08-24):
Платформа
Chrome
Проверил
Что измерялось
macOS 15
151
отдельный оператор
запуск · движок · CLI · пути состояния
Linux (нативный, headless)
148
отдельный оператор
всё вышеперечисленное + проверка безопасности
WSL2 + Windows Chrome
151
мейнтейнер
всё вышеперечисленное
Windows 10 (нативная)
151
отдельный оператор
всё вышеперечисленное + сквозной прогон
Не каждая проверка выполнялась на каждой платформе. Проверка безопасности (отказ MCP без токена, подтверждённый через
ss; движок недоступен вне loopback) проходила на Linux. Сквозной прогон (/health→/act→ извлечение реальной страницы) — на Windows. UNC-пути (\\wsl.localhost\...) тоже работают — замерено, вопреки ожиданиям.Проверка безопасности проводилась на Linux, на другой машине: без токена MCP HTTP-сервер завершает работу и никогда не открывает сокет (подтверждено через
ss); движок привязывается только к127.0.0.1и недостижим через tailnet.
Безопасность
🔴
127.0.0.1— не забор: это означает, что «любой процесс, запущенный от вашего имени, проникает внутрь». Отладочный порт Chrome (9222) не имеет аутентификации. Любой локальный процесс на этой машине — другое приложение, npm postinstall-хук, случайный скрипт — может подключиться и управлять каджым сеансом, в котором вы вошли. Проверено: посторонний процесс выполнилGET http://127.0.0.1:9222/json/listи перечислил открытые вкладки без каких-либо учётных данных. Запускайте это только на машине, где вы доверяете всем процессам, работающим от вашего имени.Движок привязан только к
127.0.0.1. Никогда не открывайте его напрямую.🔴
mcp-server.js --host 0.0.0.0существует и будет привязан ко всем интерфейсам. Код печатает предупреждение, но к тому моменту порт уже открыт. Используйте127.0.0.1, только если вы находитесь в доверенной частной сети (VPN/tailnet), и всегда с токеном.MCP HTTP-сервер требует токен и отказывается запускаться без него.
./wb typeне логирует введённое — это может быть пароль.Значения cookie никогда не печатаются, не логируются и не возвращаются ни одной командой.
Не используйте это для ввода паролей, номеров карт или государственных идентификаторов. Войдите вручную; Wbrowser переиспользует сессию.
Резервное копирование сессий
./sync-session.sh export # cookies → encrypted store
./sync-session.sh import # restore on another machine
./sync-session.sh status🔴 Cookie-файлы так же чувствительны, как пароли — они и есть вход в систему. Скрипт отказывается записывать данные, если место назначения не зашифровано по-настоящему, и отказывается восстанавливать из шифротекста, который не может расшифровать.
Переменные окружения
Переменная | По умолчанию | Назначение |
| автоопределение | Путь к исполняемому файлу Chrome |
|
| Каталог профиля |
|
| Имя профиля внутри этого каталога |
|
| Отладочный порт Chrome |
|
| Порт управляющего движка |
| авто | Имя агента, отображаемое в баннере и вкладке |
| — | Обязательный для удалённого MCP |
| — | Каталог для ежедневных рабочих журналов (необязательно) |
Автозапуск
# Linux / WSL (systemd user service)
./install.sh
systemctl --user status wbrowserДвижок запускается автоматически. Браузер нужно запускать вручную — это десктопный процесс, и момент открытия всегда должен решать вы.
Известные ограничения
Нет автоматического набора тестов. CI проверяет синтаксис и несколько инвариантов; всё, что касается реального браузера, измерялось вручную на четырёх платформах. Такой подход не масштабируется, и это самое полезное, что мот бы добавить контрибьютор.
Нет встроенного контура на естественном языке. Агент подбирает селекторы;
readпередаёт ему реальные, так что подбира не нужно.Только Chrome/Chromium. У Firefox нет CDP.
Один CDP-порт — один процесс Chrome. Профили открытые из этого окна, видны; отдельно запущенный Chrome — нет.
Вклад и безопасность
CONTRIBUTING.md — правила, заложившие в этот код, и как его тестировать
SECURITY.md — 🔴 модель угроз. Прочитайте её, прежде чем запускать это на общей машине: отладочный порт Chrome не имеет аутентификации, поэтому любой локальный процесс, работающий от вашего имени, может управлять вашими сессиями.
Нашли проблему с безопасностью? Откройте закрытое сообщение, а не публичный issue.
License
MIT — см. LICENSE.
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
- AlicenseAqualityCmaintenanceEnables AI coding assistants to control and inspect a live Chrome browser for automation, debugging, performance analysis, and screenshot capture through Chrome DevTools.262,211,1043Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables AI coding assistants to control and inspect a live Chrome browser for automation, debugging, performance analysis, network monitoring, and DOM interaction through Chrome DevTools Protocol.2,211,104Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to control and automate your Chrome browser directly, leveraging existing login states and configurations for tasks like content analysis, semantic search across tabs, screenshots, network monitoring, and interactive operations.10MIT
- AlicenseNot gradedqualityCmaintenanceLets AI assistants control your real Chrome browser to perform web tasks like reading pages, taking screenshots, clicking, and typing, using your existing logged-in sessions.131MIT
Related MCP Connectors
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Live browser debugging for AI assistants — DOM, console, network via MCP.
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
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/w-partners/Wbrowser'
If you have feedback or need assistance with the MCP directory API, please join our Discord server