- 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ół.
- 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 wserveri 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.