Як не отримати бан по IP: правила для парсингу й акаунтів

Чому сайти обмежують адреси, з яких помилок це видно і як працювати в межах правил сайту під час парсингу та роботи з акаунтами.

Редакція Prokso 6 хв читання Гайди
Як не отримати бан по IP: правила для парсингу й акаунтів
Коротко
  • Сайти обмежують адреси за надто часті запити, підозрілі підмережі та адреси дата-центрів
  • Помилки 429, 403 і капча — сигнал збавити темп, а не посилити натиск
  • Спокійний темп, паузи, кеш і офіційні API зменшують кількість обмежень сильніше, ніж зміна адрес
  • Ротація підходить для збору даних, фіксована адреса — для акаунтів
  • Проксі не скасовують правил сайту: обмеження за умовами майданчика діють на будь-якій адресі

Блокування по IP майже ніколи не буває випадковим. Сайт бачить, що з адреси йде поведінка, яка йому не подобається, і обмежує доступ. Іноді на хвилину, іноді на добу, іноді для всієї підмережі одразу.

Добра новина: більшість обмежень передбачувані. Якщо розуміти, за що сайти їх ставлять, можна працювати спокійно й у межах правил. Нижче — чому сайти обмежують адреси, як це розпізнати і що робити, щоб не нариватися.

За що сайти обмежують адреси

Перша причина — частота. У більшості сайтів є ліміт запитів: скільки звернень з однієї адреси вони готові прийняти за хвилину чи годину. Скрипт, що відкриває десятки сторінок за секунду, впирається в цей ліміт майже одразу.

Друга — зловживання. Масові реєстрації, спам, підбір паролів, навантаження, схоже на атаку. Адреси, з яких це йшло, потрапляють у спільні бази, і інші сайти теж починають ставитися до них з обережністю.

Третя — репутація підмережі. Якщо із сусідніх адрес в одному блоці багато підозрілої активності, сайт може обмежити весь блок. Четверта — тип мережі: за номером ASN видно, що адреса належить дата-центру, і частина сайтів таким адресам не довіряє за замовчуванням.

Як зрозуміти, що вас обмежили

Сайт рідко пише прямо «вас заблоковано». Зазвичай це видно з відповідей:

ОзнакаЩо зазвичай означаєЩо робити
Помилка 429Забагато запитів за короткий часПауза, знизити темп і кількість потоків
Помилка 403Доступ заборонено: адреса, тип мережі або правило сайтуПеревірити адресу й тип проксі, перечитати правила сайту
Капча замість сторінкиСайт сумнівається, що прийшла людинаЗбавити темп, перевірити профіль браузера
Cloudflare 1015Спрацював ліміт частоти на боці захисту сайтуЗачекати й повернутися з меншою частотою
Порожня сторінка або інші даніСайт віддає ботам спрощену версіюПорівняти з відповіддю у звичайному браузері

Докладно про кожну помилку: 429 Too Many Requests, 403 Forbidden і Cloudflare 1015. Якщо капча або 403 приходять на сайті, який ви просто відкрили в браузері, перевірте, чи не входить він до списку сайтів, закритих для всіх.

Темп важливіший за кількість адрес

Найпоширеніша помилка — намагатися розв'язати обмеження кількістю адрес. Сайт відповідає 429, а скрипт додає потоків і йде далі. Обмеження від цього лише зростають: сайт бачить хвилю однотипних запитів і закручує гайки для всіх.

Працює навпаки. Що спокійніше ваш скрипт поводиться на сайті, то рідше він натрапляє на обмеження. Ось правила, з яких варто починати:

  • Ставте паузи між запитами й робіть їх випадковими, наприклад від 2 до 6 секунд, а не рівно секунду.
  • Обмежте кількість одночасних потоків на один сайт. Почніть з кількох і підвищуйте, лише якщо помилок немає.
  • Кешуйте те, що вже завантажили. Не відкривайте одну сторінку двічі на день, якщо вона не змінюється.
  • Збирайте вночі за часом сайту, коли в нього менше живих відвідувачів.
  • Одразу зупиняйтеся на 429 і враховуйте заголовок Retry-After, якщо він є.

Технічна межа в Prokso — до 1000 одночасних з'єднань на план. Це запас для різних завдань, а не рекомендація: для одного сайту розумна кількість потоків зазвичай у рази менша.

Відрекомендуйтеся сайту чесно

Багато скриптів за замовчуванням надсилають порожній або технічний User-Agent. Сайту не подобається, коли він не розуміє, хто до нього прийшов. Для відкритого збору даних корисно вказати в заголовку зрозумілу назву програми та спосіб зв'язку з вами.

Якщо ви регулярно збираєте дані з одного сайту, іноді простіше написати його власникам. Невеликі сайти нерідко самі пропонують вивантаження або зручний час для обходу. Це повністю знімає питання обмежень, а заразом економить трафік вам обом.

Офіційний шлях, якщо він є

Перш ніж писати парсер, перевірте, чи немає в сайту відкритого API або вивантаження даних. Багато магазинів, довідників і сервісів віддають дані через API зі зрозумілими лімітами. Це швидше, дешевше за трафіком і не порушує правил.

Якщо API немає, прочитайте robots.txt і умови використання. У robots.txt сайт вказує, які розділи можна обходити роботам, а іноді — бажану паузу між запитами. Умови використання кажуть, чи дозволено збір даних узагалі. Якщо сайт прямо забороняє збір, проксі цього не змінюють.

Ротація чи фіксована адреса

Режим зміни адреси підбирають під завдання. Ротація видає нову адресу на кожен запит: у Prokso це порт 823 для HTTP і 824 для SOCKS5. Навантаження розподіляється пулом, і жодна адреса не бере на себе весь потік.

Фіксована адреса тримається на час сеансу: порти від 10000 до 20000, кожен тримає одну адресу від 1 до 120 хвилин. Вона потрібна, коли сайт чекає того самого відвідувача — наприклад, під час входу в акаунт або покрокового оформлення замовлення.

ЗавданняРежимЧому
Збір відкритих сторінок каталогуРотація, порт 823 або 824Запити незалежні, навантаження розподіляється
Вхід в акаунт і робота в ньомуФіксований порт 10000–20000Майданчик бачить одного стабільного користувача
Багатокроковий процес: пошук, фільтр, сторінка товаруФіксований порт на час крокуСайт пов'язує кроки з однією сесією
Перевірка видачі з різних містФіксований порт на кожне містоРезультат не скаче між запитами

Ротація не повинна ставати способом обійти ліміт сайту. Якщо ви ділите ту саму лавину запитів на сотню адрес, сайт бачить її за іншими ознаками: однаковий браузер, однакові шляхи, однакові інтервали.

Для акаунтів: цілісний профіль

З акаунтами блокування по IP рідко буває лише про адресу. Майданчик дивиться на всю картину: адресу, браузер, часовий пояс, мову, історію входів. Якщо щось із цього не збігається, він просить підтвердження або обмежує вхід.

  • Один акаунт — один профіль браузера й один фіксований порт.
  • Адреса з країни акаунта. Для акаунта з Києва — українська адреса, для польського магазину — польська.
  • Часовий пояс і мова браузера під країну адреси.
  • Без різкої зміни країни в акаунта, що давно працює.
  • Домашні або мобільні адреси для майданчиків, які суворо ставляться до дата-центрів.

Перевірити, як вас бачить сайт, можна на сторінці мій IP: там видно країну адреси, часовий пояс і витоки через WebRTC.

Що робити, якщо обмеження вже є

  1. Зупиніть завдання. Повторні запити у відповідь на 429 або 403 подовжують обмеження.
  2. Зачекайте. Ліміти частоти зазвичай знімаються самі за хвилини або години.
  3. Знайдіть причину: темп, кількість потоків, тип адреси або правила сайту.
  4. Якщо адреса сама по собі має погану репутацію, змініть її: візьміть інший порт або нову сесію. У налаштуваннях пулу є фільтр анонімності, який відсікає адреси, що їх сайти вже позначили як проксі або VPN.
  5. Повертайтеся з меншим темпом і перевірте на невеликому обсязі, перш ніж запускати все.

Чому дата-центри обмежують частіше

Адреси дата-центрів ідуть блоками, а їхнього власника видно за ASN. Сайт, який не чекає роботів, може закрити такі мережі цілком. Якщо на сайті з ваших серверних адрес ідуть 403 і капчі навіть за спокійного темпу, перевірте те саме завдання на резидентських. Докладніше — у статті резидентські чи серверні проксі.

Зважайте, що пул спільний: адресою до вас міг користуватися інший клієнт. Тому іноді обмеження приходить з першого запиту, без вашої провини. У такому разі допомагає зміна адреси, а не повтори.

І наостанок: ведіть простий журнал. Записуйте, скільки запитів на хвилину йшло на сайт, скільки було помилок і в який час. За тиждень стане видно, за якого темпу сайт відповідає спокійно, і цей темп можна закріпити в налаштуваннях скрипта.

Питання й відповіді

Чи можна гарантовано уникнути блокування по IP?

Ні. Кожен сайт сам вирішує, кого обмежувати, і правила змінюються. Можна знизити ризик: працювати в розумному темпі, дотримуватися правил сайту і не створювати зайвого навантаження.

Що означає помилка 429?

Сайт повідомляє, що з вашої адреси надійшло забагато запитів за короткий час. Треба зробити паузу й знизити частоту запитів. Часто у відповіді є заголовок Retry-After з підказкою, скільки чекати.

Чи допоможе ротація, якщо сайт відповідає 429?

Ротація розподіляє запити між різними адресами, але не скасовує лімітів сайту. Якщо ви просто продовжите з тим самим натиском, обмеження повернуться. Спершу знизьте темп, потім вирішуйте, чи потрібна ротація.

Чому мене обмежили з першого запиту?

Адреса могла вже мати погану репутацію: пул спільний, і нею раніше користувався хтось інший. Ще одна причина — сайт фільтрує адреси дата-центрів. Спробуйте іншу адресу або резидентський тип.

Чи треба дотримуватися robots.txt, якщо я працюю через проксі?

Так. Проксі змінює адресу, але не змінює правил сайту. robots.txt і умови використання діють на будь-якій адресі, і за ними варто планувати збір даних.

Читайте також