テーマを切り替える

Browser Use 入門:AI で Web ページを開き、ボタンをクリックし、情報を抽出する

Easton editorial illustration: one oversized browser-window selector with a physical three-position dial, three compact destination objects: a structured data sheet, a stacked browser session with a recording dot, and an agent cursor orb

"Browser Use 公式 quickstart は、Python 環境、browser-use のインストール、uvx browser-use install、.env の API key、最初の Agent フローを説明しています。"

uvx browser-use install が終わった後、本当に詰まりやすいのは task です。「サイトを開いて見て」とだけ書くと、agent は何を完了とみなせばよいかわかりません。何度も試すか、早めに終了してしまいます。

Browser Use は、AI が Chromium ブラウザを制御して Web 自動化を行うためのオープンソース Python ライブラリです。ローカル環境や self-hosted 環境で動かせ、Browser Use Cloud に依存しません。Browser Agent の概念をすでに理解しているなら、このチュートリアルではインストールから最初の成功 task まで、安全設定、結果の読み方、失敗時の確認ポイントを順に扱います。

Browser Use とは:一言でいうと

Browser Use は Python library for AI browser automation です。LLM Agent が人間のようにブラウザを操作し、ナビゲーション、クリック、入力、スクロール、データ抽出、スクリーンショットを実行できます。

位置づけはローカルまたは self-hosted 実行です。Browser Use Cloud には依存しません。オープンソースライブラリと Cloud Agent は API が異なります。このガイドではオープンソース版の入門に絞り、Cloud SDK の structured output、human-in-the-loop、live preview などは扱いません。

「Browser Agent とは何か」をまだ確認したい場合は、Browser Agent の概念記事(後日公開)から読むと入りやすいです。概念は理解済みなら、このガイドは「今どうやって動かすか」に答えます。

インストールと準備:uv から API key まで

2026-06-30 時点で、公式 README と quickstart のインストール手順は次のとおりです。

1. Python バージョン要件

Browser Use には Python 3.11 以上が必要です。公式 quickstart の例では Python 3.12 で venv を作成していますが、自分の環境に合わせて選べます。

2. uv をインストールする(推奨)

uv は Astral が開発しているモダンな Python パッケージマネージャーです。まだ入っていない場合は、次のようにインストールします。

# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows(PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

3. プロジェクトを初期化して browser-use を入れる

# プロジェクトディレクトリを作成
mkdir my-browser-use
cd my-browser-use

# プロジェクトを初期化
uv init

# browser-use をインストール(core 依存を含む)
uv add "browser-use[core]"

# 依存関係を同期
uv sync

uv を使わない場合は、pip でもインストールできます。

pip install "browser-use[core]"

4. Chromium ブラウザ実行環境を入れる

Browser Use は内部で Playwright に依存しています。先に Chromium をインストールします。

uvx browser-use install

このコマンドにより Chromium がダウンロード、設定され、agent がブラウザインスタンスを起動できるようになります。

5. API key を設定する

Browser Use は task を理解し判断するために LLM へ接続します。公式 quickstart は、ブラウザ task 向けに設計された ChatBrowserUse を推奨しています。

プロジェクトルートに .env ファイルを作成します。

# .env
BROWSER_USE_API_KEY=your_api_key_here

OpenAI、Anthropic、Google Gemini、ローカル Ollama を使う場合は、対応する API key を設定します。

OPENAI_API_KEY=your_openai_key
ANTHROPIC_API_KEY=your_anthropic_key
GOOGLE_API_KEY=your_google_key

最初のスクリプトを書く:最小テンプレート

最小スクリプトに必要なのは、モジュールの import、Agent の作成、task の実行です。

from browser_use import Agent, Browser, ChatBrowserUse
import asyncio

async def main():
    # ブラウザインスタンスを作成(デバッグ時は画面を表示)
    browser = Browser(headless=False)

    # LLM インスタンスを作成
    llm = ChatBrowserUse()

    # Agent を作成
    agent = Agent(
        task="quotes.toscrape.com を開き、1 画面下へスクロールし、'Next' ボタンをクリックして、2 ページ目のすべての quote 本文と作者を抽出してください",
        llm=llm,
        browser=browser
    )

    # task を実行(ステップ数を制限)
    history = await agent.run(max_steps=20)

    # ブラウザを閉じる
    await browser.close()

if __name__ == "__main__":
    asyncio.run(main())

このスクリプトでは、次のことをしています。

  1. Browser(headless=False):ブラウザウィンドウを表示し、デバッグしやすくします。デバッグ後は headless=True に変更できます。
  2. ChatBrowserUse():公式のブラウザ向けモデルを使います。ChatOpenAI(model="gpt-4o") など、別のモデルに切り替えることもできます。
  3. task は具体的に書きます。「サイトを開いて見て」ではなく、「X URL に移動し、スクロールし、Y ボタンをクリックし、Z の内容を抽出する」と書きます。曖昧な task は agent のループや早期終了につながります。
  4. max_steps=20:agent が最大 20 ステップまで実行できるようにします。最初の task は 10〜20 ステップ程度にして、同じ動作で詰まり続けないようにします。

スクリプトを実行します。

uv run python main.py

agent を走らせ続けない:max_steps が安全線

max_steps は agent の実行ステップ数を制限します。公式のデフォルト値は 100 ですが、最初の task では 10〜20 に下げるのがおすすめです。

制限が必要な理由は次のとおりです。

  • クリック失敗、ページ読み込みの遅さ、ポップアップの遮りなどで、agent が同じ動作を繰り返すことがあります。
  • ステップ制限がないと、時間と token を消費し続けます。
  • 最初の task の目的は「完璧に実行すること」ではなく「動くことを確認すること」です。ステップ数を絞ると、問題箇所を早く見つけられます。

設定の目安です。

# 最初の task:10〜20 ステップ
await agent.run(max_steps=20)

# 複雑な task:必要に応じて増やす。ただし初期段階では 50 を超えない
await agent.run(max_steps=50)

初心者向けの安全な起動設定

最初の task で主アカウントのログイン状態を使ったり、agent に任意のサイトへ自由に移動させたりしないでください。安全設定は次のとおりです。

1. headless=False のデバッグモード

browser = Browser(headless=False)

ブラウザウィンドウを表示すると、agent が何をしているか見えます。クリック失敗なのか、ページが止まっているのか、task の説明が曖昧なのかを判断しやすくなります。デバッグが終わったら headless=True に変更します。

2. allowed_domains で移動先を制限する

browser = Browser(
    headless=False,
    allowed_domains=["quotes.toscrape.com"]
)

allowed_domains は agent が他のドメインへ移動することを防ぎます。task が 1 つのサイトだけで完結するなら、この制限を付けておきましょう。

Browser Use は allowed_domains=["*.example.com"] のようなサブドメイン wildcard をサポートします。一方で、allowed_domains=["example.*"] のような TLD wildcard は認識されません。固定サイトだけを扱うなら、完全なドメインを書くのが最も安定します。

allowed_domains=["quotes.toscrape.com", "github.com"]

3. 独立 profile を使い、主 Chrome を再利用しない

browser = Browser(
    headless=False,
    user_data_dir="./browser_profile"
)

Agent は独立したブラウザ profile を作ります。主 Chrome のログイン状態、Cookie、機密データにはアクセスしません。この 1 本目のチュートリアルでは公開ページだけを使い、ログイン状態には触れません。

4. disable_security は使わない

disable_security はブラウザのセキュリティポリシーを無効化します。公式ドキュメントでも非推奨とされています。別のチュートリアルでこのパラメータを見かけても、ここでは使いません。

結果の読み方:「動いた」だけでは足りない

agent.run()AgentHistoryList 型を返します。複数の helper メソッドで、結果と過程の両方を確認できます。

history = await agent.run(max_steps=20)

# 最終結果
result = history.final_result()
print("最終結果:", result)

# 抽出した内容
extracted = history.extracted_content()
print("抽出内容:", extracted)

# エラー一覧
errors = history.errors()
print("エラー:", errors)

# エラーがあったかどうか
if history.has_errors():
    print("task 実行中にエラーが発生しました")

# アクセスした URL 一覧
urls = history.urls()
print("アクセスした URL:", urls)

# スクリーンショットのパス一覧
screenshots = history.screenshot_paths()
print("スクリーンショット:", screenshots)

# 実行した action 名
actions = history.action_names()
print("action:", actions)

# 総ステップ数
steps = history.number_of_steps()
print("実行ステップ数:", steps)

初心者がよくやるのは、ブラウザウィンドウが動いたことだけを見て成功と判断することです。final_result() が空なら、agent が早めに終了したか、task の説明が合っていない可能性があります。errors() に内容がある場合は、その具体的なエラーを見てから調整します。

最初の task:開く、クリックする、抽出する

最初の task には quotes.toscrape.com を使います。スクレイピング練習用の公開サイトで、ログイン不要、構造もシンプルです。

task 1:開いてスクロールする

agent = Agent(
    task="quotes.toscrape.com を開き、1 画面下へスクロールしてください",
    llm=ChatBrowserUse(),
    browser=Browser(headless=False, allowed_domains=["quotes.toscrape.com"])
)
history = await agent.run(max_steps=10)
print("アクセスした URL:", history.urls())

task 2:ボタンをクリックする

agent = Agent(
    task="quotes.toscrape.com を開き、ページ下部の 'Next' ボタンをクリックしてください",
    llm=ChatBrowserUse(),
    browser=Browser(headless=False, allowed_domains=["quotes.toscrape.com"])
)
history = await agent.run(max_steps=10)
print("成功したか:", history.is_successful())

task 3:内容を抽出する

agent = Agent(
    task="quotes.toscrape.com を開き、1 ページ目にあるすべての quote 本文と作者を抽出してください",
    llm=ChatBrowserUse(),
    browser=Browser(headless=False, allowed_domains=["quotes.toscrape.com"])
)
history = await agent.run(max_steps=15)
extracted = history.extracted_content()
print("抽出内容:", extracted)

task 4:組み合わせる

agent = Agent(
    task="quotes.toscrape.com を開き、'Next' ボタンをクリックして、2 ページ目にあるすべての quote 本文と作者を抽出してください",
    llm=ChatBrowserUse(),
    browser=Browser(headless=False, allowed_domains=["quotes.toscrape.com"])
)
history = await agent.run(max_steps=20)
print("最終結果:", history.final_result())
print("エラー:", history.errors())

失敗したらどこを見るか:トラブルシューティングのチェックリスト

Agent が空の結果を返す、エラーを出す、止まる。そんなときは、次の順番で確認します。

1. クリック失敗

  • history.errors() に “click failed” や “element not found” があるか確認する
  • task にキーボード操作の fallback を入れる:「クリックに失敗したら、Tab でボタンに移動し、Enter を押す」
  • history.screenshot_paths() を確認し、要素が見えていたか判断する

2. 抽出内容が空

  • history.urls() でページが本当に開かれているか確認する
  • history.screenshot_paths() でページ状態を見る
  • task が「すべての quote 本文と作者を抽出する」のように具体的か確認する。「内容を見て」だけでは足りません

3. ページが止まる

  • allowed_domains が移動を止めていないか確認する
  • ネットワーク接続とページ読み込み時間を確認する
  • max_steps を下げるか、task に timeout 処理を入れる:「ページが 10 秒以内に読み込まれない場合は、ホームに戻る」

4. 結果が不完全

  • max_steps が早すぎて停止していないか確認する
  • history.number_of_steps() で実際のステップ数を見る
  • task の説明を調整し、複数の小さな task に分ける

5. 全体的に失敗する

  • .env の API key が正しいか確認する
  • モデルが対応しているか確認する:ChatBrowserUse、OpenAI、Anthropic、Google Gemini、ローカル Ollama
  • task の説明が抽象的すぎないか確認する。「サイトを開いて見て」ではなく具体的な action にする

Beta Agent と安定版:2 つの入口

2026-06-30 時点で、公式 README は 2 つの Agent import path を示しています。

安定版

from browser_use import Agent, Browser

これは安定版の入口です。以前から Browser Use を使っている場合は、この path を続けられます。

Beta 版(0.13)

from browser_use.beta import Agent, BrowserProfile, ChatBrowserUse

これは 0.13 beta agent です。Rust core と browser harness に支えられています。公式 README は、既存ユーザーは安定版を続けられ、新規ユーザーは beta を試せると説明しています。

どちらを使うか迷ったら、現在の公式 README を確認してください。このガイドは安定版の例を使っています。beta 版の API は異なる可能性があります。

オープンソース版 vs Cloud:境界を知る

このガイドでは、Browser Use のオープンソースライブラリをローカルで使います。

Browser Use Cloud はホスト型サービスで、API が異なります。

  • Cloud SDK は現在 API v3 です
  • Cloud は structured output、human-in-the-loop、live preview、persistent profiles などを提供します
  • Cloud の Python/TypeScript SDK は、オープンソースライブラリの API と互換ではありません

Cloud を検討するタイミングです。

  • production デプロイやホスト環境が必要
  • stealth、CAPTCHA、proxy などの高度な能力が必要(このガイドでは扱いません)
  • 複数アカウント、永続 profile、チーム運用が必要

このガイドはローカル入門に絞ります。Cloud の使い方や価格は後続記事で扱います。

次のステップ:さらに読む

このチュートリアルでは、Browser Use オープンソースライブラリのローカル入門を扱いました。インストール、API key、最小スクリプト、ページを開く、ボタンをクリックする、情報を抽出する、失敗を切り分ける、という流れです。

次に試すとよいものです。

まずは quotes.toscrape.com や GitHub の公開ページで最初の task を通し、その後にログイン状態や Cloud を検討しましょう。

Browser Use で最初の Web 自動化 Agent を動かす

依存関係のインストールから結果確認まで、公開 Web ページで open、click、extract を検証するための最小 Browser Use フローです。

⏱️ 目安時間: 30 分

  1. 1

    ステップ 1: Python 環境を用意する

    Python 3.11 以上が入っていることを確認します。公式 quickstart の例は Python 3.12 の仮想環境を使っていますが、実際のプロジェクトに合わせて選べます。
  2. 2

    ステップ 2: browser-use をインストールする

    uv でプロジェクトを初期化して browser-use[core] を入れるか、既存の Python 環境で pip install browser-use[core] を実行します。
  3. 3

    ステップ 3: Chromium ランタイムをインストールする

    uvx browser-use install を実行し、Browser Use が使う Chromium ランタイムをダウンロードして設定します。
  4. 4

    ステップ 4: モデル API key を設定する

    .env に BROWSER_USE_API_KEY、OPENAI_API_KEY、ANTHROPIC_API_KEY、GOOGLE_API_KEY など必要な key を入れます。実アカウントのパスワードを prompt に書かないでください。
  5. 5

    ステップ 5: 最小 Agent スクリプトを書く

    Browser、LLM、Agent を作成します。task は quotes.toscrape.com を開く、Next をクリックする、quote の本文と作者を抽出する、といった具体的な手順にします。
  6. 6

    ステップ 6: 実行範囲を制限する

    デバッグ中は headless=False にしてブラウザを見える状態にし、allowed_domains で Agent が指定ドメインだけにアクセスできるようにします。
  7. 7

    ステップ 7: history を読んで結果を確認する

    agent.run(max_steps=20) の後に final_result()、extracted_content()、errors()、urls()、screenshot_paths()、action_names() を確認し、task が本当に完了したか見ます。

FAQ

Browser Use とは何ですか?Playwright や Selenium と何が違いますか?
Browser Use は AI 駆動のブラウザ自動化ライブラリです。自然言語で task を書くと、LLM が意図を理解してブラウザを操作します。Playwright や Selenium はルール駆動で、要素の特定、非同期処理、selector の保守を自分でコードに書く必要があります。
Browser Use のオープンソース版と Cloud はどう選べばいいですか?
ローカル開発、デバッグ、学習にはオープンソース版が向いています。production、ホスト環境、チーム利用、stealth や proxy のような高度な機能が必要なら Cloud を検討します。このガイドではオープンソース版を使います。
Browser Use ではどのモデルを使うべきですか?
公式 quickstart は ChatBrowserUse を推奨しています。OpenAI、Anthropic、Google Gemini、ローカル Ollama も使えますが、ブラウザ task の安定性や action schema の相性はモデルによって変わります。
Browser Use に beta と安定版の Agent があるのはなぜですか?
2026-06-30 時点で、公式 README は 0.13 で Rust core と browser harness に支えられた beta agent が導入されたと説明しています。既存ユーザーは安定版を続けられ、新規ユーザーは beta を試せます。import をコピーする前に、現在の公式 README を確認してください。
Browser Use が指定サイトだけを開くように制限するには?
allowed_domains を使います。例:Browser(allowed_domains=["quotes.toscrape.com"])。公式ドキュメントでは *.example.com のようなサブドメイン wildcard は使えますが、example.* のような TLD wildcard は使えません。
Browser Use の最終結果はどう取得しますか?
history.final_result() または history.extracted_content() を使います。ブラウザが動いているのを見るだけで判断せず、返り値を確認し、必要なら errors()、urls()、screenshot_paths() も見ます。
Browser Use でクリックに失敗したり抽出結果が空だったりするときは?
まず history.errors()、history.screenshot_paths()、アクセスした URL を確認します。task が十分具体的か、max_steps が早すぎないかを見てから、キーボード操作の fallback を入れるか、task を小さく分けます。
最初の Browser Use スクリプトで実アカウントにログインしてもいいですか?
おすすめしません。最初の task は公開ページだけにし、主 Chrome のログイン状態を使わないでください。allowed_domains、独立 profile、headless=False のデバッグを保ちます。ログイン状態と認証は、別途セキュリティ設計が必要です。

6分で読めます · 公開日: 2026年9月4日 · 更新日: 2026年9月4日

コメント

GitHubアカウントでログインしてコメントできます

Easton BlogEaston Blog