Налаштування проксі в Browser Use

Проксі для Browser Use: ProxySettings з логіном і паролем у Browser, фіксований IP на всю сесію агента, чому HTTP замість SOCKS5 і країна в логіні.

Оновлено · Редакція Prokso

Дані для підключення
Хост
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 (sticky-сесія) до 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 одночасних з'єднань, а браузер відкриває кілька з'єднань на сторінку. На практиці межа — пам'ять вашої машини та ліміти моделі, а не план.