Jak skonfigurować proxy w Browser Use

Proxy w Browser Use: ProxySettings z loginem i hasłem w Browser, stały IP na sesję agenta, dlaczego HTTP, a nie SOCKS5, kraj w loginie.

Zaktualizowano · Redakcja Prokso

Dane do połączenia
Host
gw.prokso.com
Port
823 HTTP · 824 SOCKS5 — nowy IP przy każdym żądaniu · 10000–20000 stały IP na całą sesję, HTTP(S) i SOCKS5
Login i hasło
w panelu klienta, na stronie planu

Gotowe wiersze w potrzebnym formacie wygenerujesz w panelu klienta: wybierz kraj, typ IP i protokół.

W skrócie
  • Host gw.prokso.com, porty 823 (HTTP), 824 (SOCKS5), 10000–20000 (stały IP na sesję, HTTP lub SOCKS5)
  • Login i hasło znajdziesz w panelu klienta na stronie planu
  • Sprawdzaj IP w odpowiedzi na samo żądanie wysłane przez proxy: strona „Mój IP” w przeglądarce nie testuje Twojego skryptu

Instrukcja krok po kroku, jak podłączyć proxy Prokso w Browser Use. Zajmie Ci to kilka minut.

Krok 1. Pobierz dane proxy z panelu klienta

Otwórz swój plan i skopiuj host gw.prokso.com, port, login i hasło. Port 823 to HTTP, a 824 to SOCKS5 (oba dają nowy IP przy każdym żądaniu); porty 10000–20000 utrzymują jeden IP (stały IP na sesję) do 120 minut i działają zarówno jako HTTP, jak i SOCKS5 (każdy port to osobny adres). Kraj ustawiasz w loginie: username__cr.ua.

Krok 2. Zainstaluj bibliotekę

Potrzebujesz Pythona 3.11 lub nowszego. Oficjalny sposób to uv add browser-use; pip install browser-use też działa. Klucz API modelu, który będzie sterował agentem, wpisz do pliku .env, na przykład OPENAI_API_KEY=…. Instrukcja dotyczy wersji 0.13.

Krok 3. Opisz proxy za pomocą ProxySettings

Utwórz ProxySettings z polami server, username i password i przekaż go jako parametr proxy w Browser. Adres to http://gw.prokso.com z portem ze stałym IP z zakresu 10000-20000; login i hasło pochodzą z generatora w panelu klienta. Login ustala kraj: USERNAME__cr.de.

import asyncio
from browser_use import Agent, Browser, ChatOpenAI
from browser_use.browser import ProxySettings
from dotenv import load_dotenv

load_dotenv()

browser = Browser(
    proxy=ProxySettings(
        server="http://gw.prokso.com:10001",
        username="USERNAME",
        password="PASSWORD",
    ),
)


async def main():
    agent = Agent(
        task="Open https://api.ipify.org and return the IP address shown on the page",
        llm=ChatOpenAI(model="gpt-5.6-luna"),
        browser=browser,
    )
    history = await agent.run()
    print(history.final_result())


asyncio.run(main())

Zapisz kod jako agent.py obok pliku .env i uruchom go: uv run agent.py albo python agent.py. Możesz użyć dowolnego modelu z listy obsługiwanych w dokumentacji Browser Use.

Krok 4. Przekaż przeglądarkę agentowi

Przekaż utworzony browser agentowi parametrem browser. Browser to ta sama klasa co BrowserSession; dokumentacja zaleca krótszą nazwę. Browser Use sam podaje login i hasło, gdy proxy o nie poprosi, więc nie pojawia się okno logowania, a hasła nie widzi ani agent, ani model.

Krok 5. Dlaczego port ze stałym IP

Agent otwiera strony, klika i wypełnia formularze w ramach jednej sesji, a serwis wiąże tę sesję z IP, więc zmiana adresu w trakcie zadania wygląda podejrzanie i może Cię wylogować. Dlatego daj agentowi port ze stałym IP z zakresu 10000-20000 i ustaw w panelu klienta czas utrzymania IP (1-120 minut) z zapasem na całe zadanie. Port 823, z nowym IP przy każdym żądaniu, zostaw do szybkich jednorazowych sprawdzeń.

Krok 6. HTTP, a nie SOCKS5

Browser Use odpowiada na prośbę o logowanie wysłaną przez proxy HTTP, a Chromium nie wysyła hasła do proxy SOCKS5. Dlatego przy logowaniu loginem i hasłem używaj schematu http://. SOCKS5 (socks5://gw.prokso.com:824 lub port ze stałym IP) działa tylko z białą listą IP: dodaj w panelu klienta adres maszyny, na której działa agent, a pola username i password zostaw puste.

Krok 7. Sprawdź wynik

Uruchom przykład: agent otwiera https://api.ipify.org i wypisuje IP, który widzi strona. Powinien to być adres proxy, a nie Twój. Błąd 407 oznacza nieprawidłowy login lub hasło albo wyczerpany transfer w planie. Strona „Mój IP” w Twojej przeglądarce tu nie pomoże: skrypt uruchamia własną przeglądarkę, a Twoja łączy się bezpośrednio.

Kilka agentów Browser Use równolegle, każdy z własnym IP

Każdy agent potrzebuje własnego Browser. Jeśli agenci dzielą jedną przeglądarkę, dzielą też IP i cookies, a ich sesje na stronie się mieszają. Daj każdemu albo własny port ze stałym IP z zakresu 10000-20000, albo własny numer sesji w loginie na porcie 823. Login to osobne pole ProxySettings, więc znaku ; nie trzeba kodować.

import asyncio
import os
from browser_use import Agent, Browser, ChatOpenAI
from browser_use.browser import ProxySettings
from dotenv import load_dotenv

load_dotenv()
PASSWORD = os.environ["PROKSO_PASSWORD"]  # hasło z pliku .env, nie z kodu

TASKS = {
    "agent1": "Open https://example.com/catalog and list the first five product names",
    "agent2": "Open https://example.com/delivery and summarise the delivery terms",
}


def make_browser(session):
    return Browser(
        proxy=ProxySettings(
            server="http://gw.prokso.com:823",
            username=f"USERNAME__cr.us;sessid.{session}",  # własny IP dla agenta na około 30 minut
            password=PASSWORD,
        ),
        allowed_domains=["https://example.com", "*.example.com"],  # agent nie wychodzi poza tę stronę
    )


async def run(session, task):
    agent = Agent(
        task=task,
        llm=ChatOpenAI(model="gpt-5.6-luna"),
        browser=make_browser(session),
        max_failures=3,
    )
    history = await agent.run(max_steps=25)
    print(session, history.is_done(), history.final_result())


async def main():
    await asyncio.gather(*(run(s, t) for s, t in TASKS.items()))


asyncio.run(main())

allowed_domains trzyma agenta na stronie z zadania: nie pójdzie za reklamą i nie będzie błądzić po wyszukiwarkach, a to oszczędza transfer. Domyślnie każdy Browser dostaje tymczasowy profil, więc agenci nie dzielą cookies. Jeśli ustawiasz user_data_dir, daj każdej przeglądarce osobny folder.

Czas utrzymania IP a max_steps i długość zadania

Uruchomienie agenta to łańcuch kroków: każdy krok to wywołanie modelu plus działania w przeglądarce. step_timeout w Agent ogranicza jeden krok (domyślnie 180 sekund), a max_steps w agent.run() ich liczbę (domyślnie 500). W najgorszym razie uruchomienie trwa więc znacznie dłużej, niż utrzymuje się IP.

Ustaw realistyczne max_steps dla zadania, zmierz, ile trwa typowe uruchomienie, i wybierz czas utrzymania z zapasem. Numer sesji w loginie trzyma IP przez około 30 minut; do dłuższych zadań weź port ze stałym IP, gdzie czas utrzymania sięga 120 minut. Rezydencjalny lub mobilny IP może zmienić się wcześniej, jeśli urządzenie opuści sieć: port dostaje wtedy nowy IP z tego samego kraju, więc pisz zadania tak, żeby agent mógł kontynuować, na przykład ponownie otworzyć stronę startową.

ProxySettings obejmuje tylko ruch Chromium. Wywołania API modelu wychodzą z twojego procesu Pythona i nie zużywają transferu planu. Każdą stronę agent ładuje w całości, z obrazkami i skryptami, więc precyzyjne zadanie z bezpośrednim adresem kosztuje mniej niż „znajdź w internecie”.

Co zgłasza agent Browser Use, gdy proxy zawodzi

Błąd nawigacji nie wywraca skryptu: agent zapisuje go w kroku i próbuje ponownie, do max_failures razy (domyślnie 5). Po uruchomieniu history.has_errors() i history.errors() pokażą, co się stało. Typowe komunikaty:

  • net::ERR_PROXY_CONNECTION_FAILED. Chromium nie może dotrzeć do gw.prokso.com: sprawdź port w server i to, czy połączenia wychodzące są dozwolone na maszynie z agentem.
  • net::ERR_TUNNEL_CONNECTION_FAILED. Proxy nie otworzyło tunelu do strony: na planie skończył się transfer lub plan jest wstrzymany, strona jest na liście zablokowanych stron albo działa na zamkniętym porcie.
  • Agent raz za razem trafia na stronę „brak dostępu” albo captchę. Strona nie chce automatycznych wizyt. Agent nie ma tu nic do zrobienia: zatrzymaj zadanie i sprawdź zasady strony oraz nasze zasady korzystania.

Jeśli proxy nie działa

Pytania i odpowiedzi (FAQ)

Dla jakiej wersji jest ta instrukcja?

Dla Browser Use w wersji 0.13. W niej proxy ustawia się parametrem proxy w Browser. Dla zgodności ze starszym kodem BrowserProfile przyjmuje te same parametry i przekazuje się go jako Browser(browser_profile=…).

Czy wpisywać hasło do proxy w zadaniu agenta?

Nie, i nie należy tego robić: model czyta treść zadania. Login i hasło są tylko w ProxySettings, a Browser Use sam je uzupełnia. Żeby hasło nie trafiło do kodu, odczytuj je ze zmiennej w pliku .env.

Co oznacza błąd 407?

Proxy odrzuciło login lub hasło. Skopiuj je ponownie z generatora w panelu klienta, bez spacji na początku i na końcu, i sprawdź, czy w planie został jeszcze transfer.

Czy ruch do API modelu liczy się w moim planie?

Nie, dopóki ustawiasz tylko ProxySettings: to proxy obejmuje przeglądarkę, a klient modelu łączy się z twojego skryptu bezpośrednio. Jeśli ustawisz HTTP_PROXY lub HTTPS_PROXY dla całego procesu, żądania do modelu też mogą pójść przez proxy.

Czy dwóch agentów może dzielić jeden port ze stałym IP?

Technicznie tak, ale wtedy obaj wychodzą z jednego IP, a strona widzi dwa zestawy cookies z jednego adresu. Do osobnych zadań daj każdemu agentowi własny port lub numer sesji.

Ilu agentów mogę uruchomić na jednym planie?

Plan pozwala na maksymalnie 1000 jednoczesnych połączeń, a przeglądarka otwiera kilka połączeń na stronę. W praktyce granicą jest pamięć twojej maszyny i limity modelu, a nie plan.