Design wechseln

Browser Use Tutorial: Mit einem KI-Agenten Webseiten öffnen, Buttons klicken und Daten extrahieren

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

"Der offizielle Browser Use Quickstart beschreibt Python-Umgebung, browser-use Installation, uvx browser-use install, .env API-Keys und den ersten Agent-Ablauf."

Nach uvx browser-use install kommt der eigentliche Knackpunkt: der Task. Wenn Sie nur „öffne die Website und schau sie dir an“ schreiben, weiß der Agent nicht, was genau erledigt sein soll. Er probiert weiter, rät oder beendet den Lauf zu früh.

Browser Use ist eine Open-Source-Python-Bibliothek, mit der KI einen Chromium-Browser für Web-Automatisierung steuert. Sie läuft lokal oder self-hosted und ist nicht von Browser Use Cloud abhängig. Wenn Sie das Konzept eines Browser Agent schon kennen, führt Sie dieses Tutorial von der Installation bis zum ersten erfolgreichen Task, inklusive Sicherheitskonfiguration, Ergebnisprüfung und Fehlersuche.

Was Browser Use ist: die Kurzfassung

Browser Use ist eine Python library for AI browser automation. Sie ermöglicht einem LLM Agent, den Browser wie ein Mensch zu bedienen: navigieren, klicken, tippen, scrollen, Daten extrahieren und Screenshots erstellen.

Die Open-Source-Bibliothek ist für lokale oder self-hosted Ausführung gedacht, nicht für Browser Use Cloud. Open-Source-Bibliothek und Cloud Agent haben unterschiedliche APIs. Dieser Leitfaden nutzt den Open-Source-Pfad; Cloud-SDK-Funktionen wie structured output, human-in-the-loop und live preview bleiben außerhalb des Umfangs.

Wenn Sie noch fragen „Was ist ein Browser Agent?“, starten Sie mit dem Konzeptartikel, sobald er veröffentlicht ist. Wenn das Konzept klar ist, beantwortet dieser Leitfaden die praktische Frage: Wie bringe ich ihn jetzt zum Laufen?

Installation und Vorbereitung: von uv bis API-Key

Stand 2026-06-30 beschreiben offizielles README und Quickstart diesen Installationspfad:

1. Python-Versionsanforderung

Browser Use benötigt Python 3.11 oder neuer. Das offizielle Quickstart-Beispiel erstellt eine virtuelle Umgebung mit Python 3.12; Sie können die Version passend zu Ihrer Umgebung wählen.

2. uv installieren (empfohlen)

uv ist ein moderner Python-Paketmanager von Astral. Falls uv noch nicht installiert ist:

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

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

3. Projekt initialisieren und browser-use installieren

# Projektverzeichnis erstellen
mkdir my-browser-use
cd my-browser-use

# Projekt initialisieren
uv init

# browser-use installieren (inklusive core dependencies)
uv add "browser-use[core]"

# Dependencies synchronisieren
uv sync

Wenn Sie uv nicht verwenden, funktioniert auch pip:

pip install "browser-use[core]"

4. Chromium-Browserlaufzeit installieren

Browser Use nutzt intern Playwright. Installieren Sie deshalb zuerst Chromium:

uvx browser-use install

Dieser Befehl lädt Chromium herunter und richtet es ein, damit der Agent eine Browserinstanz starten kann.

5. API-Key konfigurieren

Browser Use braucht eine LLM-Verbindung, um Tasks zu verstehen und Entscheidungen zu treffen. Der offizielle Quickstart empfiehlt ChatBrowserUse, ein Modell für Browser-Tasks.

Erstellen Sie im Projektverzeichnis eine .env-Datei:

# .env
BROWSER_USE_API_KEY=your_api_key_here

Wenn Sie OpenAI, Anthropic, Google Gemini oder lokales Ollama verwenden, setzen Sie den passenden API-Key:

OPENAI_API_KEY=your_openai_key
ANTHROPIC_API_KEY=your_anthropic_key
GOOGLE_API_KEY=your_google_key

Das erste Skript schreiben: minimale Vorlage

Ein minimales Skript braucht nur drei Teile: Module importieren, Agent erstellen, Task ausführen.

from browser_use import Agent, Browser, ChatBrowserUse
import asyncio

async def main():
    # Browserinstanz erstellen (beim Debuggen sichtbar)
    browser = Browser(headless=False)

    # LLM-Instanz erstellen
    llm = ChatBrowserUse()

    # Agent erstellen
    agent = Agent(
        task="Öffne quotes.toscrape.com, scrolle eine Bildschirmhöhe nach unten, klicke den 'Next'-Button und extrahiere alle Quotes und Autoren von der zweiten Seite",
        llm=llm,
        browser=browser
    )

    # Task ausführen (mit Schrittlimit)
    history = await agent.run(max_steps=20)

    # Browser schließen
    await browser.close()

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

Dieses Skript erledigt einige Dinge:

  1. Browser(headless=False): zeigt das Browserfenster und erleichtert Debugging. Nach dem Debugging können Sie auf headless=True umstellen.
  2. ChatBrowserUse(): nutzt das offizielle Browser-Modell. Sie können auch zu ChatOpenAI(model="gpt-4o") oder einem anderen Modell wechseln.
  3. task muss konkret sein: Schreiben Sie nicht „öffne die Website und schau dich um“, sondern „navigiere zu X URL, scrolle, klicke Button Y, extrahiere Inhalt Z“. Vage Tasks führen zu Schleifen oder frühem Abbruch.
  4. max_steps=20: begrenzt den Agent auf höchstens 20 Schritte. Für den ersten Task sind 10-20 Schritte ein sinnvoller Debugging-Bereich.

Führen Sie das Skript aus:

uv run python main.py

Den Agent nicht endlos laufen lassen: max_steps ist die Sicherheitslinie

max_steps begrenzt die Anzahl der Agent-Schritte. Der offizielle Standardwert ist 100, aber beim ersten Task sollten Sie ihn auf 10-20 senken.

Warum das wichtig ist:

  • Der Agent kann an fehlgeschlagenen Klicks, langsamem Laden, Popups oder unsichtbaren Elementen hängen bleiben und dieselbe Aktion wiederholen.
  • Ohne Schrittlimit verbraucht er Zeit und Tokens, ohne voranzukommen.
  • Ziel des ersten Tasks ist nicht Perfektion, sondern ein funktionierender Lauf. Ein kleineres Limit zeigt Fehler schneller.

Empfohlene Einstellungen:

# Erster Task: 10-20 Schritte
await agent.run(max_steps=20)

# Komplexere Tasks: nach Bedarf erhöhen, anfangs aber nicht über 50 gehen
await agent.run(max_steps=50)

Sichere Startkonfiguration für Einsteiger

Starten Sie nicht mit Ihrem Hauptkonto und geben Sie dem Agent nicht freie Navigation über beliebige Websites. Eine sichere Erstkonfiguration enthält:

1. headless=False für Debugging

browser = Browser(headless=False)

Damit sehen Sie das Browserfenster und können erkennen, ob der Agent falsch klickt, auf eine hängende Seite trifft oder den Task missversteht. Nach dem Debugging stellen Sie auf headless=True um.

2. Navigation mit allowed_domains begrenzen

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

allowed_domains verhindert, dass der Agent andere Domains besucht. Wenn der Task nur eine Website braucht, behalten Sie diese Einschränkung bei.

Browser Use unterstützt Subdomain-Wildcards wie allowed_domains=["*.example.com"], aber keine TLD-Wildcards. allowed_domains=["example.*"] wird nicht erkannt. Für feste Websites ist die vollständige Domain am stabilsten:

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

3. Isoliertes Profil verwenden, nicht das Haupt-Chrome

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

Der Agent erstellt ein eigenes Browserprofil und greift nicht auf Cookies, Login-State oder sensible Daten Ihres Haupt-Chrome zu. Dieses erste Tutorial nutzt nur öffentliche Seiten und keine Logins.

4. disable_security nicht verwenden

Der Parameter disable_security deaktiviert Browser-Sicherheitsrichtlinien. Die offizielle Dokumentation markiert ihn als nicht empfohlen. Wenn ein anderes Tutorial ihn erwähnt, überspringen Sie diesen Teil.

Ergebnisse lesen: „der Browser hat sich bewegt“ reicht nicht

agent.run() gibt eine AgentHistoryList zurück. Mit mehreren Helper-Methoden prüfen Sie Ergebnis und Ablauf:

history = await agent.run(max_steps=20)

# Endergebnis
result = history.final_result()
print("Endergebnis:", result)

# Extrahierter Inhalt
extracted = history.extracted_content()
print("Extrahierter Inhalt:", extracted)

# Fehlerliste
errors = history.errors()
print("Fehler:", errors)

# Ob Fehler aufgetreten sind
if history.has_errors():
    print("Beim Ausführen des Tasks sind Fehler aufgetreten")

# Besuchte URLs
urls = history.urls()
print("Besuchte URLs:", urls)

# Screenshot-Pfade
screenshots = history.screenshot_paths()
print("Screenshots:", screenshots)

# Ausgeführte Actions
actions = history.action_names()
print("Actions:", actions)

# Gesamtzahl der Schritte
steps = history.number_of_steps()
print("Schritte:", steps)

Ein häufiger Anfängerfehler: Man sieht das Browserfenster arbeiten und hält den Task für erfolgreich. Wenn final_result() leer ist, hat der Agent möglicherweise zu früh gestoppt oder den Task falsch verstanden. Wenn errors() Einträge enthält, lesen Sie diese Fehler, bevor Sie den Prompt ändern.

Erste Tasks: öffnen, klicken, extrahieren

Verwenden Sie quotes.toscrape.com als erste Testumgebung. Die Seite ist öffentlich, für Scraping-Übungen gedacht, erfordert keinen Login und hat eine einfache Struktur.

Task 1: öffnen und scrollen

agent = Agent(
    task="Öffne quotes.toscrape.com und scrolle eine Bildschirmhöhe nach unten",
    llm=ChatBrowserUse(),
    browser=Browser(headless=False, allowed_domains=["quotes.toscrape.com"])
)
history = await agent.run(max_steps=10)
print("Besuchte URLs:", history.urls())

Task 2: Button klicken

agent = Agent(
    task="Öffne quotes.toscrape.com und klicke den 'Next'-Button am unteren Seitenende",
    llm=ChatBrowserUse(),
    browser=Browser(headless=False, allowed_domains=["quotes.toscrape.com"])
)
history = await agent.run(max_steps=10)
print("Erfolgreich:", history.is_successful())

Task 3: Inhalt extrahieren

agent = Agent(
    task="Öffne quotes.toscrape.com und extrahiere auf der ersten Seite alle Quote-Texte und Autoren",
    llm=ChatBrowserUse(),
    browser=Browser(headless=False, allowed_domains=["quotes.toscrape.com"])
)
history = await agent.run(max_steps=15)
extracted = history.extracted_content()
print("Extrahierter Inhalt:", extracted)

Task 4: Schritte kombinieren

agent = Agent(
    task="Öffne quotes.toscrape.com, klicke den 'Next'-Button und extrahiere auf der zweiten Seite alle Quote-Texte und Autoren",
    llm=ChatBrowserUse(),
    browser=Browser(headless=False, allowed_domains=["quotes.toscrape.com"])
)
history = await agent.run(max_steps=20)
print("Endergebnis:", history.final_result())
print("Fehler:", history.errors())

Wo Sie bei Fehlern zuerst hinschauen

Wenn der Agent ein leeres Ergebnis zurückgibt, einen Fehler meldet oder hängen bleibt, gehen Sie diese Liste durch:

1. Klick schlägt fehl

  • Prüfen Sie, ob history.errors() „click failed“ oder „element not found“ enthält
  • Ergänzen Sie einen Tastatur-Fallback im Task: „Wenn der Klick fehlschlägt, fokussiere den Button mit Tab und drücke Enter“
  • Prüfen Sie history.screenshot_paths(), um zu sehen, ob das Element sichtbar war

2. Extraktion bleibt leer

  • Prüfen Sie mit history.urls(), ob die Seite wirklich geöffnet wurde
  • Prüfen Sie mit history.screenshot_paths() den Seitenzustand
  • Stellen Sie sicher, dass der Task konkret ist: „extrahiere alle Quote-Texte und Autoren“ statt „schau dir den Inhalt an“

3. Seite hängt

  • Prüfen Sie, ob allowed_domains eine Navigation blockiert hat
  • Prüfen Sie Netzwerkverbindung und Ladezeit
  • Senken Sie max_steps, oder ergänzen Sie Timeout-Verhalten im Task: „Wenn die Seite innerhalb von 10 Sekunden nicht lädt, kehre zur Startseite zurück“

4. Ergebnis ist unvollständig

  • Prüfen Sie, ob max_steps den Lauf zu früh beendet hat
  • Prüfen Sie history.number_of_steps(), um die tatsächliche Schrittzahl zu sehen
  • Schreiben Sie den Task um und teilen Sie ihn in kleinere Teilaufgaben

5. Gesamter Task schlägt fehl

  • Prüfen Sie, ob der API-Key in .env korrekt ist
  • Bestätigen Sie, dass das Modell unterstützt wird: ChatBrowserUse, OpenAI, Anthropic, Google Gemini oder lokales Ollama
  • Prüfen Sie, ob der Task zu abstrakt ist: Ersetzen Sie „öffne die Website und schau dich um“ durch konkrete Aktionen

Beta Agent vs. stabile API: zwei Einstiegspfade

Stand 2026-06-30 beschreibt das offizielle README zwei Agent-Importpfade:

Stabile API

from browser_use import Agent, Browser

Das ist der stabile Einstieg. Wenn Sie Browser Use bereits nutzen, können Sie diesen Pfad weiterverwenden.

Beta-API (0.13)

from browser_use.beta import Agent, BrowserProfile, ChatBrowserUse

Das ist der 0.13 beta agent, gestützt durch Rust core und browser harness. Das offizielle README sagt, bestehende Nutzer können bei der stabilen API bleiben, während neue Nutzer den beta agent ausprobieren können.

Wenn Sie unsicher sind, prüfen Sie das aktuelle offizielle README. Dieser Leitfaden nutzt stabile Beispiele; die beta API kann abweichen.

Open Source vs. Cloud: die Grenze kennen

Dieser Leitfaden verwendet die Open-Source-Bibliothek von Browser Use lokal.

Browser Use Cloud ist ein gehosteter Dienst mit anderer API:

  • Das Cloud SDK nutzt derzeit API v3
  • Cloud bietet structured output, human-in-the-loop, live preview, persistent profiles und verwandte Production-Funktionen
  • Das Python/TypeScript SDK der Cloud ist nicht mit der API der Open-Source-Bibliothek kompatibel

Wann Cloud sinnvoll wird:

  • Production Deployment oder gehostete Laufzeit
  • Erweiterte Anforderungen wie stealth, CAPTCHA und proxies, die dieser Leitfaden nicht behandelt
  • Mehrere Konten, persistente Profile und Teamarbeit

Dieser Leitfaden bleibt beim lokalen Einstieg. Cloud-Nutzung und Preise gehören in einen späteren Artikel.

Nächste Schritte

Dieses Tutorial deckt den lokalen Einstieg in Browser Use ab: Installation, API-Keys, minimales Skript, Seite öffnen, Button klicken, Informationen extrahieren und Fehler suchen.

Sinnvolle nächste Schritte:

Bringen Sie zuerst mit quotes.toscrape.com oder einer öffentlichen GitHub-Seite den ersten Task zum Laufen, bevor Sie Login-State oder Cloud angehen.

Den ersten Browser Use Web-Automation-Agenten ausführen

Ein minimaler Browser Use Ablauf von der Installation bis zur Ergebnisprüfung, um Öffnen, Klicken und Extrahieren auf einer öffentlichen Webseite zu testen.

⏱️ Estimated time: 30 min

  1. 1

    Step 1: Python-Umgebung vorbereiten

    Stellen Sie sicher, dass Python 3.11 oder neuer installiert ist. Das offizielle Quickstart-Beispiel nutzt eine Python-3.12-Umgebung, Sie können aber die passende Version für Ihr Projekt wählen.
  2. 2

    Step 2: browser-use installieren

    Initialisieren Sie ein Projekt mit uv und installieren Sie browser-use[core], oder installieren Sie browser-use[core] mit pip in einer vorhandenen Python-Umgebung.
  3. 3

    Step 3: Chromium-Laufzeitumgebung installieren

    Führen Sie uvx browser-use install aus, um die von Browser Use benötigte Chromium-Laufzeitumgebung herunterzuladen und einzurichten.
  4. 4

    Step 4: Modell-API-Key konfigurieren

    Tragen Sie in .env den benötigten Key ein, etwa BROWSER_USE_API_KEY, OPENAI_API_KEY, ANTHROPIC_API_KEY oder GOOGLE_API_KEY. Schreiben Sie keine echten Kontopasswörter in den Prompt.
  5. 5

    Step 5: Minimales Agent-Skript schreiben

    Erstellen Sie Browser, LLM und Agent. Formulieren Sie den Task als konkrete Schritte: quotes.toscrape.com öffnen, Next klicken und Quote-Text sowie Autor extrahieren.
  6. 6

    Step 6: Ausführungsbereich begrenzen

    Nutzen Sie beim Debuggen headless=False, damit Sie den Browser sehen, und setzen Sie allowed_domains, damit der Agent nur die vorgesehenen Domains besuchen kann.
  7. 7

    Step 7: history zur Prüfung lesen

    Prüfen Sie nach agent.run(max_steps=20) final_result(), extracted_content(), errors(), urls(), screenshot_paths() und action_names(), um zu sehen, ob der Task wirklich abgeschlossen wurde.

FAQ

Was ist Browser Use, und worin unterscheidet es sich von Playwright oder Selenium?
Browser Use ist eine KI-gestützte Bibliothek für Browser-Automatisierung. Sie beschreiben den Task in natürlicher Sprache, und ein LLM interpretiert das Ziel und bedient den Browser. Playwright und Selenium sind regelbasiert: Sie schreiben Code für Elementauswahl, asynchrone Abläufe und Selector-Pflege.
Sollte ich Browser Use Open Source oder Browser Use Cloud verwenden?
Für lokale Entwicklung, Debugging und Lernen reicht die Open-Source-Bibliothek. Cloud ist eher für Production, gehostete Umgebungen, Teamarbeit und erweiterte Funktionen wie stealth oder proxies sinnvoll. Dieser Leitfaden nutzt die Open-Source-Version.
Welches Modell sollte ich mit Browser Use verwenden?
Der offizielle Quickstart empfiehlt ChatBrowserUse. Sie können auch OpenAI, Anthropic, Google Gemini oder lokales Ollama anbinden, aber Stabilität bei Browser-Tasks und Action-Schemas hängt vom Modell ab.
Warum gibt es bei Browser Use beta und stabile Agent-Einstiege?
Stand 2026-06-30 erklärt das offizielle README weiterhin, dass Version 0.13 einen beta agent mit Rust core und browser harness eingeführt hat. Bestehende Nutzer können die stabile API weiterverwenden, neue Nutzer können beta testen. Prüfen Sie das aktuelle README, bevor Sie Imports kopieren.
Wie beschränke ich Browser Use auf eine bestimmte Website?
Nutzen Sie den Parameter allowed_domains, zum Beispiel Browser(allowed_domains=["quotes.toscrape.com"]). Die offizielle Dokumentation unterstützt Subdomain-Wildcards wie *.example.com, aber keine TLD-Wildcards wie example.*.
Wie bekomme ich das Endergebnis aus Browser Use?
Nutzen Sie history.final_result() oder history.extracted_content(). Verlassen Sie sich nicht nur darauf, dass sich das Browserfenster bewegt. Prüfen Sie die Rückgabewerte und bei Bedarf errors(), urls() und screenshot_paths().
Was tun, wenn Browser Use nicht klicken kann oder nichts extrahiert?
Beginnen Sie mit history.errors(), history.screenshot_paths() und den besuchten URLs. Prüfen Sie, ob der Task konkret genug ist und ob max_steps zu früh stoppt. Danach können Sie Tastatur-Fallbacks ergänzen oder den Task in kleinere Schritte teilen.
Kann mein erstes Browser Use Skript direkt in mein echtes Konto einloggen?
Damit sollten Sie nicht starten. Verwenden Sie für den ersten Task öffentliche Seiten und nicht Ihr Hauptprofil. Behalten Sie allowed_domains, ein isoliertes Profil und headless=False beim Debuggen bei. Login-State und Authentifizierung brauchen ein eigenes Sicherheitsdesign.

9 Min. Lesezeit · Veröffentlicht am: 4. Sept. 2026 · Aktualisiert am: 4. Sept. 2026

Kommentare

Melde dich mit GitHub an, um einen Kommentar zu hinterlassen

Easton BlogEaston Blog