UC-DEV-008DeveloperLv4
browser-use + Scraping Browser
browser-use のエージェントから Scraping Browser を操作し、難サイトを攻略する。
Scraping Browserbrowser-use
KPI 例
- 成功率
- セッション時間
- 失敗理由分布
browser-use は自然言語タスクからブラウザ操作を進めるライブラリですが、実行先ブラウザの安定性がそのまま成功率に響きます。Bright Data 公式 Blog の browser-use 連携例では、Scraping Browser の CDP 接続文字列を BrowserConfig に渡し、browser-use からリモートブラウザを操作する構成が案内されています。
誰の課題か
- Playwright 単体より高い抽象度で、ブラウザ操作を AI エージェントに任せたい開発者
- 動的 UI、複数クリック、カート投入のような手順型タスクを自動化したいチーム
- browser-use は使いたいが、ローカルブラウザ運用やブロック対策を自前で持ちたくない担当者
推奨製品セット
| 製品 | 役割 | このページでの使い方 |
|---|---|---|
| browser-use | エージェント制御 | 自然言語タスクからブラウザ操作を進める |
| Scraping Browser | リモートブラウザ実行 | 実際の CDP 接続先になる |
| OpenAI などの LLM | 推論 | browser-use の判断部分を担う |
| Native Access 認証情報 | 接続情報 | Scraping Browser の接続文字列に使う |
- この連携は
/requestへ直接 POST する形ではなく、Scraping Browser の接続文字列を browser-use に渡す形です。 - 接続文字列は Scraping Browser の Access Details から取得します。
最小実装イメージ
.env に Scraping Browser の接続文字列を置く
SBR_CDP_URL="YOUR_PLAYWRIGHT_SCRAPING_BROWSER_CONNECTION_STRING"
OPENAI_API_KEY="YOUR_OPENAI_API_KEY"browser-use から Bright Data のリモートブラウザへ接続する
from dotenv import load_dotenv
import os
import asyncio
from browser_use import Agent, Browser
from browser_use.browser.config import BrowserConfig
from browser_use import ChatOpenAI
load_dotenv()
async def main():
llm = ChatOpenAI(model="gpt-4o")
config = BrowserConfig(
cdp_url=os.getenv("SBR_CDP_URL")
)
browser = Browser(browser_profile=config)
agent = Agent(
task="Open example.com and summarize the page.",
llm=llm,
browser=browser,
)
await agent.run()
await browser.close()
asyncio.run(main())- 公式 Blog の要点は、
BrowserConfig(cdp_url=SBR_CDP_URL)を渡すことです。 - これで browser-use が使う Playwright 相当の実行先を、ローカルではなく Bright Data Scraping Browser に置き換えられます。
運用ポイント
- browser-use 側の失敗とブラウザ接続失敗を混同しないため、まずは短いタスクで CDP 接続だけ検証してください。
- 自然言語タスクは長くしすぎず、「対象サイト」「やること」「禁止事項」を明示したほうが再現性が上がります。
- browser-use は UI 操作まで進められるぶん、検索や単発取得で済むタスクまで使うと重くなります。SERP や Unlocker で足りるかを先に判断するべきです。
- スクリーンショットやログを残しておくと、LLM 側の判断ミスか、ページ側の UI 変化かを切り分けやすくなります。
- 認証情報は API キーではなく、Scraping Browser の接続文字列側にも機密が含まれます。共有方法を API キーと同じ強度で扱ってください。