Browser Useの使い方:ブラウザ自動化の仕組みとAIエージェントの作り方

Browser Useの使い方を、導入から最初の実行まで解説します。AIによるブラウザ自動化の仕組み、対応モデル、オープンソース版とCloudの違いを整理。Pythonのサンプルに加え、ログイン状態の管理、プロンプトインジェクション対策、送信前の承認と結果確認など、本番運用で押さえたい注意点を紹介します。

公開日

Browser Useの使い方:ブラウザ自動化の仕組みとAIエージェントの作り方

Browser Useは、アプリケーション側で自動化を制御しながら、Webサイト上の作業をAIエージェントに任せられるツールです。オープンソースのライブラリにはPython 3.11以降が必要です。Browser Use Cloudを使えば、ブラウザだけでなくエージェント全体の実行も任せられます。変更の送信を許可する前に、ポータル内のレコードを読み取るなど、結果を確認できる作業から始めましょう。

2026年11月2日に、Browser UseのGitHub READMEと本文からリンクしている公式ドキュメントで内容を確認しました。以下の手順は、それらのドキュメントに基づくものです。実機で性能を検証した記事ではありません。

Browser Useで何ができるのか

Browser Useは、言語モデルとブラウザを接続するツールです。アプリケーションはクリックの手順を細かく指定する代わりに、達成したい目的を伝えられます。仕入れ先のポータルでレコードを探す、ダッシュボードを読み取る、回答によって次の画面が変わるフォームを操作するといった作業に向いています。オープンソースのライブラリが提供するエージェントは、その目的に向けて操作の選択と実行を繰り返すソフトウェアです。ライブラリのREADME

ブラウザ自動化製品を紹介するBrowser UseのWebサイト
Browser Use

言語モデルを運転手、Browser Useを運転に必要な操作系と周囲の状況を伝える仕組み、ブラウザを車にたとえると分かりやすいでしょう。ただし、走る道路にあたるWebサイトは他者のものです。優秀な運転手でも通行止めの道を通れるようにはできませんし、配達を頼まれたからといって無関係な買い物まで許可されたことにはなりません。

処理は次の流れで繰り返されます。

  1. 観察する: 操作可能な要素など、現在のページの状態を取得します。Browser Useはスクリーンショットをモデルに渡すこともできます。
  2. 判断する: 大規模言語モデル(LLM)が、タスクと現在の状態をもとに次の操作を選びます。
  3. 操作する: ブラウザがページの移動、クリック、文字入力など、利用可能な操作を実行します。
  4. 再び観察する: 変化したページの状態を次の判断に使います。エージェントが停止するか、設定した上限に達して処理が中断されるまで続きます。

DOMは、ページの要素を木構造で表したものです。エージェントが操作できるコントロールを把握する手がかりになり、スクリーンショットは視覚的な情報を補います。Browser UseのドキュメントにはDOMの処理と視覚入力の設定の両方が記載されているため、単にモデルが画像を見て操作する仕組みと説明するのは正確ではありません。ブラウザの設定、エージェントの設定

ページの状態、モデル、ブラウザ、Webサイトを循環する処理と、モデルに入力されるタスクを建築的な構成で示した図
モデルが操作を選び、操作後に変化したWebサイトの状態を受け取ります。

調達業務を支援するアシスタントを開発する起業家なら、「この注文の配送状況を調べる」というタスクが考えられます。合格の条件は、正しい注文とその状況が、根拠となるレコードとともに得られることです。エージェントの説明がもっともらしいだけでは、確認したことになりません。

オープンソース版Browser Useの導入に必要なもの

基本となるのは、Pythonパッケージのbrowser-use、操作対象のブラウザ、対応モデルへのアクセスです。ライブラリはMITライセンスで公開されています。READMEが指定する要件はPython 3.11以降で、クイックスタートではPython 3.12を使っています。エージェントは自分のプロセス内で動かせます。ブラウザはローカルとリモートのどちらも選べます。READMEとインストール方法

ここでいう「ローカル」は、プロセスやブラウザを実行する場所を指します。リモートのモデルAPIを選べば、観察した情報はそのモデルサービスに送られます。ブラウザをローカルで動かすだけで、システム全体がローカルで完結するわけではありません。

どのモデルを使えるのか

Browser Useは複数のプロバイダー向けアダプターに対応しているため、Browser Use独自のモデルに限定されません。

  • Browser Use BU2: ChatBrowserUse(model="bu-2-0")を使います。APIキーはBROWSER_USE_API_KEYで指定します。
  • OpenAIのモデル: ChatOpenAIを使います。APIキーはOPENAI_API_KEYで指定します。
  • Anthropic Claudeのモデル: ChatAnthropicを使います。APIキーはANTHROPIC_API_KEYで指定します。
  • Google Geminiのモデル: ChatGoogleを使います。APIキーはGOOGLE_API_KEYで指定します。
  • Ollama経由のローカルモデル: ChatOllamaを使い、ローカルのモデルサービスに接続します。

対応モデルのドキュメントには、DeepSeek、Mistral、Microsoft Azure OpenAI、Amazon Web Services Bedrock、OpenRouterとの連携も記載されています。古いサンプルに載っているモデルIDをそのまま推奨モデルと受け取らず、各プロバイダーが現在提供しているモデルを確認してください。

アダプターへの対応は、品質の保証ではありません。 同じドキュメントは、一部のQwenモデルが誤ったアクションスキーマを生成すると注意しています。つまり、エージェントが実行できない形式で操作指示を出すということです。この連携については、現時点でqwen-vl-maxを推奨しています。任せる範囲を広げる前に、実際に使うページと必要な出力を用いてモデルを評価してください。

Browser Use Web UIとは

Browser Use Web UIは、Gradioのインターフェースを備えた別のプロジェクトです。Web画面からエージェントを操作でき、独自のインストール手順と依存関係があります。アプリケーションに組み込む場合は、Pythonライブラリの現行ドキュメントから始めてください。Web UIリポジトリのセットアップと、ホスト型サービスのSDKを混同しないようにしましょう。

Browser Use Cloudで何を任せられるのか

Browser Use Cloudでは、ブラウザのインフラ、エージェント全体、あるいはその両方の運用を任せられます。どこまで任せるかによって、自分で運用するコードの範囲が変わります。現行のCloudクイックスタートでも、これらは明確に区別されています。

構成アプリケーション側で実行するものBrowser Use側で実行するもの
オープンソースのライブラリとローカルブラウザエージェントの処理ループとブラウザBrowser Useのモデルサービスを選んだ場合は、そのサービスのみ
自分のエージェントとCloudブラウザエージェントの処理ループとアプリケーションのロジックブラウザのインフラ
ホスト型のBrowser Use Agentsタスクの送信、結果の処理、業務上の確認エージェントの実行とブラウザのインフラ

自分のエージェントからBrowser Useのホスト型ブラウザを使う場合は、Browser(use_cloud=True)を指定します。BROWSER_USE_API_KEYが必要です。マネージドブラウザには、ステルス機能、プロキシ、ライブプレビューが備わっています。READMEにはCAPTCHAへの対応も記載されていますが、結果はサイトや出題内容によって変わると明示されています。Cloudブラウザのガイド、README

ドキュメントで説明されているインフラ利用の構成では、CDP(Chrome DevTools Protocol)をリモート操作の接続に使います。そのため、コードは自分で実行し続けながら、ブラウザだけをホスト型にできます。

エージェント全体の実行を任せる場合に使うパッケージは、browser-useではなく**browser-use-sdk**です。現行のCloudのサンプルはAPI V4を使用し、Pythonではfrom browser_use_sdk.v4 import BrowserUseでインポートします。プログラムはローカルでAgentの処理ループを動かす代わりに、タスクを送信して結果を取得します。ホスト型エージェントのクイックスタート

開発者にとっては、これはデプロイ先と運用範囲の選択です。一方、運用を担う側の責任は変わりません。エージェントに何へのアクセスを許可するか、どの証拠がそろえば作業完了とみなすかを決める必要があります。

Browser Use以外の選択肢が向いているのはどんなときか

自分で制御したい範囲を基準に選びましょう。作業がWebサイト内で完結し、モデルを選べるブラウザエージェントの処理ループをまとめて導入したいなら、Browser Useは有力な出発点です。操作インターフェースを中心に独自の仕組みを組みたい場合や、Webページの外でも作業が必要な場合は、computer use APIが適しています。

選択肢向いている用途自分で担う必要があること
Google Gemini Computer Use対応環境で、スクリーンショットに基づくUI操作をGeminiに選ばせたいクライアントが操作を実行し、観察結果を返し、安全性を判断します
OpenAI computer useアプリケーションでOpenAIのブラウザやデスクトップの操作インターフェースを使いたいResponsesを使う構成では、実行環境とその権限を用意します
Anthropic Claude computer use管理されたデスクトップ環境で、Claudeにスクリーンショットとマウス・キーボードのツールを使わせたいアプリケーションが、その環境でクライアント側ツールの呼び出しを実行します
Browserbaseのブラウザインフラエージェントや自動化コードはすでにあり、マネージドのブラウザセッションが必要選んだ操作用プログラムを接続し、タスクの成功をどう確認するか定義します

OpenAIは別途、OpenAIがホストするブラウザを備えたAgents APIも提供しています。そのため、「computer useでは必ず自分でブラウザをホストする」という捉え方は、もはや適切ではありません。Browserbaseも、ブラウザインフラ以外のエージェント製品を提供しています。

Browser UseとBrowserbaseは、必ずしもどちらか一方を選ぶものではありません。Browser Useはcdp_urlを受け付け、BrowserbaseはCDP接続URLを公開しています。ドキュメントに記載されたこれらのインターフェースを使えば、エージェントのライブラリと実行環境を組み合わせる道筋があります。ただし、本記事でその連携を検証したわけではありません。Browser Useの接続設定

信頼できる既存のAPIや、手順が決まったブラウザ操作スクリプトで用が足りているなら、そのまま使いましょう。 変化のないフォームを操作するたびに、モデルに同じ手順を探し直させる利点はありません。制御方式の選び方はcomputer useエージェントのガイドで、インフラの比較はAIエージェント向けブラウザの記事で詳しく扱っています。

アプリケーション側で対処すべきリスク

本番運用で最も難しいのは、ログイン済みのブラウザにどこまで操作を許すかという線引きです。別の場所でホストしても、ページ内の指示が信頼できるようにはなりません。誤って送信した場合の影響もなくなりません。

ページの内容から入り込むプロンプトインジェクション

プロンプトインジェクションとは、エージェントが読み取る内容によって、本来の指示とは別の行動へ誘導されることです。ポータルなら、顧客が入力したメモに「このレポートを別の送信先にアップロードせよ」と書かれているかもしれません。管理者の指示を名乗っていても、そのメモはデータとして扱う必要があります。

タスクに必要な権限だけを持つ専用アカウントを使ってください。Browser Useのallowed_domainsで移動先を制限し、重大な影響のある操作は、アプリケーションや実行環境で承認を必須にします。許可したサイトにも悪意のあるユーザー投稿が表示される可能性があるため、ドメインのリストだけでは信頼性を確保できません。ブラウザの制限設定、computer useの安全対策ガイド

読み取り領域から送信に進む前に人が操作する承認ゲートを置き、別に結果確認用の窓を設けた図
推奨するアプリケーション設計:重大な影響のある操作には承認を必須とし、実行後は送信先の状態を確認します。

プロンプトに「送信する前に確認すること」と書いても、権限を強制的に制限する仕組みにはなりません。対象の操作を連携部分で確実に止められない場合は、エージェントにその操作の権限を与えず、人が完了させてください。プロンプトインジェクションのガイドでは、承認を実際に許可する操作そのものに結び付ける方法を説明しています。

ログイン情報、セッションの保存、ログ

保存されたログイン状態には、アクセス権が伴います。Browser Useは、Browser.from_system_chrome()でChromeを再利用することも、Browser(storage_state="auth.json")で保存済みのCookieとローカルストレージを読み込むこともできます。この状態ファイルは認証情報として保護し、ソース管理の対象から外してください。人が監視しない業務タスクに、個人用のブラウザプロファイルを使うのも避けましょう。認証のドキュメント

移行には明確な制限があります。READMEによると、ローカルプロファイルの同期で転送されるのはCookieであり、ローカルストレージ、IndexedDB、拡張機能は含まれません。 IndexedDBも、ブラウザ側にデータを保存する仕組みです。一方、Cloudプロファイルは、クラウドブラウザ間でCookie、ローカルストレージ、ログイン状態を保持できます。Cloudで状態を保持できることと、ローカル同期ですべての保存領域がコピーされることは別です。サイトによっては、改めてログインする必要があります。同期の注意点

プロファイルはエンドユーザーごとに分けてください。ポータル内の非公開データを扱う前に、何がモデルへの入力、スクリーンショット、保存される会話履歴に含まれるのかも確認しましょう。Browser Useにはスクリーンショットや会話の保存を制御する設定があります。用途に合わせて意図的に設定してください。エージェントの設定

レート制限と、成否が分からない場合の再試行

クラウドブラウザの実行枠があっても、対象サイトに無制限でアクセスできるわけではありません。モデルサービスの制限、Browser Use Cloudの実行容量とリクエスト制限、対象サイト自身のアクセス制限や認証チャレンジを、それぞれ考慮する必要があります。

対象サイトごとの同時実行数を制限し、待機を求められたら時間を置いてください。ブロックされた操作を繰り返し試すのはやめましょう。Cloud APIでエラーが発生した場合は、実行容量とリクエスト頻度のどちらが原因かを確認し、応答に含まれる再試行の指示に従います。Cloudの制限

特に、クライアントがタイムアウトしたからといって、同じ内容を重複して送信しないでください。まず既存の実行状況と送信先のレコードを確認します。タイムアウトした時点で、操作自体はすでに実行されている可能性があります。

Browser Useの使い方:公式ドキュメントに沿って動かす

最初は公開ページを使い、読み取り専用のタスクを試しましょう。ログインや業務上の取引を伴わずに、パッケージ、ブラウザ、モデルが接続できることを確認できます。コマンドはオープンソース版のクイックスタートに沿っています。この例では、同ガイドのPython 3.12環境を使い、モデルはREADMEに明記されたBU2を指定します。

Python版Browser Useのセットアップ

  1. パッケージとブラウザをインストールする

    Pythonとpipが利用できるmacOSまたはLinuxで、新しいプロジェクトディレクトリを作り、Bashシェルを開きます。

    Bash
    pip install uv
    uv venv --python 3.12
    source .venv/bin/activate
    uv pip install browser-use
    uvx browser-use install

    最後のコマンドでブラウザをインストールします。Windowsでは、sourceの代わりに、クイックスタートに記載された環境の有効化コマンドを使ってください。

  2. モデルの認証情報を設定する

    クイックスタートからリンクされているダッシュボードで、Browser UseのAPIキーを作成します。同じBashシェルで、キーを画面に表示せずに入力します。

    Bash
    read -rsp "Browser Use API key: " BROWSER_USE_API_KEY
    printf '\n'
    export BROWSER_USE_API_KEY

    このキーは、選択したモデルサービスを利用するためのものです。設定しただけでブラウザがCloudに移るわけではありません。

  3. 小さな読み取り専用タスクを実行する

    次の内容をagent.pyとして保存します。

    Python
    import asyncio
    from browser_use import Agent, ChatBrowserUse
    
    async def main():
        agent = Agent(
            task=(
                "Open https://example.com and report the page heading. "
                "Do not follow links or submit anything."
            ),
            llm=ChatBrowserUse(model="bu-2-0"),
        )
        history = await agent.run()
        print(history.final_result())
    
    if __name__ == "__main__":
        asyncio.run(main())

    続いて実行します。

    Bash
    python agent.py

    報告された見出しがページの内容と一致するか、自分で確認してください。この無害な例では、タスク内の指示を最初の制約として使えます。ただし、本番運用の制限はプロンプトの外側で強制する必要があります。

失敗したら、モデルを変更する前にエラーを読みましょう。ブラウザのインストール、モデルの認証、Webサイトへのアクセスは、それぞれ別の原因で失敗します。動作したら、使用した依存関係のバージョンを維持し、対象サイトのテストアカウントでの検証に進みます。

Browser Useに期待しすぎてはいけないこと

エージェントの実行が完了しても、業務処理が完了した証拠にはなりません。 Browser Useの出力に関するドキュメントは、この違いを明示しています。is_done()はエージェントが完了アクションを出したことを示し、is_successful()はエージェント自身による評価です。重要な外部処理の結果は、処理先のシステムで確認する必要があります。出力が示すもの

住所を変更したなら、保存された住所を確認します。レポートをダウンロードしたなら、ファイルと対象期間を確認します。送信したなら、送信先からの確認情報を取得し、成否が曖昧な場合は結果を突き合わせてから再試行します。

「どんなWebサイトでも動く」という期待にも、同じ慎重さが必要です。マネージドブラウザの機能はアクセス時の障害を減らせますが、プロジェクトのREADMEは、あらゆるCAPTCHAを回避または解決できるとは約束していません。また、モデルの性能が上がっても、ユーザーが持っていないアカウント権限を得られるわけではありません。人に引き継ぐ必要がある場面も含め、サイトの実際の動作に合わせて設計してください。

まずは範囲を絞った読み取りタスクから

技術に詳しい起業家が最初に試すなら、答えを明確に確認できる、範囲の狭いポータルの読み取りタスクが適しています。専用のテストアカウントを使い、アクセスを許可するページを特定し、取得したレコードの確認方法を書き出しましょう。完了した実行だけでなく、失敗も記録します。

失敗の傾向を把握してから、フォームへの入力準備へと範囲を広げてください。承認を強制し、保存された結果を確認し、操作を重複させずに復旧できるようになるまでは、送信は人が行います。対応するAPIや安定したスクリプトで業務の流れを処理できるなら、そのシンプルな連携を使い続けましょう。

信頼できるAIワークフローを構築するための実践的な情報は、ニュースレターに登録してお読みください。

公開日
カテゴリー
Build
SNS自動投稿を組み込むなら?Zernioの料金・対応APIをレビュー

SNS自動投稿を組み込むなら?Zernioの料金・対応APIをレビュー

SNS自動投稿を自社サービスに組み込みたい開発者向けに、Zernioの対応SNS、アカウント要件、料金、Webhook、MCPを解説します。接続アカウント単位の課金や運用上の制約を整理し、Ayrshare、Postiz、各SNSのネイティブAPIとの違いから、用途に合う選び方を検討します。2026年11月1日Build
AirtableとNotionの比較:6つの用途でわかる違いと選び方

AirtableとNotionの比較:6つの用途でわかる違いと選び方

AirtableとNotionの比較を、CRM、コンテンツ管理、プロジェクト管理、社内Wiki、在庫管理、クライアントポータルの6用途で解説します。料金だけでなく、AI、自動化、APIの制限や共有権限、併用時の役割分担、移行で引き継げない情報まで整理し、チームの業務に合う選び方を示します。2026年11月1日Build
Google Julesがサービス終了へ:データ保存と移行先の選び方

Google Julesがサービス終了へ:データ保存と移行先の選び方

Google Julesのサービス終了に向け、読み取り専用への切り替え日程、エクスポートの手順、履歴とAPIの注意点を整理します。Antigravity、Codex、Claude Code、GitHub Copilotへの移行方法と、実行環境・テスト・レビューで確認すべき点を解説します。2026年11月1日Build
AIエージェントフレームワーク「smolagents」の使い方と選び方

AIエージェントフレームワーク「smolagents」の使い方と選び方

AIエージェントフレームワークのsmolagentsを、Pythonで行動を組み立てる仕組みから解説。CodeAgentとToolCallingAgentの使い分け、Dockerで試す計算例、サンドボックスと権限設計の注意点を整理。LangGraphやOpenAI Agents SDKとの比較で、用途別の選び方を紹介。2026年10月31日Build
Warp Terminalレビュー:料金・安全性・エージェント連携で見極める乗り換えの価値

Warp Terminalレビュー:料金・安全性・エージェント連携で見極める乗り換えの価値

Warp Terminalへの乗り換えは本当に必要でしょうか。Claude CodeやCodexとの連携、Warp Driveの使い方、無料・有料プランの料金、データ保持と共有機能の制約を公開資料から検証。ターミナル、エージェント、クラウドを分けて評価し、個人利用からチーム導入まで判断するためのポイントを整理します。2026年10月31日Build
Kilo Codeレビュー:料金・使い方とCline/Claude Codeとの比較

Kilo Codeレビュー:料金・使い方とCline/Claude Codeとの比較

Kilo Codeの料金・使い方を、VS Code、JetBrains、CLI、Cloud Agentsの連携から解説。ClineやClaude Codeとの比較、モデル選択、推論とコンピュートの費用、レビュー機能の制約を整理し、個人開発者や小規模チームが導入・乗り換えを判断するためのポイントを紹介します。2026年10月31日Build
Bedrock AgentCoreとは?構成要素・設計の要点と導入の判断基準

Bedrock AgentCoreとは?構成要素・設計の要点と導入の判断基準

Bedrock AgentCoreとは何か。Runtime、Harness、Memoryなどの役割と、AWSに任せられる運用、自分たちで担う責任を整理します。セッション管理や権限設計、実行時間の制約、導入が向くケースを押さえ、CLIを使った試験導入の手順と評価基準まで解説します。2026年10月30日Build
speculative decodingとは?LLM推論を速める仕組みと導入方法

speculative decodingとは?LLM推論を速める仕組みと導入方法

speculative decoding(投機的デコーディング)の仕組みと、LLM推論が速くなる条件を解説します。採用率だけでは測れない候補生成コスト、同時実行数、GPUメモリの影響を整理し、vLLM・SGLang・TensorRT-LLMの設定例と、厳密な検証を保ったまま本番導入を判断する手順を紹介します。2026年10月30日Build
ニュースレター

毎週日曜、一通の手紙。動くシステムの話。感想戦ではなく。

週刊。スパムなし。いつでも解除できます。