Як виправити 429 Too Many Requests під час скрапінгу
429 — це ліміт частоти, а не бан: сервер просить вас пригальмувати. Надійне рішення поєднує backoff, повагу до Retry-After і розподіл навантаження між пулом IP. Показуємо як, із робочим кодом на Python.
429 — це обмеження швидкості, а не стіна
HTTP 429 Too Many Requests означає, що ви надіслали забагато запитів за відведене вікно й сервер вас пригальмовує. Це навмисне тимчасово: на відміну від жорсткого блокування, 429 зазвичай минає, щойно ви стишите темп. Багато серверів додають заголовок Retry-After, який прямо каже, скільки секунд чекати; послухатися його — найдієвіший крок, бо так ви вирівнюєтеся з реальним лімітом сервера, а не гадаєте.
Важелів два. Перший — темп: менше запитів за секунду з однієї IP, паузи, обмежена паралельність і експоненційне відкочування, коли з'явився 429. Другий — розподіл: розкидати запити по кількох IP, щоб кожна лишалася під своїм лімітом. Починати треба з темпу: пул проксі множить вашу пропускну здатність, але не дає права гатити по сайту. s4m дає датацентрові проксі з авторизацією (SOCKS5 1080, HTTP 3128, USER:PASS), щоб розвести навантаження, і це прямо стикується з гайдом про ротацію проксі та скрапінгом на requests.
Поважайте Retry-After, відкочуйтеся, потім ротуйте
Цикл завантаження, який слухається Retry-After, відкочується експоненційно з джитером і розкидає запити по пулу проксі. Замініть USER:PASS.
import random, time
import requests
USER, PASS, HOST = "USER", "PASS", "proxy.s4m.online"
POOL = [
f"socks5h://{USER}:{PASS}@{HOST}:1080",
f"http://{USER}:{PASS}@{HOST}:3128",
]
def polite_get(url, max_tries=6):
for attempt in range(1, max_tries + 1):
proxy = random.choice(POOL)
r = requests.get(url, proxies={"http": proxy, "https": proxy},
timeout=(5, 20))
if r.status_code != 429:
r.raise_for_status()
return r
# 429: prefer the server's Retry-After, else exponential backoff
retry_after = r.headers.get("Retry-After")
if retry_after and retry_after.isdigit():
wait = int(retry_after)
else:
wait = min(2 ** attempt, 60) + random.random() # cap + jitter
print(f"[{attempt}/{max_tries}] 429; waiting {wait:.1f}s")
time.sleep(wait)
raise SystemExit(f"still rate-limited after {max_tries} tries")
# Global throttle: cap how fast you fire, independent of retries.
MIN_INTERVAL = 0.5 # seconds between requests per worker
_last = 0.0
def throttled_get(url):
global _last
delta = time.time() - _last
if delta < MIN_INTERVAL:
time.sleep(MIN_INTERVAL - delta)
_last = time.time()
return polite_get(url)
print(throttled_get("https://httpbin.org/status/200").status_code)У якому порядку лікувати 429
Спершу найдешевше й найввічливіше.
Слухайтеся Retry-After
Якщо у відповіді 429 є заголовок Retry-After, зачекайте рівно стільки, скільки він каже, і лише потім повторюйте. Це сервер сам називає свій ліміт — і більшість 429 знімається одразу.
Додайте експоненційне відкочування з джитером
Коли Retry-After немає, чекайте 2, 4, 8… секунд (зі стелею) плюс невеликий випадковий джитер між спробами — так ви перестаєте гатити й уникаєте синхронних повторів.
Пригальмуйте темп запитів
Обмежте кількість запитів за секунду й паралельність, щоб узагалі не впиратися в ліміт. Рівномірний повільніший обхід доходить до кінця надійніше, ніж ривок, який раз у раз глушать.
Розкидайте навантаження по IP
Коли поведінка на рівні окремого запиту вже ввічлива, ротуйте пул проксі, щоб кожна IP лишалася під своїм лімітом. Так безпечна пропускна здатність множиться, а темп на жодній окремій адресі не зростає.
Чому сама лише ротація не рятує
Спокуса велика: вважати проксі способом ігнорувати ліміти — просто додай адрес і стріляй далі. Це виходить боком. Сайт, який віддає 429, стежить за патернами запитів, і злива з мінливого набору адрес, що б'є в ті самі ендпоінти в ту саму мить, сама по собі є помітним підписом, який переростає в жорсткий бан. Ротація множить ввічливу пропускну здатність, а не замінює ввічливість. Завжди поєднуйте пул проксі з відкочуванням, Retry-After, реалістичним темпом і розумною паралельністю.
Чесно кажучи, деякі ліміти варто просто поважати: перевірте, чи немає офіційного API або задокументованого дозволеного темпу, перш ніж обходити 429, і читайте умови сайту. А коли розподіл справді потрібен, датацентрові проксі s4m з авторизацією розводять навантаження й тарифікуються за трафіком, тож розширювати пул дешево; механіка — у гайді про ротацію. Пам'ятайте: датацентрові IP можуть банити цілими діапазонами, а від фінгерпринтів ротація не рятує взагалі. Прототипуйте дешево на безкоштовному списку проксі й перевіряйте виходи інструментами.
Відповіді на питання
Чи 429 — це постійний бан?
Ні. HTTP 429 Too Many Requests — це тимчасове обмеження темпу, воно зазвичай минає, щойно ви стишите хід. Послухайтеся заголовка Retry-After, додайте відкочування, знизьте темп запитів — і доступ зазвичай повертається.
Що найдієвіше проти 429?
Поважати заголовок Retry-After, коли сервер його надсилає. Він точно каже, скільки чекати, тож ви вирівнюєтеся з лімітом сервера, замість гадати й знову потрапляти під гальмо.
Чи прибере ротація проксі помилки 429?
Вона допомагає, тримаючи кожну IP під її лімітом, але тільки разом із відкочуванням і пригальмовуванням. Ротація без ввічливого темпу дає помітну зливу, яка переростає в жорсткіші блокування, тож поєднуйте одне з одним.
Чи достатньо проксі s4m, щоб обійти будь-який ліміт?
Жоден чесний інструмент такого не пообіцяє. Датацентрові проксі s4m розводять навантаження по IP, але відкочування й пригальмовування все одно потрібні, датацентрові діапазони можуть позначити цілком, а частину лімітів варто просто поважати й піти через офіційний API.
Розводьте навантаження чесно
Поєднайте відкочування й пригальмовування з датацентровими проксі з авторизацією на proxy.s4m.online, щоб кожна IP лишалася під лімітом. Оплата за фактичним трафіком, виділена IP — за бажанням.
Цю сторінку знаходять за запитами
- як виправити 429 too many requests під час скрапінгу
- резидентські проксі
- свіжий список безкоштовних проксі
- список безкоштовних проксі
- як працює openvpn
- як перевірити http проксі
- як сконфігурувати wireguard
- проксі для парсингу для бізнесу
- socks5 проксі покроково
- Tinyproxy, 3proxy і Squid
- чи безпечний авторизація проксі
- ip адреса налаштування
- UDP через SOCKS5
- чи безпечний openvpn
- openvpn
- обхід DPI
- http проксі
- ip адреса
Реальні пошукові фрази, на які відповідає ця сторінка — за посиланнями відкриються матеріали, що розкривають тему глибше.