Browser Use: 94K+ Stars — Đánh Giá Hiệu Suất AI Browser Automation 2026

Browser Use là framework Python mã nguồn mở kết nối LLM với trình duyệt thực qua Playwright. Hỗ trợ OpenAI, Anthropic, Gemini và mô hình local. Bao gồm cài đặt, benchmark WebVoyager, so sánh Selenium, hardening production và triển khai Docker.

  • ⭐ 94731
  • MIT
  • Cập nhật 2026-05-19

{{< resource-info >}}

Browser Use Logo

GitHub: browser-use/browser-use | Stars: 94,731 | License: MIT | Version: 0.12.7


Giới thiệu #

Viết và duy trì script Selenium cho tự động hóa web hiện đại giống như chết dần bởi hàng nghìn selector. Một tên class thay đổi, một nút di chuyển vị trí, và toàn bộ pipeline của bạn sụp đổi lúc 3 giờ sáng. Browser Use, framework Python mã nguồn mở được Magnus Müller và Gregor Žunič ra mắt cuối năm 2024, đi theo hướng tiếp cận khác biệt: giao quyền điều khiển trình duyệt cho mô hình ngôn ngữ lớn, để AI tự quyết định nên nhấn vào đâu, nhập gì, và đọc gì. Với 94,731 sao GitHub, 319 contributor và tỷ lệ thành công 89.1% trên benchmark WebVoyager, Browser Use đã trở thành tiêu chuẩn mã nguồn mở cho tự động hóa trình duyệt dựa trên AI. Bài hướng dẫn này bao gồm cài đặt, dữ liệu benchmark thực tế, tích hợp với LLM phổ biến, và so sánh trực tiếp với Selenium, Puppeteer, và Scrapy.


Browser Use là gì? #

Browser Use là thư viện Python (yêu cầu ≥3.11) kết nối LLM tương thích LangChain với trình duyệt thực qua Playwright. Thay vì hardcode CSS selector hay biểu thức XPath, bạn mô tả tác vụ bằng ngôn ngữ tự nhiên — “tìm chuyến bay rẻ nhất từ NYC đến SFO vào thứ Sáu tới” — và agent tự xử lý việc điều hướng, điền form, nhấp chuột, và trích xuất dữ liệu.

Nguyên tắc thiết kế chính #

  • Độc lập mô hình: Hoạt động với OpenAI GPT-4o/5.1, Anthropic Claude Sonnet 4, Google Gemini 3 Flash, và mô hình local qua LiteLLM.
  • Tinh chế DOM: Chỉ giữ lại các phần tử tương tác thiết yếu trước khi gửi đến LLM, giảm tiêu thụ token tới 60%.
  • Hỗ trợ đa tab: Agent có thể hoạt động trên nhiều tab trình duyệt đồng thờii.
  • Bộ nhớ liên tục: Duy trì ngữ cảnh và lịch sử cuộc hội thoại qua các bước điều hướng.
  • Xây dựng trên Playwright: Kế thừa toàn bộ tính năng Playwright — chế độ ẩn danh, hỗ trợ proxy, chặn mạng, và ghi video.

Browser Use hoạt động như thế nào? #

Browser Use vận hành trên vòng lặp quan sát → lập kế hoạch → hành động → xác minh liên tục:

Tổng quan kiến trúc #

┌─────────────┐    DOM + Ảnh chụp màn hình   ┌─────────────┐
│  Trình duyệt│ ────────────────────────────> │     LLM     │
│ (Playwright)│                               │(Claude/GPT/)│
│             │ <──────────────────────────── │   Gemini    │
└─────────────┘     Hành động (nhấp/nhập)    └─────────────┘
      ↑                                              │
      └────────── Thay đổi trạng thái trang ───────┘

Browser Use Agent Loop Architecture

Chi tiết vòng lặp Agent #

  1. Chụp: Browser Use chụp ảnh snapshot DOM và screenshot trang hiện tại.
  2. Tinh chế: DOM được lọc chỉ giữ lại phần tử tương tác (nút, input, liên kết), loại bỏ nhiễu.
  3. Suy luận: LLM nhận trạng thái trang đã tinh chế và mục tiêu ngườii dùng, sau đó lập kế hoạch hành động tiếp theo.
  4. Thực thi: Browser Use chuyển quyết định của LLM thành lệnh gọi API Playwright (page.click(), page.fill()).
  5. Xác minh: Vòng lặp lặp lại cho đến khi tác vụ hoàn thành hoặc đạt max_steps.
from browser_use import Agent, Browser
from langchain_openai import ChatOpenAI
import asyncio

async def main():
    browser = Browser()
    agent = Agent(
        task="Find the number of stars of the browser-use repo",
        llm=ChatOpenAI(model="gpt-4.1"),
        browser=browser,
    )
    result = await agent.run()
    print(result)

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

Cài đặt và thiết lập #

Yêu cầu trước #

  • Python 3.11 trở lên
  • Trình duyệt tương thích Playwright (khuyến nghị Chromium)
  • API key từ nhà cung cấp LLM bạn chọn

Bước 1: Cài đặt Browser Use #

# Sử dụng uv (khuyến nghị)
uv init
uv add browser-use
uv sync

# Sử dụng pip
pip install browser-use

# Cài đặt Chromium (nếu chưa có)
playwright install chromium

Bước 2: Cấu hình biến môi trường #

# Tệp .env
OPENAI_API_KEY=sk-your-openai-key
ANTHROPIC_API_KEY=sk-ant-your-anthropic-key
GOOGLE_API_KEY=your-google-api-key

# Tùy chọn: Browser Use Cloud cho trình duyệt ẩn danh
BROWSER_USE_API_KEY=your-cloud-key

Bước 3: Chạy agent đầu tiên #

import asyncio
from browser_use import Agent, Browser, ChatBrowserUse

async def main():
    browser = Browser()
    agent = Agent(
        task="List the top 20 posts on Hacker News today with their points",
        llm=ChatBrowserUse(),
        browser=browser,
    )
    result = await agent.run()
    print(result.output)

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

Browser Use Quick Start Interface

Thiết lập Docker (Production) #

# Dockerfile
FROM python:3.11-slim

WORKDIR /app
RUN pip install browser-use playwright
RUN playwright install chromium
RUN playwright install-deps

COPY . .
CMD ["python", "agent.py"]
# docker-compose.yml
version: '3.8'
services:
  browser-use:
    build: .
    environment:
      - OPENAI_API_KEY=${OPENAI_API_KEY}
      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
    volumes:
      - ./scripts:/app
    command: python agent.py

Tích hợp với công cụ phổ biến #

OpenAI GPT-4o / GPT-5.1 #

from browser_use import Agent, Browser
from langchain_openai import ChatOpenAI
import asyncio

async def search_flights():
    agent = Agent(
        task="Find the cheapest flight from NYC to London next week",
        llm=ChatOpenAI(model="gpt-4o", temperature=0),
        browser=Browser(),
    )
    return await agent.run()

asyncio.run(search_flights())

Anthropic Claude Sonnet 4 #

from browser_use import Agent, Browser
from langchain_anthropic import ChatAnthropic
import asyncio

async def extract_data():
    agent = Agent(
        task="Extract all pricing plans from example.com/pricing",
        llm=ChatAnthropic(model="claude-sonnet-4-6"),
        browser=Browser(),
    )
    result = await agent.run()
    print(result.output)

asyncio.run(extract_data())

Google Gemini 3 Flash #

from browser_use import Agent, Browser
from langchain_google_genai import ChatGoogleGenerativeAI
import asyncio

async def research_topic():
    agent = Agent(
        task="Research the latest AI news and summarize top 5 stories",
        llm=ChatGoogleGenerativeAI(model="gemini-3-flash-preview"),
        browser=Browser(),
    )
    return await agent.run()

asyncio.run(research_topic())

Ollama (Mô hình local) #

from browser_use import Agent, Browser
from langchain_ollama import ChatOllama
import asyncio

async def local_automation():
    agent = Agent(
        task="Fill out the contact form on example.com/contact",
        llm=ChatOllama(model="qwen2.5:72b"),
        browser=Browser(),
    )
    return await agent.run()

asyncio.run(local_automation())

Tích hợp trực tiếp Playwright #

from playwright.async_api import async_playwright
from browser_use import Agent
from langchain_openai import ChatOpenAI

async def hybrid_automation():
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=True)
        page = await browser.new_page()
        
        # Bước Playwright xác định
        await page.goto("https://example.com")
        
        # Giao phức tạp cho Browser Use agent
        agent = Agent(
            task="Navigate to pricing and extract all plan details",
            llm=ChatOpenAI(model="gpt-4o"),
            browser=browser,
        )
        result = await agent.run()
        await browser.close()
        return result

Benchmark / Trường hợp sử dụng thực tế #

Kết quả benchmark WebVoyager #

Benchmark WebVoyager đánh giá agent trình duyệt trên 586 tác vụ web thực tế đa dạng. Browser Use đứng thứ 7 trên bảng xếp hạng toàn cầu với tỷ lệ thành công 89.1% — cao nhất trong các framework hoàn toàn mã nguồn mở.

WebVoyager Leaderboard showing Browser Use at 89.1%

Xếp hạngHệ thốngĐiểmTổ chức
1Alumnium98.6%Alumnium
2Surfer 297.1%H Company
3Magnitude93.9%Magnitude
4AIME Browser-Use92.34%Aime
6Browserable90.4%Browserable
7Browser Use89.1%Browser Use
8GLM-5V-Turbo88.5%Z.ai
9Agent Kura87.0%Kura
9OpenAI Operator87%OpenAI
11Skyvern 2.085.85%Skyvern
12Project Mariner83.5%Google

Chỉ số hiệu suất (so với công cụ truyền thống) #

Chỉ sốBrowser Use (AI)PlaywrightPuppeteerSelenium
Khởi động lạnh đến lần điều hướng đầu~0.5–0.8s~0.4–0.7s~0.3–0.5s~1.2–2.5s
RAM nhàn rỗi (mỗi instance)~100–150MB~90–130MB~60–100MB~180–280MB
Trang tĩnh / phút~8–15 (vòng lặp AI)~35–55~40–60~18–35
Tỷ lệ thành công trang mới89.1%N/AN/AN/A
Chi phí duy trì selectorKhôngCaoCaoCao
Chi phí LLM (mỗi tác vụ 10 bước)$0.02–$0.30$0$0$0

Phân tích chi phí thực tế #

Nhà cung cấp LLMChi phí mỗi tác vụ (trung bình 10 bước)Phù hợp cho
GPT-4o~$0.15–$0.30Tác vụ suy luận phức tạp
Claude Sonnet 4~$0.10–$0.20Độ tin cậy production
Gemini 3 Flash~$0.02–$0.05Batch job nhạy cảm về chi phí
Local (Qwen2.5-72B)~$0.005 (chi phí GPU)Triển khai ưu tiên quyền riêng tư

Trường hợp sử dụng: Giám sát giá tự động #

import asyncio
from browser_use import Agent, Browser
from langchain_openai import ChatOpenAI

async def monitor_prices():
    urls = [
        "https://amazon.com/dp/B0DHTYW7P5",
        "https://bestbuy.com/site/xyz",
        "https://newegg.com/product/abc",
    ]
    
    results = []
    for url in urls:
        agent = Agent(
            task=f"Go to {url} and extract the current price, availability, and seller name",
            llm=ChatOpenAI(model="gpt-4o-mini"),
            browser=Browser(),
        )
        result = await agent.run()
        results.append({"url": url, "data": result.output})
    
    return results

# Chạy hàng ngày qua cron hoặc scheduled task
prices = asyncio.run(monitor_prices())

Cách sử dụng nâng cao / Hardening Production #

Thực thi agent song song #

import asyncio
from browser_use import Agent, Browser
from langchain_openai import ChatOpenAI

async def run_parallel_agents(tasks):
    browser = Browser()
    agents = [
        Agent(task=task, llm=ChatOpenAI(model="gpt-4o-mini"), browser=browser)
        for task in tasks
    ]
    results = await asyncio.gather(*[agent.run() for agent in agents])
    return results

tasks = [
    "Find iPhone 16 price on Amazon",
    "Find iPhone 16 price on Best Buy",
    "Find iPhone 16 price on Apple Store",
]

results = asyncio.run(run_parallel_agents(tasks))

Cấu hình Proxy cho scraping #

from browser_use import Browser, BrowserConfig
from browser_use import Agent
from langchain_openai import ChatOpenAI

config = BrowserConfig(
    proxy={
        "server": "http://proxy.example.com:8080",
        "username": "user",
        "password": "pass",
    },
    headless=True,
)

browser = Browser(config=config)
agent = Agent(
    task="Extract data from a geo-restricted site",
    llm=ChatOpenAI(model="gpt-4o"),
    browser=browser,
)

Duy trì phiên và xác thực #

from browser_use import Browser, BrowserConfig, Agent
from langchain_openai import ChatOpenAI

# Sử dụng profile trình duyệt liên tục để giữ cookie và trạng thái đăng nhập
config = BrowserConfig(
    user_data_dir="./browser_profile",
    headless=False,  # Dùng headed mode cho lần đăng nhập đầu
)

async def authenticated_task():
    browser = Browser(config=config)
    agent = Agent(
        task="Download my monthly invoice from the billing page",
        llm=ChatOpenAI(model="gpt-4o"),
        browser=browser,
    )
    return await agent.run()

Xử lý lỗi và thử lại #

import asyncio
from browser_use import Agent, Browser
from langchain_openai import ChatOpenAI

async def robust_agent(task, max_retries=3):
    for attempt in range(max_retries):
        try:
            agent = Agent(
                task=task,
                llm=ChatOpenAI(model="gpt-4o"),
                browser=Browser(),
                max_steps=25,  # Giới hạn bước để ngăn vòng lặp vô hạn
            )
            result = await agent.run()
            if result.success:
                return result
        except Exception as e:
            print(f"Attempt {attempt + 1} failed: {e}")
            await asyncio.sleep(2 ** attempt)  # Backoff theo cấp số nhân
    raise Exception(f"Task failed after {max_retries} attempts")

Giám sát với Prometheus #

from prometheus_client import Counter, Histogram, start_http_server
from browser_use import Agent, Browser

agent_runs = Counter("browseruse_agent_runs_total", "Total agent runs")
agent_failures = Counter("browseruse_agent_failures_total", "Total agent failures")
agent_duration = Histogram("browseruse_agent_duration_seconds", "Agent run duration")

start_http_server(8000)

async def monitored_agent(task):
    agent_runs.inc()
    with agent_duration.time():
        try:
            agent = Agent(task=task, llm=llm, browser=Browser())
            result = await agent.run()
            return result
        except Exception:
            agent_failures.inc()
            raise

So sánh với các lựa chọn thay thế #

Tính năngBrowser UseScrapyPuppeteerSelenium
Ngôn ngữPythonPythonJavaScript/TypeScriptPython, Java, C#, JS
AI-NativeCó (LLM-driven)KhôngKhôngKhông
Render JavaScriptCó (qua Playwright)Không (cần Splash/Playwright)Có (Chromium)Có (mọi trình duyệt)
Bảo trì selectorKhông (AI vision)Cao (XPath/CSS)Cao (CSS)Cao (XPath/CSS)
Hỗ trợ đa trình duyệtChromium, Firefox, WebKitN/AChỉ ChromiumChrome, Firefox, Safari, Edge
Tỷ lệ thành công WebVoyager89.1%N/AN/AN/A
Tốc độ (trang/phút)~8–15~200+ (tĩnh)~40–60~18–35
Độ phức tạp thiết lậpThấp (pip install)Trung bìnhThấp (npm)Cao (WebDriver)
Chi phí cho 1K tác vụ$20–$300 (LLM)Miễn phí (chỉ infra)Miễn phí (chỉ infra)Miễn phí (chỉ infra)
Phù hợp nhất choAI agent, tác vụ phức tạpCrawl tĩnh quy mô lớnChrome automation, testCross-browser test, legacy
GitHub Stars94,73154,20090,80025,400

Hướng dẫn chọn công cụ #

  • Browser Use: Tác vụ đa bước phức tạp trên trang động, nơi viết selector là không thực tế. AI agent cần thích ứng với thay đổi UI.
  • Scrapy: Trích xuất khối lượng lớn trang HTML tĩnh. Tốt nhất cho crawl có cấu trúc quy mô lớn.
  • Puppeteer: Chrome automation nơi tốc độ quan trọng và bạn kiểm soát trang đích. Lý tưởng cho tạo PDF và screenshot.
  • Selenium: Cross-browser testing cho ứng dụng doanh nghiệp với yêu cầu phủ sóng trình duyệt nghiêm ngặt.

Hạn chế / Đánh giá trung thực #

Browser Use không phải giải pháp thay thế phổ quát cho tự động hóa trình duyệt truyền thống. Đây là những gì nó không phù hợp:

  1. Scraping khối lượng cao, chi phí thấp: Với chi phí LLM $0.02–$0.30 mỗi tác vụ, crawl 100,000 trang tốn $2,000–$30,000. Scrapy + HTTP request chỉ tốn vài xu cho cùng khối lượng trên trang tĩnh.

  2. Kiểm thử xác định: AI agent có tính không xác định. Cùng một tác vụ có thể đi theo các đường khác nhau mỗi lần chạy. Dùng Playwright hoặc Selenium cho CI/CD test suite cần 100% tái tạo.

  3. Ứng dụng real-time: Mỗi hành động cần gọi LLM inference (2–5 giây). Yêu cầu phản hồi dưới giây không thể đạt được với kiến trúc vòng lặp agent hiện tại.

  4. Trang đơn giản, ổn định: Nếu trang đích không bao giờ thay đổi và có selector rõ ràng, tự động hóa truyền thống nhanh hơn, rẻ hơn, và đáng tin cậy hơn.

  5. Phụ thuộc LLM: Bạn phụ thuộc vào khả năng sẵn có và giá của API LLM bên thứ ba. Rate limit có thể làm nghẽn workload production.


Câu hỏi thường gặp #

Browser Use dùng để làm gì? #

Browser Use là framework Python cho phép LLM điều khiển trình duyệt qua Playwright. Dùng cho tự động hóa web dựa trên AI — điền form, trích xuất dữ liệu, giám sát giá, và workflow web đa bước, nơi tự động hóa truyền thống dựa trên selector mong manh hoặc không thực tế.

Browser Use so với Selenium như thế nào? #

Browser Use không cần bảo trì selector (AI đọc trang), xử lý UI động nguyên bản, đạt 89.1% trên WebVoyager. Selenium nhanh hơn cho tác vụ đơn giản (~18–35 trang/phút vs ~8–15), hỗ trợ nhiều trình duyệt hơn, không có chi phí LLM mỗi tác vụ. Cross-browser test chọn Selenium; tác vụ phức tạp dựa trên AI chọn Browser Use.

Browser Use hỗ trợ những LLM nào? #

Mọi LLM tương thích LangChain: OpenAI GPT-4o/5.1, Anthropic Claude Sonnet 4, Google Gemini 3 Flash, và mô hình local qua Ollama (Qwen2.5, Llama 3, Mistral). Framework độc lập mô hình qua LiteLLM.

Chi phí Browser Use là bao nhiêu? #

Framework miễn phí (giấy phép MIT). Chi phí sử dụng API LLM khoảng $0.02–$0.30 mỗi tác vụ 10 bước. Browser Use Cloud cung cấp trình duyệt ẩn danh được quản lý từ $29/tháng.

Có thể chạy Browser Use trên Docker không? #

Có. Cài browser-useplaywright trong container Python 3.11+, chạy playwright install chromium, và thiết lập API key qua biến môi trường. Ví dụ Dockerfile được cung cấp trong phần Cài đặt phía trên.

Browser Use có giải quyết CAPTCHA không? #

Browser Use không tự giải CAPTCHA. Cho trang được bảo vệ, kết hợp với Browser Use Cloud (giải CAPTCHA tích hợp), hoặc tích hợp dịch vụ CAPTCHA chuyên dụng như 2Captcha hoặc CapSolver.

Làm thế nào xử lý xác thực trong Browser Use? #

Sử dụng profile trình duyệt liên tục (user_data_dir trong BrowserConfig) để duy trì cookie và trạng thái đăng nhập qua các phiên. Cho luồng OAuth hoặc 2FA, chạy đăng nhập đầu tiên ở headed mode, sau đó chuyển headless cho các tác vụ tiếp theo.

Browser Use khác Stagehand như thế nào? #

Browser Use là framework agent hoàn toàn tự trị — LLM kiểm soát mọi quyết định điều hướng. Stagehand (phát triển bởi Browserbase) thêm các nguyên hàm AI (act(), extract(), observe()) lên Playwright cho workflow hỗn hợp nơi các bước xác định và AI-driven cùng tồn tại. Tự trị hoàn toàn chọn Browser Use; tăng cường AI chính xác cho script Playwright hiện có chọn Stagehand.


Kết luận #

Browser Use xứng đáng với 94,731 sao GitHub bằng cách giải quyết vấn đề thực sự: duy trì script tự động hóa trình duyệt trên các trang web hiện đại, luôn thay đổi. Tỷ lệ thành công WebVoyager 89.1%, thiết kế độc lập mô hình, và nền tảng Playwright khiến Browser Use là lựa chọn mã nguồn mở tốt nhất cho tự động hóa web dựa trên AI năm 2026.

Framework không thiếu tradeoff — chi phí LLM tích lũy ở quy mô lớn, và kiểm thử xác định vẫn thuộc về Selenium và Playwright. Nhưng với các team xây dựng AI agent cần điều hướng các trang web tùy ý, điền form, trích xuất dữ liệu, và thích ứng với thay đổi UI không cần can thiệp con ngườii, Browser Use là lựa chọn mã nguồn mở trưởng thành nhất hiện có.

Cần thêm hướng dẫn AI automation? Tham gia nhóm Telegram của chúng tôi để nhận phân tích sâu hàng tuần về công cụ AI mã nguồn mở, mẹo triển khai production và dữ liệu benchmark.

Danh sách hành động:

  1. Clone repository browser-use/browser-use
  2. Chạy pip install browser-use và thiết lập agent đầu tiên với ví dụ code phía trên
  3. Đánh giá benchmark WebVoyager cho use case của bạn
  4. Tham gia Browser Use Discord để nhận hỗ trợ cộng đồng và mẹo production

Hosting Và Hạ Tầng Được Đề Xuất #

Trước khi triển khai các công cụ trên vào production, bạn cần hạ tầng vững chắc. Hai lựa chọn dibi8 đang dùng:

  • DigitalOcean — Credit miễn phí $200 trong 60 ngày, 14+ khu vực toàn cầu. Lựa chọn mặc định cho dev chạy AI tools open source.
  • HTStack — VPS Hong Kong, độ trễ thấp khi truy cập từ Trung Quốc. Cùng IDC đang host dibi8.com.

Liên kết tiếp thị — không tăng chi phí của bạn, giúp dibi8.com hoạt động.

Nguồn và Tài liệu tham khảo #


Bài viết này dành cho developer cần tự động hóa trình duyệt cấp production. Mọi dữ liệu benchmark đều từ leaderboard công khai và testing độc lập tháng 5/2026.

💬 Bình luận & Thảo luận