Прокси для парсинга: сколько нужно и как ротировать
Парсер без прокси живёт до первой сотни запросов. Дальше сайт замечает, что с одного адреса приходит слишком много обращений, и выдаёт капчу, 429 или бан. Разберём, сколько адресов нужно и как их использовать, чтобы этого не происходило.
Почему блокируют
Сайт смотрит не на «робота» как такового, а на набор признаков. Главный — частота запросов с одного IP. Остальные: одинаковый User-Agent, отсутствие обычных для браузера заголовков, слишком ровные интервалы между обращениями, игнорирование robots.txt.
Прокси решает первый пункт. Остальные придётся решать в коде — иначе сменой адресов вы просто отодвинете блокировку, а не уберёте её.
Сколько нужно адресов
Считается от нагрузки, которую выдерживает один адрес. Безопасный ориентир для большинства сайтов — не больше одного запроса в 3–5 секунд с одного IP, то есть примерно 700–1200 запросов в час.
Дальше простая арифметика: нужно собрать 50 000 страниц за сутки — это около 2100 запросов в час. Делим на 1000 запросов с адреса — получаем 2–3 прокси при аккуратной работе и 5–10 при агрессивной. На IPv6 такой запас стоит 50–100 рублей в месяц, и это главная причина, по которой парсинг переезжает на IPv6.
Как правильно ротировать
Две стратегии, и выбор между ними зависит от сайта.
Смена адреса на каждый запрос подходит для сайтов без авторизации: каталоги, выдача, карточки товаров. Максимально размазывает нагрузку.
Липкая сессия — один адрес на всю цепочку действий — обязательна там, где есть вход в аккаунт, корзина или многошаговая форма. Если адрес сменится посреди сессии, сайт увидит, что пользователь «телепортировался», и разлогинит его. Это, кстати, самая частая причина загадочных сбоев в парсерах, которые «работали вчера».
Что ещё настроить, кроме прокси
- Заголовки как у браузера. Не только User-Agent: Accept, Accept-Language, Accept-Encoding, иногда Referer. Запрос с одним User-Agent и без остальных заголовков выглядит подозрительнее, чем совсем без них.
- Неравномерные паузы. Задержка ровно в две секунды — это подпись робота. Разброс 1,5–6 секунд выглядит живее.
- Обработка 429 и 503. Получили — отступите и сбавьте темп, а не долбитесь дальше. Чаще всего это предупреждение, а не бан.
- Повтор с другого адреса. Если запрос упал, повторяйте не с того же IP.
Гео имеет значение
Многие сайты отдают разный контент в зависимости от страны: цены, ассортимент, язык, наличие товара. Если собираете данные по конкретному рынку, адрес должен быть из этой страны, иначе соберёте не то, что видит местный покупатель.
Проверка перед запуском
Прежде чем ставить парсер на поток, прогоните на одном прокси сотню запросов и посмотрите: какой процент дошёл, не появилась ли капча, отдаёт ли сайт ту же вёрстку. Один прокси за десять рублей и полчаса времени экономят день разбирательств с забаненным пулом.