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

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


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

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


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

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

```bash
export HTTPS_PROXY="http://AGENTUSER-cc-us-sid-task-4f2a-ttl-2h:PASS@res.hodlproxy.com: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 в агенте, включая сторонние инструменты, будут использовать его.

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


## Сервер Playwright MCP

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

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


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

Создайте отдельного [субпользователя](https://hodlproxy.com/ru/docs/authentication) для каждого агента или проекта и задайте ему лимит трафика в ГБ. Агент получит собственные имя пользователя и пароль, его потребление будет учитываться отдельно, а при любом зацикливании он не сможет превысить установленный лимит расходов.


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

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


## Вопросы

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

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

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

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

Источник: https://hodlproxy.com/ru/guides/ai-agents-proxy
