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

🤖 Wbrowser

あなたのAIには、ログインの向こう側にあるものは何も見えません。これを解決するのがこのツールです——あなたが実際に使っているOS上で。

アシスタントはウェブを検索できますが、受信トレイもダッシュボードも、会社の社内ツールも開けません。役に立つものはすべて、アシスタントが持っていないサインインの向こう側にあるからです。

Wbrowserは、あなた自身のChrome——すでにサインインしているそのChromeの席を用意します。同じウィンドウ、同じタブです。クリックが正確に作用する様子を見守りながら、作業の途中でマウスを取り戻せるのもポイント。

パスワードがあなたの手を離れることはありません。 ログインは手動で行い、Chromeがそれを保持します。Wbrowserは、すでに開いているウィンドウを操作するだけです。

対応しているのは Windows・macOS・Linux・WSL。それぞれ実機で、別々のマシン、その部分を書いた人物以外の誰かによって検証済みです。

プラットフォーム

Chrome

検証

Windows 10

151

別マシン・別オペレーター — E2E確認を含む

macOS 15

151

別マシン・別オペレーター

Linux (ヘッドレス)

148

別マシン・別オペレーター — セキュリティレビューを含む

WSL2

151

メンテナー

検証日: 2026-08-24。すべての機械がすべての環境で走ったわけではありません。詳細は プラットフォーム別ノート を参照してください。

JavaScript・Python・シェルで、約2,600行。MITライセンス。午後に読み終えられる小ささで、自分向け書き変えられます。

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

check License: MIT ![Node](https://img.shields.io/badge/node-%E2%89%A5B greenuwthon) Platforms Windows


なぜこれが存在するのか

AIブラウザというものは、どれも同じ形をしています。新しいブラウザをインストールし、その中にアシスタントが内蔵されています。AsideCometDiaのよさに。

その形には、3つの代償があります:

それらの形

かかるコスト

新しいブラウザを入れる

新しいプロファイル・新しいログイン・新しいデフォルト設定

アシスタントがブラウザの中にいる

あなたのセッションは他人のビルドの中に置かれる

プラットフォームはそこが選ぶ

今のAsideとDiaはmacOS専用

私たちは逆の構成にしました。 新しいブラウザはいりません。おなじみのChrome、おなじみのログインで、アシスタントは あなたが見つめている、そのウィンドウ の中で動きます。クリックが決着するのを見ながら、途中でマウスを奪還できます。移行するものも引き渡すものも、一切なし。

その選択ゆえに、Windows・macOS・Linux・WSLで動いているのです。それぞれのブラウザを用意しなくて済むから、プラットフォームを選ぶ必要もなかった、ということです。

必要なものは、自分の手で作れ。

というのがすべての発想としてです。誰かのロードマップを待つ製品ではなく、あなたが使っているマシンの中で、サインイン済みのそのブラウザの中で、自分専用に動かす小さなツール。JavaScript・Python・シェルで書かれた約2,600行のコード。午後ひとつで読み、自分仕様に変えられます。

Wbrowserは Windows・macOS・Linux・WSL を対象にしています。「今どのOSを使っているか」という他人が、自分のブラウザを自動化できない理由になってはいけないからです。

計測は、macOS・Linuxネイティブ・WSL2・Windowsネイティブで行われました。ただしすべてのチェックがすべてのプラットフォームで実行されたわけではありません(プラットを参照)。


Related MCP server: Chrome DevTools MCP

これは何か。

多くの自動化ツールは、AIにまっさらな新しいブラウザを与えます。するとメールやダッシュボード、ましてログインの内側にあるものは見えません。パスワードを渡すか、全サービスAPI連携を設定するしかないのです。

Wbrowserはこれの逆を行く: 普通のChromeのウィンドウで、あなたが手で一度だけログインします。 それ以降は、あなたのターミナル(またはAIアシスタンド)がその正確なウィンドウを、すべてにログイン済みの状態のまま操れるのです。

./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に一度だけログインすれば:

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を使う2つの内部業務システムまで通りました。それらは個別にはログインしていません。残りの(GitHub、Reddit、銀行風ポータル)は一度ずつ手でログインし、それ以来ずっと維持されています。

つまりセットアップコストはおおよそ、Googleログインが1回と、Googleを使わないサービスに1回ずつ。それだけです。以後、あなたのエージェントはそのすべてに到達できます。

🔴 その反面、"このブラウザを操作できた人物は、そのすべてのサイトで操作できてしまう"という事です。フル詳細は セキュリティ にあります。

やってくれないこと

  • パスワードを要求したり保存したりしない。 あなたがログインし、Chromeが保存する。Wbrowserはすでに開いているウィンドウを扱うだけ。type が何を打ったかはログに残さない。

  • Cookieの値を表示しない。 表出力にもログにも出さない。Cookie ログインそのもののからです。

  • どのアカウントを指すかを推測しない。 開いていないアカウントを指定すると失敗する。間違ったアカウントからメールを送らせるより、エラーの方がましです。

  • スケジュールになった submit / pay / delete をクリックする。 無人ジョブは、そのジョブが明示的に許可しない限りこれらの操作を拒否する。cron jobsがおかしくなっても、誰も見ていません。

私たちが測定し、正直に伝える、ひとつの制限

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

ヘッドレスサーバー(ディスプレイなし): Wbrowser は $DISPLAY がないことを検出して自動的にChromeをヘッドレス起動します。無理やり指定する場合は WBROWSER_HEADLESS=1 または =0 を使ってください。画面がないと手でログインはできません。デスクトップマシンからセッションを移すには ./sync-session.sh import を利用してください。

Windows ユーザー: WSLの内側で実行するか、Windows上で node を直接使ってください。両方とも機能します。プラット 参照。


なぜ専用Chromeウィンドウなのか

Chrome 136(2025年3月)以降、デフォルトプロファイルディレクトリで --remote-debugging-port無視 されます。この変更がされたのは、攻撃者がリモートデバッグを利用してCookieを盗んでいたためです。

したがって、デフォルト以外の --user-data-dir必須 です。Wbrowserは ~/.wbrowser にそれを作り、そこからChromeを起動します。

つまり、既存のログインは引き継がれません。 新しいウィンドウで一度ログインすれば、それ以降そちらに残り続けます。

⚠️ Chromeのプロファイルフォルダをコピーしても、うまくいきません。実際に試しました: 685個のCookieが3個になり、セッションCookieもすべて失われました。Chromeは認識できないプロファイルを無効扱いします。新規にログインしたください。1分ほどで、確実に動きます。


コマンド

./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 でした。read は最初から正しいを教えていたんです)


やり方を指示するのは、アシスタントにさせる

接続ができたら、コマンドを打つのをやめて、やりたいことを伝えます:

"ダッシュボードを開いて、今日の数字をまとめて" "あのショッピングサイトのカートを調べて" "あの予約が実際に完了しchannelられるか確認して"

接続には Model Context Protocol を使います。あなたのアシスタントがMCP(Claude、Cursorなど)を対応しているなら、設定は数行で完了です。

ローカル (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 browser_press browser_eval browser_console browser_screenshot browser_tabs browser_status

🔴 リモートサーバーは、トークンなしでは起動しません。 これはオプションではありません。このブラウザはあなたの全ログインを保持しているのです。ポートに到達できた人は、あなたになるということです。


エージェントが操作する前に知ってつのこと

これは実際にこのプロジェクトを組み込みながら失敗した事に基づく教訓です。Wbrowserを登録スキル・プロンプトを作る場合は、これを入れてください:

  1. セレクターを推測しないこと。 browser_read はページ上の正確なセレクターを返します。私たちは検索ボックスについている input[name=q] を推測しました。実は textarea でしたし、read がずっと正しいを言ってくれていました。

  2. 送信前にフォームを読み返すこと。 一括入力フォームで、2〜10行目の顧客フィールドが空でした。「保持」のチェックボックスがそこまでカバーしていなかったんです。各行を読んでからクリックを踏み出したので発相して済みましたが、先にクッリクしたら壊れたレコードを9件作るところでした。

  3. 繰り返すときは逐一数えること。 Enter を8回連続送信したら、40行が生成されました。ページの処理が想定より早いからです。1回押してその結果を認め、また押す、を目標まで届くまで続ける。

  4. フレームワーク系フォームでは、evaltype に勝る。失敗したら typeeval に勝る。 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

2 9 * * 1-50分、9時、平日 の意味です。5フィールド標準cron構文。

取り返しのつかない操作はデフォルトで止まる

無人自動化では、失敗時に誰も着跡を見ていません。なのでsubmit / payment / 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秒間の操作が無いとフェードアウトします。だから "in control" は、いま を意味します。色はエージェント名からそのエージェントごとに異なります。複数でも一目で区別できます。

タブのプレフィックスはページ遷移後も消え続けます。SPA のようページが自身のタイトルを書き換えるつど、MutationObserver が再適用するためです。


複数アカウント

同じウィンドウで複数のChrome profileを開いておくと(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は推測しないで 失敗 します。誤ったアカウントから送信するのは、エラーメッセージより問題です。


プラットフォーム別ノート

OS

Chrome の自動検出

Windows

Program Files, AppData, Edge fallback

macOS

/Applications/Google Chrome.app, Chromium, Edge

Linux

google-chrome, chromium, snap, Edge

WSL

Windows版Chromeを最初に使ってください(実際に使うブラウザ)

検出されない場合は `WBROWSER_CHROME=/path/to/chRom** に指定してください。

実機でテスト済み (2026-08-24):

プラットフォーム

Chrome

検証者

そこで測定された内容

macOS 15

151

別のオペレーター

起動・エンジン・CLI・状態パス

Linux (ネイティブ, ヘッドレス)

148

別のオペレーター

上記 + セキュリティレビュー

WSL2 + Windows Chrome

151

メンテナー

上記

Windows 10 (ネイティブ)

151

別のオペレーター

上記 + エンドツーエンド

すべてのチェックがすべてのプラットフォームで実施されたわけではありません。セキュリティレビュー(トークンなしでのMCP拒否をssで確認、エンジンがループバック外からは到達不能)は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が存在し、すべてのインターフェースにバインドしてしまいます。コードは警告を出力しますが、その時点でポートはすでに開いています。信頼できるプライベートネットワーク(VPN/tailnet)にいる場合を除き、127.0.0.1を使用し、常にトークンを使用してください。

  • 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はパスワードと同程度に機微です — 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チェックは構文といくつかの不変条件のみ。実際のブラウザに触れるところはすべて、4つのプラットフォームで手動で測定しました。それではスケールはしません。これは、コントリビューターが追加できる最も有用なものです。

  • 自然言語ループは組み込まれていません。 エージェントがセレクタを選びますが、readが実際のセレクタを提供するので、推測する必要はありません。

  • Chrome/Chromium のみ。 Firefox には CDP がありません。

  • CDPポート1つ分=Chromeプロセス1つ。 そのウィンドウ内から開かれたプロファイルは表示されます。ですが、すでに別に起動した Chrome は表示されません。


コントリビューションとセキュリティ

  • CONTRIBUTING.md — このコードを形作ったルール、およびテスト方法

  • SECURITY.md — 🔴 脅威モデル。共用マシンで実行する前に必ず読んでください。Chrome デバッグポートには認証がないため、あなたと同じ権限で実行されたローカルプロセスがあなたのセッションを操作できてしまいます。

セキュリティ上問題を見つけた場合は、公開の Issue ではなく非公開セキュリティアドバイザリを開いてください。

ライセンス

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