Настройка прокси
Маршрутизация прокси по URL для AnyCrawl
Настройка прокси
AnyCrawl поддерживает гибкую маршрутизацию прокси по шаблонам URL. Можно задать разные прокси для разных сайтов или конечных точек API.
Режимы прокси
AnyCrawl поддерживает четыре режима прокси, задаваемых в запросах API:
| Mode | Описание |
|---|---|
auto | Автоматический выбор между базовым и stealth-прокси. Начинает с базового, если доступен; при недоступности или повторах/сбоях переходит или откатывается к stealth. |
base | Прокси из ANYCRAWL_PROXY_URL (по умолчанию) |
stealth | Прокси из ANYCRAWL_PROXY_STEALTH_URL (обычно резидентский или премиум) |
| Custom URL | Полная строка URL прокси (например, http://user:pass@proxy:8080); в ответах возвращается как custom |
Пример использования
{
"url": "https://example.com",
"engine": "playwright",
"proxy": "auto"
}{
"url": "https://example.com",
"engine": "playwright",
"proxy": "stealth"
}{
"url": "https://example.com",
"engine": "playwright",
"proxy": "http://custom-proxy:8080"
}Поведение таймаута (Scrape API)
- Параметр
timeoutна уровне запроса всегда имеет приоритет. - Если
proxy—stealthилиauto, аtimeoutне задан, AnyCrawl используетANYCRAWL_STEALTH_TIMEOUT_MS(по умолчанию120000). - Для режима
baseили пользовательского URL прокси без явногоtimeoutAnyCrawl использует60000.
Способы настройки
Способ 1: простая настройка прокси (ANYCRAWL_PROXY_URL)
Если для всех запросов нужен один и тот же прокси, задайте переменную окружения ANYCRAWL_PROXY_URL:
# Single proxy
export ANYCRAWL_PROXY_URL=http://username:password@proxy.example.com:8080
# Multiple proxies (tiered mode)
export ANYCRAWL_PROXY_URL=http://proxy1:8080,http://proxy2:8080,http://proxy3:8080При нескольких прокси (через запятую) AnyCrawl использует стратегию многоуровневого прокси:
- Все запросы начинаются с первого прокси (уровень 0)
- Если прокси падает для домена, AnyCrawl автоматически переключается на следующий уровень для этого домена
- Так достигается отказоустойчивость и оптимальное использование прокси
Это простейший вариант, если не нужна маршрутизация по URL.
Способ 2: расширенный файл конфигурации (ANYCRAWL_PROXY_CONFIG)
Для маршрутизации по URL создайте JSON-файл (например, proxy-config.json) и укажите путь в ANYCRAWL_PROXY_CONFIG:
ANYCRAWL_PROXY_CONFIG=/path/to/proxy-config.jsonПримечание. Если заданы и ANYCRAWL_PROXY_URL, и ANYCRAWL_PROXY_CONFIG, приоритет у правил из файла, а ANYCRAWL_PROXY_URL используется как запасной вариант для URL, не попавших под правила.
Типы правил
AnyCrawl поддерживает три типа правил прокси в порядке приоритета:
1. Правила URL (наивысший приоритет)
Точное совпадение URL. Используйте, когда для конкретной конечной точки нужен отдельный прокси.
{
"url": "https://api.example.com/v1/data",
"proxy": "http://username:password@proxy1.example.com:8080"
}2. Правила по шаблону (средний приоритет)
Сопоставление полного URL с подстановочными знаками. Удобно для путей или протоколов.
{
"pattern": "https://*.github.com/api/*",
"proxy": "http://username:password@proxy2.example.com:8080"
}3. Правила по домену (низший приоритет)
Сопоставление только по домену. Весь трафик на домен идёт через указанный прокси.
{
"domain": "*.gov.au",
"proxy": "http://username:password@proxy3.example.com:8080"
}Шаблоны с подстановочными знаками
*— любое количество символов?— ровно один символ- Регистр в шаблонах не учитывается
Примеры
*.example.com—api.example.com,www.example.com,test.example.comapi-?.example.com—api-1.example.com,api-2.example.com, но неapi-10.example.comhttps://*.example.com/api/*— любой HTTPS на поддоменахexample.comс путём/api/
Полный пример конфигурации
{
"rules": [
{
"url": "https://api.example.com/v1/users",
"proxy": "http://premium-proxy.example.com:8080"
},
{
"pattern": "https://api.github.com/*",
"proxy": "http://github-proxy.example.com:8080"
},
{
"domain": "*.gov.au",
"proxy": "http://au-proxy.example.com:8080"
}
]
}Форматы URL прокси
Поддерживаются такие форматы:
- HTTP:
http://username:password@proxy.example.com:8080 - HTTPS:
https://username:password@proxy.example.com:8443
Отладка
В логах могут появляться сообщения вида:
Using proxy from request userData: http://custom-proxy:8080
Found proxy for URL https://example.com: http://proxy.example.com:8080 By matching a rule.
Proxy matched by domain pattern: *.gov.au → http://proxy.example.com:8080
Using tiered proxy: http://default-proxy:8080Пример приоритета
Для URL https://api.github.com/repos/owner/repo проверка идёт в таком порядке:
- Совпадение по URL:
"url": "https://api.github.com/repos/owner/repo" - По шаблону:
"pattern": "https://api.github.com/*" - По домену:
"domain": "*.github.com"
Срабатывает первое подошедшее правило.
Рекомендации
- Правила домена — для широких сценариев (например, все запросы к гос. сайтам страны)
- Правила по шаблону — когда нужны конкретные пути или протоколы
- Правила URL — для точных конечных точек с особыми требованиями
- Порядок в файле не важен — приоритет задаётся типом правила
- Проверяйте шаблоны по логам отладки, что совпадения ожидаемые
Многоуровневая система прокси
При нескольких прокси в ANYCRAWL_PROXY_URL используется многоуровневая схема:
Как это работает
- Начальное состояние: для всех доменов сначала используется первый прокси (уровень 0)
- Обнаружение ошибок: при сбое прокси для домена этот домен переводится на следующий уровень
- По доменам: уровень хранится отдельно для каждого домена
Пример сценария
export ANYCRAWL_PROXY_URL=http://fast-proxy:8080,http://stable-proxy:8080,http://backup-proxy:8080- Первые запросы к
example.com→fast-proxy:8080(уровень 0) - Если
fast-proxyпадает дляexample.com→ переключение наstable-proxy:8080(уровень 1) - При этом
github.comможет по-прежнему использоватьfast-proxy:8080, если он работает - Периодически для
example.comснова пробуетсяfast-proxy, чтобы проверить восстановление
Преимущества
- Автоматический failover: без ручного вмешательства при сбоях прокси
- Оптимизация по доменам: для каждого домена выбирается лучший доступный прокси
- Эффективность ресурсов: упавшие прокси не отбрасываются навсегда
- Самовосстановление: возврат к оптимальным прокси при их восстановлении
Полный пример: оба способа
# Set a default proxy for general use
export ANYCRAWL_PROXY_URL=http://default-proxy:8080
# Set up URL-based routing for specific sites
export ANYCRAWL_PROXY_CONFIG=/path/to/proxy-config.jsonФайл proxy-config.json:
{
"rules": [
{
"domain": "*.gov.au",
"proxy": "http://au-residential-proxy:8080"
},
{
"pattern": "https://api.*.com/*",
"proxy": "http://api-optimized-proxy:3128"
}
]
}Результат:
https://www.homeaffairs.gov.au/→au-residential-proxy:8080(совпадение по домену)https://api.github.com/repos→api-optimized-proxy:3128(совпадение по шаблону)https://example.com/→default-proxy:8080(fallback наANYCRAWL_PROXY_URL)
Сводка по переменным окружения
| Variable | Назначение | Example |
|---|---|---|
ANYCRAWL_PROXY_URL | Базовая настройка прокси (один или несколько) | http://proxy:8080 or http://p1:8080,http://p2:8080 |
ANYCRAWL_PROXY_STEALTH_URL | Stealth/премиум-прокси (резидентские) | http://residential-proxy:8080 |
ANYCRAWL_PROXY_STEALTH_CREDITS | Доп. списание кредитов при stealth-прокси | 5 |
ANYCRAWL_STEALTH_TIMEOUT_MS | Таймаут по умолчанию для proxy=stealth и proxy=auto, если в запросе нет timeout | 120000 |
ANYCRAWL_PROXY_CONFIG | Путь к JSON-файлу маршрутизации по URL | /path/to/proxy-config.json |
Порядок приоритета
- Наивысший: режим прокси или пользовательский URL в опциях запроса
Или с пользовательским URL:{ "url": "https://example.com", "engine": "playwright", "proxy": "stealth" }{ "url": "https://example.com", "engine": "cheerio", "proxy": "http://custom-proxy:8080" } - Высокий: правила по URL из
ANYCRAWL_PROXY_CONFIG - Низкий: многоуровневые прокси из
ANYCRAWL_PROXY_URL(fallback)