Почему proxy блокируют?
Блокировка proxy происходит, когда целевой сайт блокирует трафик с определённого IP-адреса или диапазона адресов. Сайт определил — через различные сигналы — что трафик с этого IP является автоматизированным, злоупотребляющим или иным образом нежелательным, и отказывается обрабатывать дальнейшие запросы с него.
Понимание причин блокировок — первый шаг к их предотвращению. Независимо от того, парсите ли вы сайты, мониторите цены или отслеживаете SERP, знание сигналов обнаружения и способов их смягчения кардинально повысит ваш процент успешных запросов.
Распространённые причины блокировок
1. Чрезмерный объём запросов
Самый базовый сигнал обнаружения — частота запросов. Если один IP отправляет 100 запросов в секунду одному и тому же сайту, это явно не человеческий просмотр. Большинство сайтов устанавливают лимиты — пороги, при превышении которых срабатывают блокировки или CAPTCHA. Эти лимиты сильно варьируются: одни сайты допускают 10 запросов в минуту с IP, другие — сотни.
2. Известные proxy/датацентровые диапазоны IP
Сервисы IP-аналитики (MaxMind, IPinfo, IP2Location) классифицируют IP по типу. Датацентровые IP легко идентифицировать, поскольку они принадлежат ASN хостинг-провайдеров (AWS, Google Cloud, OVH). Многие сайты автоматически блокируют или проверяют весь трафик от известных датацентровых диапазонов IP. Именно поэтому резидентские proxy имеют более высокий процент успеха — их IP классифицируются как потребительские подключения.
3. Чёрные списки IP-репутации
Множество сервисов ведут чёрные списки IP-адресов, известных использованием для скрапинга, спама или другой автоматизированной активности. Когда ваш proxy IP появляется в этих списках, сайты-подписчики блокируют вас превентивно — даже до отправки первого запроса. Мониторинг здоровья пула помогает провайдерам удалять заблокированные IP из ротации.
4. Подозрительные паттерны запросов
Даже при разумной частоте запросов ваш паттерн трафика может выдать автоматизацию:
- Равномерный тайминг: запросы, поступающие через точные интервалы (каждые 2.0 секунды) вместо случайных интервалов человеческого просмотра
- Последовательный доступ: посещение страниц в алфавитном или числовом порядке вместо естественных путей навигации
- Отсутствие загрузки подресурсов: реальные браузеры загружают изображения, CSS, JavaScript и шрифты — скраперы, запрашивающие только HTML, выделяются
- Отсутствие заголовка Referer: браузеры всегда отправляют Referer при навигации между страницами; скраперы часто этого не делают
- Аномальный обход в глубину: глубокий обход одной категории перед переходом к следующей вместо человеческого просмотра
5. Несовпадение отпечатков
Антибот-системы сопоставляют множество сигналов для построения профиля посетителя. Когда эти сигналы противоречат друг другу, посетитель помечается:
- Гео-несоответствие: IP говорит «Германия», но часовой пояс браузера — US Pacific, а Accept-Language —
en-US - TLS-отпечаток: сигнатура TLS Client Hello не соответствует заявленному браузеру (например, библиотека Python requests выдаёт себя за Chrome)
- Выполнение JavaScript: скрипты детекции ботов тестируют API браузера, которые headless-браузеры могут реализовывать не полностью
- Утечка WebRTC: WebRTC может раскрыть реальный IP за proxy при неправильной настройке
6. Концентрированный трафик из одной подсети
Если множество IP из одной подсети /24 (например, 185.23.100.1 — 185.23.100.254) обращаются к одному сайту, сайт может заблокировать всю подсеть. Хорошие алгоритмы ротации IP обеспечивают разнообразие подсетей между последовательными запросами.
7. Аномалии сессий и cookies
Сайты устанавливают cookies при первом посещении и ожидают их в последующих запросах. Скраперы, которые не сохраняют cookies, предъявляют устаревшие cookies или показывают непоследовательное состояние сессии (авторизован в одном запросе, анонимен в следующем), вызывают подозрение.
Типы блокировок
| Тип блокировки | Как выглядит | Серьёзность | Восстановление |
|---|---|---|---|
| CAPTCHA | Страница CAPTCHA вместо контента | Мягкая | Сменить IP, замедлиться |
| HTTP 403 Forbidden | Ответ «доступ запрещён» | Средняя | Сменить IP, изменить отпечаток |
| HTTP 429 Too Many Requests | Превышен лимит запросов | Мягкая | Подождать, снизить частоту |
| Пустой/повреждённый ответ | Пустая страница или мусор | Скрытая | Проверить с другим IP |
| Перенаправление на страницу блокировки | Перенаправление на уведомление | Средняя | Сменить IP, проверить заголовки |
| IP в чёрном списке | Тайм-аут или сброс соединения | Жёсткая | IP «сожжён», использовать другой |
| Бан подсети/ASN | Все IP диапазона заблокированы | Жёсткая | Переключиться на другой ASN |
Стратегии предотвращения
Используйте резидентские proxy для защищённых целей
Резидентские proxy имеют IP, назначенные ISP реальным домохозяйствам. Они проходят проверки на уровне ASN, блокирующие датацентровые IP. Для сайтов с сильной антибот-защитой резидентские proxy — базовое требование. Для наиболее агрессивных целей мобильные proxy обеспечивают ещё более высокий уровень доверия благодаря CGNAT.
Реализуйте интеллектуальное ограничение частоты
Не обращайтесь к цели на максимальной скорости. Вместо этого:
- Исследуйте лимиты цели (увеличивайте частоту, пока не увидите 429 или CAPTCHA)
- Добавляйте случайные задержки между запросами (например, 1-5 секунд с джиттером)
- Распределяйте запросы во времени вместо пакетной отправки
- Используйте разные лимиты для разных эндпоинтов (страницы поиска vs страницы товаров)
import time
import random
import requests
PROXY = "http://USERNAME:PASSWORD@gate.proxyhat.com:8080"
for url in urls:
resp = requests.get(
url,
proxies={"http": PROXY, "https": PROXY},
timeout=15,
)
# Случайная задержка от 1.5 до 4.5 секунд
time.sleep(random.uniform(1.5, 4.5))
Ротируйте IP интеллектуально
Ротация IP распределяет ваш трафик по множеству адресов. Но ротация должна сочетаться с другими стратегиями:
- Ротация на каждый запрос — для независимых загрузок страниц
- Sticky-сессии — для многошаговых процессов, требующих непрерывности сессии
- Разнообразие подсетей — не отправляйте последовательные запросы с одного диапазона /24
- Соответствие стратегии ротации чувствительности цели — более агрессивные сайты требуют более частой ротации
Устанавливайте реалистичные заголовки
Каждый запрос должен включать заголовки, соответствующие реальному браузеру:
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.9",
"Accept-Encoding": "gzip, deflate, br",
"Connection": "keep-alive",
"Upgrade-Insecure-Requests": "1",
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "none",
"Sec-Fetch-User": "?1",
}
Ротируйте строки User-Agent из набора актуальных, популярных браузеров. Убедитесь, что User-Agent соответствует TLS-отпечатку — выдавать себя за Chrome при отправке TLS-сигнатуры Python — моментальный красный флаг.
Согласуйте гео-сигналы
При использовании гео-таргетированных proxy согласуйте все метаданные запроса с локацией proxy:
- Установите
Accept-Languageв соответствии с основным языком страны - При автоматизации браузера установите часовой пояс, соответствующий географии proxy
- Отключите WebRTC для предотвращения утечек реального IP
Правильно обрабатывайте cookies и сессии
Сохраняйте cookies между запросами внутри сессии. Используйте объект сессии (например, requests.Session() в Python), который автоматически поддерживает cookies. При смене IP начинайте также новое хранилище cookies — не переносите cookies с одного IP на другой, так как это создаёт несоответствие.
Техники восстановления
Раннее обнаружение блокировок
Не ждите, пока весь ваш конвейер упадёт. Мониторьте сигналы блокировки:
- Отслеживайте процент успеха по целевому домену — резкое падение указывает на начало блокировок
- Следите за CAPTCHA-страницами (проверяйте тело ответа на индикаторы CAPTCHA)
- Мониторьте размеры ответов — заблокированные ответы часто значительно меньше реальных страниц
- Проверяйте время отклика — некоторые сайты намеренно замедляют ответы подозреваемым ботам (tarpit)
Реализация логики повторных попыток
import requests
from time import sleep
PROXY = "http://USERNAME:PASSWORD@gate.proxyhat.com:8080"
def fetch_with_retry(url, max_retries=3):
for attempt in range(max_retries):
resp = requests.get(
url,
proxies={"http": PROXY, "https": PROXY},
timeout=15,
)
if resp.status_code == 200 and len(resp.text) > 1000:
return resp
# Экспоненциальная задержка перед повтором (новый IP через ротацию)
sleep(2 ** attempt)
return None
Стратегия эскалации
Когда блокировки не прекращаются, эскалируйте подход:
- Первое: снизьте частоту запросов и добавьте больше рандомизированных задержек
- Второе: переключитесь с датацентровых на резидентские proxy
- Третье: добавьте автоматизацию браузера (Puppeteer/Playwright) для выполнения JavaScript и прохождения проверок
- Четвёртое: реализуйте полное управление отпечатками (TLS, canvas, WebGL)
- Пятое: используйте мобильные proxy для наивысшей классификации доверия IP
Ключевой вывод: Блокировки proxy вызваны комбинацией сигналов — не только IP-адресом. Предотвращение блокировок требует комплексного подхода: качественные proxy с интеллектуальной ротацией, реалистичные паттерны запросов, правильные заголовки и согласованные отпечатки. При возникновении блокировок обнаруживайте их рано и эскалируйте стратегию постепенно.






