Skip to main content
Glama
w-partners
by w-partners

🤖 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. Достаточно мало, чтобы прочитать за полдня и переделать под себя.

English · 한국어 · 中文 · Español

check License: MIT Node Platforms Windows


Зачем это существует

Все ИИ-браузеры устроены одинаково: вы устанавливаете новый браузер со встроенным ассистентом — 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 it

Wbrowser никогда не видит ваши пароли. Вы вводите их сами; 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 — учитывайте их:

  1. Не гадайте ключи. browser_read возвращает настоящие селекторы страницы. (Правильная догадка: input[name=q] — это был textarea, и read говорил правду.)

  2. Читайте форму перед отправкой. В одном бъдже формы (2–10) fields с customer были пусты, потому что чекбоксы «оставить» их не покрывали. Чтение строк до клика вилёту плаху; клик бы пропускал 9 странных записей.

  3. Считайте повторы. Ввод Enter 8 раз подряд породил 40 строк — потому что страница быстрее была, чем ожидалось. Одно нажатие, пауза, подсчёт, остановка у цели.

  4. eval побеждает type в формах Веба, а type — когда гибелью. React откатан от прямого присвоения value — используете нативный сеттор плюс события input/change. Если не помогает — browser_type даёт настоящие клавиго.

  5. Проверьте, к чему вы привязались. 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 schedule

0 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-файлы так же чувствительны, как пароли — они и есть вход в систему. Скрипт отказывается записывать данные, если место назначения не зашифровано по-настоящему, и отказывается восстанавливать из шифротекста, который не может расшифровать.


Переменные окружения

Переменная

По умолчанию

Назначение

WBROWSER_CHROME

автоопределение

Путь к исполняемому файлу Chrome

WBROWSER_PROFILE_DIR

~/.wbrowser

Каталог профиля

WBROWSER_PROFILE

Default

Имя профиля внутри этого каталога

WBROWSER_CDP_PORT

9222

Отладочный порт Chrome

WBROWSER_PORT

7981

Порт управляющего движка

WBROWSER_AGENT

авто

Имя агента, отображаемое в баннере и вкладке

WBROWSER_MCP_TOKEN

Обязательный для удалённого MCP

WBROWSER_NOTES

Каталог для ежедневных рабочих журналов (необязательно)


Автозапуск

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

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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,104
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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.
    10
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Lets 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.
    131
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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