Парсинг я начал не ради денег, а ради интереса — хотел собрать цены конкурентов в одну таблицу. Первая попытка с домашнего IP закончилась капчей на пятом запросе. Вторая — баном на двадцать минут. Дальше я уже не экспериментировал, а начал нормально готовиться. И вот что выяснил за пару лет практики.
Сайты следят за простыми вещами: частота запросов, количество открытых страниц в минуту, поведение. Когда с одного IP сыплется сотня запросов в минуту — это видно за километр. Антибот-системы сейчас умные: они смотрят не только на число запросов, но и на то, откуда они идут и как часто меняется источник.
Правильный подход — распределять нагрузку по разным IP. Каждый адрес делает немного запросов, и в сумме ты собираешь столько же данных, но без подозрений.
Идеально — ротация. Когда каждый запрос (или каждые N запросов) идёт с нового адреса. Так ты не «привязываешься» к одному IP и не даёшь системе построить профиль.
По типу: для парсинга веб-страниц и API чаще берут SOCKS5 — он надёжнее держит соединение и не косячит с заголовками. Но если парсер простой и работает с одним сайтом — HTTP тоже норм. Главное, чтобы адреса были живыми и сменялись часто.
Золотой середины нет, но я обычно исхожу из простого правила: чем ценнее сайт, тем медленнее лезу. Для среднего интернет-магазина — запрос каждые 3-5 секунд с ротацией. Для агрегаторов и больших порталов — 8-10 секунд. Да, это медленнее, зато скрипт живёт месяцами, а не умирает на первом же запуске.
Прокси — половина дела. Вторая половина — нормальные заголовки запроса, куки и поведение. Я однажды убрал все лишние заголовки из запроса и словил блок на ровном месте — сайт решил, что это не браузер, а бот. Так что смотри на весь запрос целиком, а не только на IP.
И да, живой пул решает. У нас на proxy.falconcyber.online прокси обновляются каждые пять минут — то есть в выдаче всегда свежие адреса, а не вчерашние трупы. Для парсинга это буквально разница между «работает» и «бан на старте».