Интеграции · Средний

Как подключить ИИ-агента к прокси: переменные окружения, Playwright MCP и браузерные агенты

Агенты просматривают сайты как нетерпеливые люди: открывают много страниц, переходят к непредсказуемым целям и не помнят, какой сайт их заблокировал. Стабильную конфигурацию обеспечат отдельный выходной узел резидентского прокси для каждой задачи, сессия на всё время её выполнения и предельный лимит расходов.

3 минуты чтения 7 разделов Обновлено Опубликовано

Три проблемы, которые создают агенты#

  • Непредсказуемые цели. Агент сам решает, куда перейти, поэтому нельзя заранее выбрать серверный прокси для одного сайта и резидентский для другого. Надёжный вариант по умолчанию — выходной узел резидентского прокси.
  • Много переходов в одной задаче. Найти, открыть, нажать, прочитать и повторить: задача представляет собой сессию и должна до конца выполняться через один выходной узел.
  • Неограниченные расходы. Зациклившийся агент способен загрузить гигабайты данных. Установите для него лимит, который он не сможет превысить.

Переменные окружения для всей цепочки инструментов#

Большинство HTTP-стеков Python (requests, httpx, aiohttp, urllib) и многие инструменты учитывают переменные HTTPS_PROXY, HTTP_PROXY и NO_PROXY. Если задать их в процессе агента, все инструменты, загружающие страницы, будут работать через прокси без изменения их кода.

Командная оболочка
export HTTPS_PROXY="http://AGENTUSER-cc-us-sid-task-4f2a-ttl-2h:[email protected]:9000"
export HTTP_PROXY="$HTTPS_PROXY"
export NO_PROXY="localhost,127.0.0.1,api.openai.com,api.anthropic.com"
python agent.py

Исключите хосты API поставщика модели с помощью NO_PROXY: запросам к LLM не требуется выход через резидентский прокси, и такой маршрут лишь расходовал бы трафик.

Агенты на Node.js#

По умолчанию функция fetch в Node (undici) игнорирует переменные окружения. Один раз установите глобальный диспетчер при запуске, и все вызовы fetch в агенте, включая сторонние инструменты, будут использовать его.

Node.js
import { EnvHttpProxyAgent, setGlobalDispatcher } from "undici";
setGlobalDispatcher(new EnvHttpProxyAgent()); // читает HTTPS_PROXY / NO_PROXY

Сервер Playwright MCP#

Сервер Playwright MCP, с помощью которого Claude, инструменты наподобие ChatGPT и агенты в IDE управляют браузером, позволяет задать прокси при запуске. Передайте шлюз с именем пользователя для закреплённой сессии и список обхода прокси для локальных хостов.

Конфигурация MCP
{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest",
        "--proxy-server=http://res.hodlproxy.com:9000",
        "--proxy-bypass=localhost,127.0.0.1"
      ]
    }
  }
}

Chromium запрашивает учётные данные прокси, но сессия MCP не может ответить на такой запрос. Добавьте публичный IP-адрес машины в белый список на панели управления, чтобы окно запроса не появлялось. Если для этой машины нужен отдельный лимит трафика, используйте субпользователя. Если сервер позволяет задавать имя пользователя и пароль, вместо этого передайте имя пользователя с закреплённой сессией.

Браузерные агенты на основе Playwright#

Фреймворки наподобие browser-use предоставляют доступ к настройкам прокси Playwright (сервер, имя пользователя и пароль) в конфигурации браузера. При каждом запуске агента задавайте новый идентификатор сессии, чтобы параллельные запуски не использовали один выходной узел, а локаль и часовой пояс контекста устанавливайте в соответствии со страной выходного узла.

Агент на Python и Playwright
proxy = {
    "server": "http://res.hodlproxy.com:9000",
    "username": f"AGENTUSER-cc-us-sid-{run_id}-ttl-1h",
    "password": "PASS",
}
# передайте `proxy` там, где фреймворк принимает настройки прокси Playwright

Ограничение расходов с помощью субпользователей#

Создайте отдельного субпользователя для каждого агента или проекта и задайте ему лимит трафика в ГБ. Агент получит собственные имя пользователя и пароль, его потребление будет учитываться отдельно, а при любом зацикливании он не сможет превысить установленный лимит расходов.

Ограничивайте нагрузку#

  • Ограничьте число запросов агента к каждому домену и в минуту: ротация IP не оправдывает чрезмерную нагрузку.
  • Блокируйте изображения, мультимедиа и шрифты в контексте браузера: агенты читают текст.
  • Записывайте идентификатор сессии вместе с каждой задачей, чтобы для заблокированного запуска можно было определить выходной узел и повторить задачу на новом.

Частые вопросы#

Нужно ли также направлять вызовы API LLM через прокси?

Нет. Исключите хосты поставщика с помощью NO_PROXY: этим запросам не нужен выход через резидентский прокси, и они лишь расходовали бы трафик.

Какую сеть выбрать для агента, который в основном читает документацию и открытые сайты?

Адреса серверных прокси дешевле и быстрее для открытых источников, но агент не может предсказать, когда попадёт на защищённый сайт. Надёжный вариант по умолчанию — резидентский прокси; переходите на серверный только для агентов, которые работают исключительно с известными открытыми ресурсами.

Можно начинать

Попробуйте на практике.

Создайте аккаунт, пополните баланс на $20 и вставьте конечную точку из этого руководства в свой инструмент. Срок действия оплаченного трафика не ограничен.