- Хост
- gw.prokso.com
- Порт
- 823 HTTP · 824 SOCKS5 — новый IP на каждый запрос · 10000–20000 фиксированный IP (sticky-сессия), HTTP(S) и SOCKS5
- Логин и пароль
- в кабинете, на странице плана
Готовые строки в нужном формате генерирует кабинет: выберите страну, тип IP и протокол.
- Хост — gw.prokso.com, порты 823 (HTTP), 824 (SOCKS5), 10000–20000 (фиксированный IP, HTTP или SOCKS5)
- Логин и пароль — в кабинете на странице плана
- Проверяйте IP в ответе самого запроса через прокси: страница «Мой IP» в браузере ваш скрипт не проверяет
Пошаговая инструкция, как подключить прокси Prokso в Browser Use. Займёт несколько минут.
Шаг 1. Возьмите данные прокси в кабинете
Откройте план и скопируйте хост gw.prokso.com, порт, логин и пароль. Порт 823 — HTTP, 824 — SOCKS5 (оба дают новый IP на каждый запрос); порты 10000–20000 — фиксированный IP до 120 минут, работают и как HTTP, и как SOCKS5 (каждый порт — отдельный адрес). Страну задают в логине: логин__cr.ua.
Шаг 2. Установите библиотеку
Нужен Python 3.11 или новее. Официальный способ — uv add browser-use, подойдёт и pip install browser-use. Ключ модели, которой будет управляться агент, запишите в файл .env, например OPENAI_API_KEY=…. Инструкция написана для версии 0.13.
Шаг 3. Опишите прокси через ProxySettings
Создайте ProxySettings с полями server, username и password и передайте его параметром proxy в Browser. Адрес — http://gw.prokso.com с фиксированным портом 10000–20000, логин и пароль — из генератора в кабинете. Страну задаёт логин: ЛОГИН__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="ЛОГИН",
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())Сохраните код как agent.py рядом с файлом .env и запустите: uv run agent.py или python agent.py. Модель можно взять любую из списка поддерживаемых в документации Browser Use.
Шаг 4. Передайте браузер агенту
Отдайте созданный browser агенту параметром browser. Browser — то же самое, что BrowserSession, документация советует более короткое имя. Логин и пароль Browser Use подставляет сам, когда прокси их запрашивает, поэтому окна авторизации не будет, а агент и модель пароля не видят.
Шаг 5. Почему фиксированный порт
Агент открывает страницы, кликает и заполняет формы в одной сессии, а сайт связывает сессию с IP — смена адреса посреди задачи выглядит подозрительно и может сбросить вход в аккаунт. Поэтому дайте агенту фиксированный порт 10000–20000 и поставьте в кабинете время удержания IP (1–120 минут) с запасом на всю задачу. Порт 823 с новым IP на каждый запрос оставьте для разовых коротких проверок.
Шаг 6. HTTP, а не SOCKS5
Browser Use отвечает на запрос авторизации именно HTTP-прокси, а Chromium не передаёт пароль SOCKS5-прокси. Поэтому с логином и паролем берите схему http://. SOCKS5 (socks5://gw.prokso.com:824 или фиксированный порт) будет работать только с доступом по IP: добавьте в кабинете адрес машины, где запущен агент, и не заполняйте username и password.
Шаг 7. Проверьте вывод
Запустите пример: агент открывает https://api.ipify.org и печатает IP, который видит сайт. Это должен быть адрес прокси, а не ваш. Ошибка 407 означает неверный логин или пароль либо закончившийся трафик на плане. Страница «Мой IP» в вашем браузере здесь не поможет: скрипт запускает собственный браузер, а ваш идёт напрямую.
Несколько агентов Browser Use параллельно, у каждого свой IP
Каждому агенту нужен свой Browser. Если агенты делят один браузер, они делят и IP, и cookies, а их сессии на сайте перемешиваются. Дайте каждому либо свой фиксированный порт 10000–20000, либо свой номер сессии в логине на порту 823. Логин — отдельное поле ProxySettings, поэтому символ ; кодировать не нужно.
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"] # пароль берётся из .env, а не из кода
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"ЛОГИН__cr.us;sessid.{session}", # свой IP на агента примерно на 30 минут
password=PASSWORD,
),
allowed_domains=["https://example.com", "*.example.com"], # агент не уходит за пределы этого сайта
)
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 держит агента на сайте из задачи: он не пойдёт по рекламе и не будет бродить по поисковикам, а это экономит трафик. По умолчанию каждый Browser получает временный профиль, так что агенты не делят cookies. Если задаёте user_data_dir, дайте каждому браузеру отдельную папку.
Время удержания IP против max_steps и длины задачи
Запуск агента — цепочка шагов: каждый шаг — это вызов модели плюс действия в браузере. step_timeout в Agent ограничивает один шаг (по умолчанию 180 секунд), а max_steps в agent.run() — их количество (по умолчанию 500). Так что в худшем случае запуск длится намного дольше, чем держится IP.
Задайте реалистичный max_steps под задачу, замерьте, сколько длится типичный запуск, и выберите время удержания с запасом. Номер сессии в логине держит IP примерно 30 минут; для более долгих задач берите фиксированный порт, где время удержания — до 120 минут. Резидентский или мобильный IP может смениться раньше, если устройство ушло из сети: порт тогда получает новый IP той же страны, поэтому пишите задачи так, чтобы агент мог продолжить, например снова открыть стартовую страницу.
ProxySettings покрывает только трафик Chromium. Обращения к API модели идут из вашего Python-процесса и трафик плана не тратят. Каждую страницу агент загружает полностью, с картинками и скриптами, поэтому точная задача с прямым адресом стоит меньше, чем «найди в интернете».
Что сообщает агент Browser Use, когда прокси сбоит
Ошибка перехода не роняет скрипт: агент записывает её в шаг и пробует ещё раз, до max_failures раз (по умолчанию 5). После запуска history.has_errors() и history.errors() покажут, что произошло. Типичные сообщения:
- net::ERR_PROXY_CONNECTION_FAILED. Chromium не может добраться до
gw.prokso.com: проверьте порт вserverи то, что исходящие соединения разрешены на машине с агентом. - net::ERR_TUNNEL_CONNECTION_FAILED. Прокси не открыл туннель к сайту: на плане закончился трафик или он на паузе, сайт есть в списке закрытых сайтов или работает на закрытом порту.
- Агент раз за разом попадает на страницу «доступ запрещён» или капчу. Сайт не хочет автоматических посещений. Агенту здесь нечего делать: остановите задачу и проверьте правила сайта и наши правила использования.
Если прокси не работает
Вопросы и ответы
Для какой версии написана инструкция?
Для версии Browser Use 0.13. В ней прокси задаётся параметром proxy в Browser. Для совместимости со старым кодом те же параметры принимает и BrowserProfile, который передают в Browser(browser_profile=…).
Нужно ли писать пароль прокси в задаче агента?
Нет, и не стоит: задачу читает модель. Логин и пароль лежат только в ProxySettings, Browser Use подставляет их сам. Чтобы не держать пароль в коде, читайте его из переменной в .env.
Что значит ошибка 407?
Прокси не принял логин или пароль. Скопируйте их из генератора в кабинете ещё раз, без пробелов в начале и в конце, и проверьте, остался ли трафик на плане.
Считается ли трафик к API модели в моём плане?
Нет, пока задан только ProxySettings: он проксирует браузер, а клиент модели соединяется из вашего скрипта напрямую. Если задать HTTP_PROXY или HTTPS_PROXY для всего процесса, запросы к модели тоже могут пойти через прокси.
Могут ли два агента делить один фиксированный порт?
Технически да, но тогда оба выходят с одного IP, и сайт видит два набора cookies с одного адреса. Для отдельных задач дайте каждому агенту свой порт или номер сессии.
Сколько агентов можно запустить на одном плане?
План позволяет до 1000 одновременных соединений, а браузер открывает несколько соединений на страницу. На практике предел — память вашей машины и лимиты модели, а не план.