Все статьиТехническое13 мин

Прокси для AI-агентов: SOCKS5, ротация, sticky-сессии

Как подключить AI-агента к интернету через прокси: SOCKS5, HTTP, ротация IP, sticky-сессии. Примеры на Python и Node.js. InfraProxy: 100 000+ IP, до 1 Gbps.

Команда InfraProxy

11 апреля 2026 г.

#AI-агенты#прокси#SOCKS5#ротация#sticky-сессии#Python

Зачем AI-агенту прокси

AI-агент — это программа, которая автономно выполняет задачи: ищет информацию в интернете, взаимодействует с сайтами, собирает данные. В отличие от классического краулера, агент принимает решения в процессе работы: какие страницы посетить, что извлечь, когда остановиться.

Когда агент обращается к сайтам напрямую, он сталкивается с теми же ограничениями, что и любой бот: rate-limiting, блокировки по IP, CAPTCHA. Прокси дают агенту пул IP-адресов, через которые он может работать с интернетом без этих ограничений.

Особенность AI-агентов: они часто выполняют цепочки запросов к одному сайту (поиск → переход → извлечение). Это требует sticky-сессий — когда один IP сохраняется на протяжении всей цепочки.

Два режима: ротация vs sticky-сессии

| Режим | Как работает | Когда использовать | |-------|-------------|-------------------| | Ротация | Каждый запрос — новый IP из пула | Независимые запросы к разным URL | | Sticky-сессия | IP фиксирован на 5–30 минут | Цепочки запросов к одному сайту |

Ротация IP

При ротации каждый HTTP-запрос агента проходит через случайный IP из пула 100 000+ адресов InfraProxy. Сайт видит запросы от разных «пользователей» и не блокирует трафик.

Ротация оптимальна, когда агент обращается к разным сайтам или собирает независимые страницы:

import requests

ROTATING_PROXY = "socks5://user:pass@fi.infraproxy.ru:1080"

def agent_search(query: str) -> list[str]:
    """Агент ищет информацию по запросу через несколько источников."""
    sources = [
        f"https://source-a.com/search?q={query}",
        f"https://source-b.com/api/search?q={query}",
        f"https://source-c.com/find?query={query}",
    ]
    results = []
    for url in sources:
        resp = requests.get(
            url,
            proxies={"https": ROTATING_PROXY},
            timeout=10,
            headers={"User-Agent": "Mozilla/5.0 (compatible; AIBot/1.0)"}
        )
        if resp.status_code == 200:
            results.append(resp.text)
    return results

Sticky-сессии

Sticky-сессии нужны, когда агент выполняет многоэтапное взаимодействие с одним сайтом. Пример: агент заходит на страницу поиска, получает результаты, переходит по ссылкам, извлекает данные с каждой страницы. Если IP меняется в процессе, сайт может:

  • Сбросить результаты поиска
  • Показать CAPTCHA
  • Вернуть другие данные (персонализация по гео)
import requests
import uuid

def create_sticky_session(duration_min: int = 10) -> requests.Session:
    """Создаёт сессию с фиксированным IP на заданное время."""
    session_id = uuid.uuid4().hex[:8]
    proxy = f"socks5://user-session-{session_id}:pass@fi.infraproxy.ru:1080"

    session = requests.Session()
    session.proxies = {"http": proxy, "https": proxy}
    session.headers.update({
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36",
        "Accept-Language": "ru-RU,ru;q=0.9",
    })
    return session

# Агент: поиск → переход → извлечение (один IP на всю цепочку)
session = create_sticky_session(duration_min=10)

# Шаг 1: поиск
search_resp = session.get("https://example.com/search?q=AI+datasets", timeout=10)

# Шаг 2: переход по первому результату
detail_resp = session.get("https://example.com/article/123", timeout=10)

# Шаг 3: извлечение данных
data_resp = session.get("https://example.com/article/123/data.json", timeout=10)

Подробнее о стратегиях ротации, включая гибридные подходы — в статье Стратегии ротации прокси для масштабного веб-скрейпинга.

Протоколы: SOCKS5 vs HTTP для AI-агентов

| Протокол | Преимущества | Ограничения | |----------|-------------|-------------| | SOCKS5 | Работает с любым TCP-трафиком, поддерживает UDP, низкий overhead | Не все клиентские библиотеки поддерживают из коробки | | HTTP/HTTPS | Поддерживается везде, прост в настройке | Только HTTP-трафик, больший overhead |

Для AI-агентов рекомендуется SOCKS5:

  • Агенты могут использовать не только HTTP, но и другие протоколы (WebSocket, gRPC)
  • Меньший overhead = ниже latency
  • Поддержка DNS-резолвинга через прокси (скрывает ваш DNS-трафик)

InfraProxy поддерживает оба протокола на всех серверах. Переключение между SOCKS5 и HTTP — изменение одной строки в конфигурации.

Node.js: прокси для AI-агента на JavaScript

Многие AI-агенты пишутся на Node.js (LangChain.js, AutoGPT web-варианты). Подключение прокси через socks-proxy-agent:

import { SocksProxyAgent } from 'socks-proxy-agent';
import fetch from 'node-fetch';

const agent = new SocksProxyAgent(
  'socks5://user:pass@fi.infraproxy.ru:1080'
);

async function agentFetch(url) {
  const response = await fetch(url, {
    agent,
    headers: {
      'User-Agent': 'Mozilla/5.0 (compatible; AIAgent/1.0)',
      'Accept': 'text/html,application/json',
    },
    timeout: 15000,
  });

  if (!response.ok) {
    throw new Error(`HTTP ${response.status} for ${url}`);
  }

  const contentType = response.headers.get('content-type');
  if (contentType?.includes('application/json')) {
    return response.json();
  }
  return response.text();
}

// Пример: агент собирает данные из API
const data = await agentFetch('https://api.example.com/v2/products?limit=100');
console.log(`Получено ${data.length} записей`);

Обработка ошибок и retry в агентах

AI-агенты работают автономно, поэтому обработка ошибок критична. Агент должен уметь:

  1. Повторить запрос при таймауте
  2. Сменить IP при получении 403/429
  3. Логировать проблемные URL для анализа
import time
import requests

DC_PROXY = "socks5://user:pass@fi.infraproxy.ru:1080"
ISP_PROXY = "socks5://user:pass@isp.infraproxy.ru:1080"

def resilient_fetch(url: str, max_retries: int = 3) -> dict:
    """Отказоустойчивый запрос с переключением между DC и ISP прокси."""
    proxies_chain = [DC_PROXY, DC_PROXY, ISP_PROXY]

    for attempt in range(max_retries):
        proxy = proxies_chain[min(attempt, len(proxies_chain) - 1)]
        try:
            resp = requests.get(
                url,
                proxies={"https": proxy},
                timeout=10,
                headers={"User-Agent": "Mozilla/5.0 (compatible; AIBot/1.0)"}
            )
            if resp.status_code == 200:
                return {"url": url, "status": 200, "text": resp.text}
            if resp.status_code in (403, 429):
                time.sleep(2 ** attempt)
                continue
        except requests.RequestException:
            time.sleep(2 ** attempt)

    return {"url": url, "status": 0, "error": "All retries failed"}

Логика проста: первые две попытки через DC-прокси (дешевле и быстрее), третья — через ISP (выше trust-score). Экспоненциальный backoff между попытками. Подробнее о различиях DC и ISP — в статье Datacenter vs residential прокси: что выбрать для краулинга.

Гео-ротация для AI-агентов

Некоторые сайты отдают разный контент в зависимости от географии IP. Для AI-агента это может быть как проблемой (нежелательная локализация), так и инструментом (сбор данных из разных регионов).

InfraProxy предоставляет серверы в двух локациях:

| Локация | Хост (условный) | Применение | |---------|-----------------|-----------| | Финляндия | fi.infraproxy.ru | Европейский контент, низкий latency до RU | | США | us.infraproxy.ru | Американский контент, англоязычные источники |

# Запрос через финский сервер
curl -x socks5://user:pass@fi.infraproxy.ru:1080 \
  "https://httpbin.org/ip" -s | python3 -m json.tool

# Запрос через американский сервер
curl -x socks5://user:pass@us.infraproxy.ru:1080 \
  "https://httpbin.org/ip" -s | python3 -m json.tool

Безопасность: изоляция агента

При подключении AI-агента к интернету через прокси важно учитывать безопасность:

  • Не передавайте через прокси конфиденциальные данные — прокси видит трафик (для HTTPS — только домен, не содержимое)
  • Ограничьте доменный whitelist — агент должен обращаться только к заранее определённым сайтам
  • Логируйте все запросы — для аудита и отладки
  • Устанавливайте таймауты — агент не должен зависать на медленном сайте

Производительность: сколько запросов может обрабатывать агент

| Конфигурация | Запросов/мин | Примечание | |-------------|-------------|-----------| | 1 поток, DC-прокси | 30–60 | Последовательные запросы с паузой | | 10 потоков, DC-прокси | 300–600 | Параллельные запросы к разным доменам | | 50 потоков, DC-прокси | 1 500–3 000 | Для масштабного сбора данных | | 1 поток, sticky-сессия | 20–40 | С паузами для одного сайта |

Скорость зависит от целевых сайтов, а не от прокси. InfraProxy на AMD EPYC-серверах с каналом до 1 Gbps обрабатывает запросы за 1–10 мс — узким местом будет время ответа целевого сайта.

Подробнее о применении прокси для AI — на странице Прокси для AI.


Попробуйте InfraProxy — тестовый доступ за 1 день. 100 000+ IP, SOCKS5 и HTTP, ротация и sticky-сессии. Оставить заявку →

Нужны надёжные прокси для вашего проекта?

InfraProxy предоставляет серверные и резидентные прокси для российского бизнеса. Договор, постоплата, техподдержка.