Proxy-Konfiguration für Browser-Nutzung: Pro-Sitzung Exit-IPs

Suchen Sie nach einem Proxy für die Browser-Nutzung und Google zeigt Ihnen das Einstellungsdialogfeld von Chrome. Das ist die andere Sache: die Bibliothek für Browser-Nutzung KI-Agenten über authentifizierte, residierende IPs zu leiten, eine pro Agent.

Suchen Sie nach Proxy für Browser-Nutzung und Google zeigt Ihnen das Einstellungsdialogfeld von Chrome, die chrome.proxy Erweiterungs-API und ein Tutorial für eine Unternehmens-PAC-Datei. Nichts davon ist das, wonach Sie gesucht haben. Sie möchten browser-use - die Python-Bibliothek mit 108k GitHub-Sternen, die es einem LLM ermöglicht, einen echten Browser zu steuern - über einen authentifizierten Proxy leiten, damit Ihr Agent nicht von Ihrer Büro-IP aus ein Ziel bombardiert. Dies ist der Leitfaden: wo der Parameter tatsächlich lebt, warum er nach einem Upgrade stillschweigend aufhört zu funktionieren, wie man jedem parallelen Agenten seine eigene Exit-IP gibt und was passiert, wenn die IP während einer langen Aufgabe wechselt.

Wo der Proxy-Parameter für die Browser-Nutzung tatsächlich lebt

Der Proxy ist eine Eigenschaft der Browsersitzung, nicht des Agenten. In der aktuellen Bibliothek ist Browser ein Alias für BrowserSession - die Dokumentation ist explizit, dass sie genau die gleiche Klasse sind - also gilt jedes Tutorial, das Sie mit einem Namen finden, auch für den anderen. Der Parameter ist proxy, und die Dokumentation typisiert ihn als ProxySettings mit vier Feldern: server, bypass, username und password. Ein äquivalentes Dict funktioniert, was die meisten Leute übergeben:

import asyncio
from browser_use import Agent, Browser
# llm = ...  your model of choice; see the browser-use docs for the import

PROXY = {
    "server": "http://gate.quantumproxies.io:8000",  # scheme is mandatory
    "username": "USER",
    "password": "PASS",
    "bypass": "localhost,127.0.0.1",                  # keep local calls off the proxy
}

browser = Browser(proxy=PROXY, headless=False)

async def main():
    agent = Agent(
        task="Open https://api.ipify.org?format=json and report the IP you see",
        llm=llm,
        browser_session=browser,
    )
    await agent.run()

asyncio.run(main())

Zwei Details, die Menschen falsch machen. Erstens, Anmeldedaten gehören in die Felder username und password, nicht in server gestopft - Chromium wird keine Proxy-Auth-Herausforderung von einem URL-eingebetteten Passwort beantworten, und browser-use hat keinen Dialog, um es einzugeben. Zweitens, server benötigt ein Schema. gate.quantumproxies.io:8000 ist keine Proxy-URL; http://gate.quantumproxies.io:8000 ist es. Wenn Anmeldedaten Ihnen überhaupt Probleme bereiten, entfernt das Whitelisting der IP Ihres Servers Benutzer:Passwort vollständig aus der Gleichung - das Gateway erkennt den Anrufer und der Browser sieht nie einen 407.

Warum Ihre Proxy-Konfiguration für die Browser-Nutzung stillschweigend nichts tut

Die meistbesuchte Seite zu diesem Thema nach der Dokumentation ist GitHub Issue #2445, eingereicht im Juli 2025: ein Proxy, der in 0.1.45 funktionierte, hörte auf, in 0.5.4 wirksam zu sein, und der einzige Hinweis war, dass der Agent fröhlich DNS_PROBE_FINISHED_NXDOMAIN in seiner eigenen Zusammenfassung meldete. Diese Fehlermodus - der Agent erzählt von einem Netzwerkfehler, als wäre es eine Tatsache über die Website - ist das Kennzeichen eines halbkonfigurierten Proxys. Arbeiten Sie diese Liste durch, bevor Sie mehr Tokens verbrennen:

import requests

PROXY_URL = "http://USER:PASS@gate.quantumproxies.io:8000"
r = requests.get(
    "https://api.ipify.org?format=json",
    proxies={"http": PROXY_URL, "https": PROXY_URL},
    timeout=20,
)
print(r.status_code, r.text)   # must NOT be your own IP

Wenn das eine fremde IP druckt, sind die Anmeldedaten und das Gateway in Ordnung und das Problem liegt in der Sitzungsverkabelung. Wenn es Ihre eigene Adresse oder eine 407 druckt, beheben Sie das zuerst. Unser kostenloser IP-Checker zeigt Ihnen, wie der Exit von der anderen Seite aussieht - ASN, Typ und Ruf - was das zweite ist, was Sie überprüfen sollten, wenn Seiten geladen werden, aber jede von ihnen ein CAPTCHA ist.

Checkliste, die Symptome eines Proxy für die Browser-Nutzung (DNS-Fehler, echtes IP-Leck, Konfiguration, die in einer älteren Version funktionierte) mit den zu überprüfenden Korrekturen abgleicht
Die Konfiguration sieht normalerweise richtig aus. Der Fehler liegt fast immer bei der Sitzung, die der Agent tatsächlich erhalten hat, dem fehlenden Schema oder einer globalen Umgebungsvariable.

Ein Proxy pro Sitzung, damit parallele Agenten keine Exit-IP teilen

Das ist der ganze Grund, warum der Parameter auf der Sitzung sitzt und nicht auf einer globalen Konfiguration. Führen Sie zehn Agenten durch einen gemeinsamen Browser und das Ziel sieht zehnmal den Verkehr von einer Adresse, was der schnellste Weg ist, eine residierende IP zu verbrennen. Bauen Sie die Sitzung stattdessen innerhalb der Coroutine auf und geben Sie jedem eine eigene Sticky-Sitzungskennung, damit das Gateway sie für die Dauer der Aufgabe an einen einzigen Exit bindet:

import asyncio, secrets
from browser_use import Agent, Browser

def session_proxy(sid: str, country: str = "us"):
    return {
        "server": "http://gate.quantumproxies.io:8000",
        "username": f"USER-country-{country}-session-{sid}",
        "password": "PASS",
    }

async def run_task(task: str, country: str):
    sid = secrets.token_hex(3)                  # e.g. a1b2c3
    browser = Browser(
        proxy=session_proxy(sid, country),
        user_data_dir=None,                     # incognito: no shared cookies
        allowed_domains=["*.example.com"],      # keep the agent on target
    )
    agent = Agent(task=task, llm=llm, browser_session=browser)
    return await agent.run()

async def main():
    await asyncio.gather(
        run_task("Find the price of SKU-1", "us"),
        run_task("Find the price of SKU-1", "de"),
        run_task("Find the price of SKU-1", "gb"),
    )

asyncio.run(main())

Drei Flags leisten dort echte Arbeit. user_data_dir=None läuft im Inkognito-Modus, sodass Agenten nicht die Cookies des anderen erben und leise zwei Identitäten auf ein Profil zusammenführen können. allowed_domains beschränkt die Navigation auf eine Musternliste - beachten Sie, dass Platzhalter in der TLD-Position, wie example.*, absichtlich abgelehnt werden, und Listen mit mehr als hundert Einträgen werden in Sets optimiert, wobei die Mustererkennung ausgeschaltet wird. Und die Sitzungskennung im Benutzernamen ist das, was die Exit-IP stabil macht; die genauen Flag-Namen für Land und Sitzung befinden sich in Ihrem Dashboard, aber die Form ist überall gleich.

Das Exit-Land pro Aufgabe wählen

Agenten, die einkaufen, Preise vergleichen oder Verfügbarkeiten prüfen, liegen standardmäßig falsch, wenn sie aus dem falschen Land surfen. Da der Proxy pro Sitzung ist, ist das Land ein Argument pro Aufgabe - tauschen Sie country-us gegen country-de und die gleiche Aufgabe liefert deutsche Preise. Wählen Sie aus den über 200 Ländern im Pool und halten Sie den Rest des Browsers damit kohärent: übergeben Sie eine passende Sprache durch args (Chromium akzeptiert --lang=de-DE), anstatt eine deutsche Exit-IP Seiten in US-Englisch anfordern zu lassen. Für ausschließlich mobile Oberflächen und die vertrauenswürdigsten Exits verhalten sich mobile IPs wieder anders, da Carrier-NAT Tausende von echten Nutzern hinter derselben Adresse platziert.

Geben Sie jedem Agenten seine eigene residierende Exit-IP

Ablauf, der eine Aufgabenwarteschlange zeigt, die sich auf eine browser-use Sitzung pro Agenten verteilt, jede mit ihrer eigenen Sticky-Proxy-Sitzung, sodass die Zielseite unterschiedliche residierende IPs sieht
Bauen Sie die Sitzung innerhalb der Aufgabe auf, nicht außerhalb. Ein Browser pro Agent, eine Sticky-Sitzung pro Browser, eine IP pro Identität.

Was passiert, wenn die IP während der Aufgabe rotiert

Agenten sind langsam auf eine Weise, wie es Scraper nicht sind. Zwischen der standardmäßigen 0,5s Pause nach jeder Aktion, einer Mindestwartezeit von 0,25s für den Seitenzustand und einer 0,5s Wartezeit für das Netzwerk-Idle verbringt browser-use über eine Sekunde pro Schritt, bevor das Modell etwas gesagt hat - und die Modell-Rundreise dauert normalerweise mehrere Sekunden mehr. Eine Aufgabe mit fünfzehn Schritten läuft daher ein bis zwei Minuten Echtzeit. Wenn Ihre Exit-IP pro Anfrage rotiert, wird die Seite bei jedem dieser Schritte eine andere Adresse sehen: der Login fällt weg, der Warenkorb leert sich und der Agent meldet, dass der Checkout-Button verschwunden ist.

Die Lösung ist eine Sticky-Sitzung, deren Fenster bequem Ihre schlimmste Aufgabendauer übersteigt, nicht Ihre durchschnittliche. Zeit ein paar echte Läufe, nehmen Sie den langsamsten und fügen Sie eine Marge hinzu - Agenten wiederholen sich, und eine Wiederholung verdoppelt die Uhr. Wenn eine Aufgabe wirklich länger als jedes Sticky-Fenster dauern muss, teilen Sie sie auf: loggen Sie sich ein und exportieren Sie den Zustand, dann setzen Sie in einer neuen Sitzung mit den Cookies fort, die Sie über storage_state gespeichert haben. Und wenn Sie überhaupt zwischen pro-Anfrage-Rotation und Sticky wählen, deckt unsere Infrastruktur-Checkliste für KI-Agenten den Rest der Schicht um diese Entscheidung ab.

Halten Sie den Proxy von Ihren LLM-Anrufen fern

Das kostet echtes Geld und fast niemand bemerkt es. Das Setzen von HTTPS_PROXY als Umgebungsvariable, um den Proxy "überall anzuwenden", leitet auch jeden Modell-API-Anruf durch Ihr residierendes Gateway - Eingabeaufforderungen und Antworten, bei jedem Schritt, abgerechnet pro Gigabyte für das Privileg, den langen Weg zu gehen. Konfigurieren Sie den Proxy nur auf dem Browser und lassen Sie die Prozessumgebung in Ruhe. Während Sie Bytes zählen, beachten Sie, dass browser-use uBlock Origin standardmäßig über enable_default_extensions lädt: lassen Sie es eingeschaltet, denn jede Werbeanfrage, die es blockiert, ist eine, die Sie nicht bezahlen. Die vollständige Arithmetik finden Sie in unserer Aufschlüsselung von was ein KI-Agent in Bandbreite kostet, und die klassische Scraping-Version des Kompromisses finden Sie in headless browser vs HTTP requests.

Häufig gestellte Fragen

Wie setze ich einen Proxy in browser-use?

Übergeben Sie proxy=, wenn Sie den Browser (auch als BrowserSession exportiert) konstruieren, und übergeben Sie dann dieses Objekt an den Agent. Der Wert enthält server mit einem expliziten http:// Schema, plus username, password und eine optionale bypass Liste. Es gibt keine Proxy-Einstellung auf Agentenebene - sie gehört zur Sitzung.

Warum funktioniert meine Proxy-Konfiguration für die Browser-Nutzung nicht?

In der Reihenfolge der Wahrscheinlichkeit: der Agent läuft auf einer anderen Sitzung als der, die Sie konfiguriert haben, server fehlt das Schema, Sie haben cdp_url gesetzt, sodass der Browser anderswo ohne Proxy-Flags gestartet wurde, oder eine globale Proxy-Umgebungsvariable überschreibt Sie. Überprüfen Sie den Proxy zuerst mit einem einfachen HTTP-Client - ein DNS-Fehler im Agentenprotokoll bedeutet normalerweise, dass überhaupt kein Proxy angehängt ist.

Kann jeder browser-use Agent eine andere IP verwenden?

Ja, und das sollten Sie auch. Erstellen Sie den Browser innerhalb jeder Aufgaben-Coroutine mit eigenen Proxy-Anmeldedaten, anstatt eine Instanz zu teilen. Das Hinzufügen einer eindeutigen Sitzungskennung zum Gateway-Benutzernamen fixiert jeden Agenten an einem eigenen Exit für die Dauer seines Laufs, sodass zehn parallele Agenten wie zehn Benutzer aussehen, anstatt wie ein sehr beschäftigter.

Welcher Proxy-Typ eignet sich am besten für browser-use Agenten?

Rotierende residierende für Forschung und Preisüberprüfungen, bei denen jede Aufgabe unabhängig ist, Sticky-residierende für alles mit Login oder Warenkorb, und mobile, wenn das Ziel feindlich oder nur mobil ist. Rechenzentrums-IPs sind in Ordnung für interne Ziele und ungeschützte Seiten, und sie sind pro Gigabyte viel günstiger - was wichtig ist, da ein Browser-Agent viele Gigabytes bewegt.

Verhindert ein Proxy, dass browser-use erkannt wird?

Nein. Ein Proxy behebt nur die IP-Schicht; der Fingerabdruck eines automatisierten Chromium ist ein separates Problem, ebenso wie das Verhalten eines Agenten, der mit millisekundengenauer Präzision klickt. Vertrauenswürdige residierende Exits entfernen das einfachste Signal, aber kombinieren Sie sie mit einem auf Stealth ausgerichteten Browser-Build, wenn das Ziel ernsthafte Bot-Verwaltung betreibt.

Nichts hier ist exotisch: der Proxy ist eine Sitzungseigenschaft, und die beiden Dinge, die ihn brechen, sind ein fehlendes Schema und eine Sitzung, die Sie nie übergeben haben. Machen Sie diese richtig, geben Sie jedem parallelen Agenten seinen eigenen Sticky-Exit, und halten Sie das Gateway von Ihren Modell-API-Anrufen fern. Für das größere Bild siehe unsere Karte der Anti-Detect-Frameworks und authentifizierten Proxies.

Führen Sie browser-use auf über 90 Millionen residierenden IPs in über 200 Ländern aus