Ротация или sticky-сессии: что выбрать
Выбор сводится к одному вопросу: зависит ли следующий запрос от предыдущего?
Что делает каждый режим
При ротации каждый запрос может выходить с другого IP. В sticky-сессии запросы с одним идентификатором остаются на одном IP заданное время. В нашей сети разница — это суффикс в логине прокси: -session-ab12cd-time-10.
Ротация, когда запросы независимы
Проверка 500 страниц товаров или одного поискового запроса на каждую локацию не требует общего состояния. Ротация распределяет запросы по адресам, а сбой на одном IP не затрагивает следующий запрос. Поэтому она и стоит по умолчанию, и управлять сессиями в коде не нужно.
Sticky-сессия, когда запросы связаны
Некоторые сценарии ломаются, если адрес меняется на полпути: браузер загружает страницу и её ресурсы, постраничный переход хранит состояние в cookie, выбранный регион привязан к сессии. Держите такие запросы на одном IP.
Какой длины должна быть сессия?
Столько, сколько нужно сценарию, и не больше. Для большинства переходов по страницам хватает нескольких минут. Длинная сессия повышает шанс, что домашнее подключение отключится, и концентрирует запросы на одном адресе.
Будьте готовы к пропаже IP
Резидентный IP — это чьё-то домашнее подключение, и оно может исчезнуть. Не пишите код с расчётом, что этого не случится. Если запрос в sticky-сценарии упал, начните сценарий заново с новым идентификатором, а не повторяйте бесконечно на старом.
Простое правило
- Начните с ротации.
- Если задача падает из-за потери состояния между запросами, объедините эти запросы в sticky-сессию.
- Создавайте новый идентификатор на каждый сценарий, а не один на всю задачу.
Генератор URL прокси создаёт список URL с отдельными сессиями.