Три проблемы, которые создают агенты#
- Непредсказуемые цели. Агент сам решает, куда перейти, поэтому нельзя заранее выбрать серверный прокси для одного сайта и резидентский для другого. Надёжный вариант по умолчанию — выходной узел резидентского прокси.
- Много переходов в одной задаче. Найти, открыть, нажать, прочитать и повторить: задача представляет собой сессию и должна до конца выполняться через один выходной узел.
- Неограниченные расходы. Зациклившийся агент способен загрузить гигабайты данных. Установите для него лимит, который он не сможет превысить.
Переменные окружения для всей цепочки инструментов#
Большинство 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 в агенте, включая сторонние инструменты, будут использовать его.
import { EnvHttpProxyAgent, setGlobalDispatcher } from "undici";
setGlobalDispatcher(new EnvHttpProxyAgent()); // читает HTTPS_PROXY / NO_PROXYСервер Playwright MCP#
Сервер Playwright MCP, с помощью которого Claude, инструменты наподобие ChatGPT и агенты в IDE управляют браузером, позволяет задать прокси при запуске. Передайте шлюз с именем пользователя для закреплённой сессии и список обхода прокси для локальных хостов.
{
"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 (сервер, имя пользователя и пароль) в конфигурации браузера. При каждом запуске агента задавайте новый идентификатор сессии, чтобы параллельные запуски не использовали один выходной узел, а локаль и часовой пояс контекста устанавливайте в соответствии со страной выходного узла.
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: этим запросам не нужен выход через резидентский прокси, и они лишь расходовали бы трафик.
Какую сеть выбрать для агента, который в основном читает документацию и открытые сайты?
Адреса серверных прокси дешевле и быстрее для открытых источников, но агент не может предсказать, когда попадёт на защищённый сайт. Надёжный вариант по умолчанию — резидентский прокси; переходите на серверный только для агентов, которые работают исключительно с известными открытыми ресурсами.