Expliqué
La limitation de débit est la façon dont les serveurs se protègent contre les abus. Chaque API et site web public limite le nombre de requêtes qu'un seul client peut envoyer dans une fenêtre temporelle : `100 requêtes par IP par minute`, `5000 requêtes par clé API par heure`, `30 connexions par compte par jour`. Lorsqu'un client dépasse le plafond, le serveur renvoie une réponse 429 Too Many Requests (ou dans certains cas ralentit silencieusement les réponses, met la requête en file d'attente, ou commence à servir des CAPTCHAs).
Pour les charges de travail de scraping et de collecte de données, la limitation de débit est le plancher opérationnel qui détermine la vitesse à laquelle vous pouvez aller. La solution naïve, envoyer moins de requêtes, plafonne votre débit. La vraie solution consiste à distribuer les requêtes sur de nombreux identifiants (IP, comptes, ID de session) afin qu'aucun identifiant unique ne dépasse son plafond. C'est la raison d'être des proxies résidentiels en tant que catégorie de produit.
Les algorithmes de limitation de débit côté serveur se présentent sous plusieurs formes. Le token bucket permet au client d'accumuler des jetons à un rythme régulier jusqu'à un plafond, autorisant des pics jusqu'à la taille du plafond. La fenêtre glissante (sliding window) compte les requêtes dans une fenêtre temporelle mobile, lissant le plafond. La fenêtre fixe (fixed window) réinitialise le compteur aux limites de l'horloge (par minute, par heure). Chacune a des implications différentes sur la façon dont les scrapers doivent cadencer leurs requêtes.
Comment ça fonctionne
Pour chaque requête entrante, le serveur identifie le client (par IP, clé API, ID de compte ou jeton de session) et vérifie un compteur pour cet identifiant dans la fenêtre courante. Si le compteur est en dessous de la limite, la requête passe et le compteur s'incrémente. Si le compteur dépasse la limite, le serveur renvoie un 429 avec un en-tête `Retry-After` indiquant le temps d'attente.
La plupart des grandes API utilisent une combinaison d'identifiants : la même IP et le même compte atteignent des compteurs différents avec des limites différentes. Les règles de limitation de débit de Cloudflare, par exemple, peuvent définir une limite par IP, par chemin d'URL, par session ou par toute combinaison. Certains systèmes avancés utilisent des variantes de leaky-bucket ou de sliding-window-counter pour une application plus fluide.