La limitation de débit est un contrôle qui limite le nombre de requêtes qu'un client, identifié par l'adresse IP ou le compte utilisateur, peut effectuer dans une fenêtre de temps définie, puis bloque ou retarde les requêtes dépassant cette limite. Les serveurs le signalent avec HTTP 429 Trop de requêtes, qui peut inclure un en-tête Retry-After indiquant combien de temps attendre avant de réessayer.
Niveaux de limitation de débit appliqués
- Par IP
- Par sous-réseau
- Par clé API
- Par compte
Lorsqu'un client dépasse ces limites, le serveur peut temporairement cesser de traiter ses requêtes et répondre avec HTTP 429 "Trop de requêtes". La distribution des requêtes à travers un grand pool de proxies rotatifs les répartit sur de nombreux compteurs par IP, aidant à maintenir chaque IP sous les limites de débit par IP à grande échelle.
Algorithmes de limitation de débit courants
- Fenêtre fixe : Compte les requêtes et réinitialise le compteur au début de chaque période, de sorte que les pics de trafic peuvent passer entre chaque réinitialisation.
- Fenêtre glissante : Pèse le compte de la période précédente en fonction de la quantité qui chevauche la fenêtre actuelle, ce qui lisse ces pics.
- Seau de jetons : Les jetons se remplissent à un taux fixe jusqu'à un maximum. Chaque requête en dépense un, donc des pics sont autorisés jusqu'à la taille du seau.
- Seau qui fuit : Les requêtes s'écoulent à un taux constant. Lorsque le seau est plein, les nouvelles requêtes sont rejetées.
Pourquoi les sites utilisent la limitation de débit
Le scraping n'est qu'une cible. Les limites de débit aident également :
- À ralentir les tentatives de connexion par force brute, que Cloudflare recommande de suivre à la fois par adresse IP et nom d'utilisateur.
- À contrer les inondations de trafic DoS et DDoS.
- À maintenir l'utilisation de l'API dans les quotas par utilisateur, tels qu'un nombre défini d'appels par heure ou par jour, même lorsque l'utilisation excessive n'est pas malveillante.