Eroarea HTTP 429 “Too Many Requests” este un cod de răspuns de limitare a vitezei trimis de un server atunci când un utilizator (sau client) depășește numărul de cereri permise într-un anumit interval de timp. Acest status face parte de obicei din mecanisme de securitate, de protecție API sau anti-DDoS.
În mediile de producție, acesta poate întrerupe serviciile, rupe integrările API sau afecta SEO. Acest ghid avansat acoperă modul de diagnosticare, prevenire și rezolvare a erorii 429 atât din perspectiva părții client, cât și din perspectiva părții server.
Scenarii comune:
Un utilizator/bot trimite prea multe cereri HTTP (apeluri API, încărcări de pagini etc.)
Aplicația dvs. face scraping sau sondează prea agresiv un serviciu terț
Firewall-urile pentru aplicații web (WAF) sau proxy-urile inverse (de exemplu, Cloudflare, Nginx) impun limite de viteză
API-urile serverului sau ale back-end-ului utilizează biblioteci de limitare a vitezei (de exemplu, express-rate-limit, mod_evasive etc.)
Bots sau crawlere inundă site-ul sau punctul final
Serverele trimit adesea un antet Retry-After cu un răspuns 429:
Aceasta indică clientului cât timp să aștepte (în secunde) înainte de a încerca din nou.
Pentru Apache:
Pentru Nginx:
Acest lucru ajută la identificarea IP-urilor sau a punctelor finale care declanșează limita.
Jurnalele Fail2Ban
Evenimente Cloudflare Firewall
Jurnale la nivel de aplicație (Laravel, Express, Django etc.)
Analizele limitelor de rată (dacă utilizați un gateway API)
Nginx poate fi configurat astfel:
Creșteți rata sau burst-ul
Aplicați la căi specifice (de exemplu, /api/) în loc de la nivel global
Lista albă a IP-urilor interne cunoscute
Dacă mod_evasive este activ:
Reglați:
➡️ Creșteți pragurile sau dezactivați-le pentru anumite IP-uri de încredere.
Dacă sunteți în spatele Cloudflare, verificați:
Rate Limiting Rules în Security > WAF
Modul Bot Fight
Regulile Firewall care blochează pe baza User-Agent sau IP
Reducerea sensibilității
Lista albă a IP-urilor serverului sau a anumitor agenți de utilizator
Creați reguli personalizate pentru crawlere și parteneri siguri
Verificați dacă aplicația dvs. impune limite utilizând biblioteci precum:
Node.js: express-rate-limit
Laravel: ThrottleRequests
Django: drf-extensions sau middleware
Actualizați configurația, cum ar fi:
➡️ Ajustați limitele, adăugați user/IP whitelisting sau măriți cota pe baza token-urilor de autentificare.
Dacă aplicația dvs. este clientul și primește 429s:
Reîncercați automat cererile cu întârzieri din ce în ce mai mari:
const retryAfter = (attempt) => Math.pow(2, attempt) * 1000;
Limitați propriile solicitări în cazul sondajului:
O stare 429 servită crawlerelor motoarelor de căutare vă poate afecta clasamentul.
Serviți în schimb un status 503 (Service Unavailable) cu Retry-After
Utilizați robots.txt pentru a limita rata de urmărire:
În Cloudflare: Mergeți la Bots > Crawl Management
În loc de limite dure 429:
Utilizați CAPTCHA-uri pentru activități suspecte
Implementați întârzieri progresive mai degrabă decât blocarea dură
Utilizați limitarea vitezei în funcție de utilizator mai degrabă decât în funcție de IP pentru utilizatorii conectați
Oferiți acces autentificat cu limite mai mari ale ratei (de exemplu, prin chei API sau jetoane)
Eroarea 429 Too Many Requests este un instrument util, dar uneori deranjant. Înțelegerea provenienței acesteia – server, CDN sau aplicație – este esențială pentru rezolvarea ei. Cu o configurație adecvată, logare și respectarea limitelor pe partea de client, puteți echilibra protecția cu utilitatea.