La limitación de tasa es un control que establece un límite en la cantidad de solicitudes que un cliente, identificado por dirección IP o cuenta de usuario, puede realizar dentro de un intervalo de tiempo determinado, bloqueando o retrasando las solicitudes que superen el límite. Los servidores lo señalan con HTTP 429 Demasiadas Solicitudes, que puede incluir un header Retry-After que indica cuánto tiempo esperar antes de intentar nuevamente.
Niveles en los que se Aplican los Límites de Tasa
- Por IP
- Por subred
- Por clave API
- Por cuenta
Cuando un cliente los supera, el servidor puede dejar de cumplir temporalmente sus solicitudes y responder con HTTP 429 "Demasiadas Solicitudes". Distribuir las solicitudes a través de un gran grupo de proxies rotativos las dispersa entre muchos contadores por IP, ayudando a mantener cada IP por debajo de los límites de tasa por IP a gran escala.
Algoritmos Comunes de Limitación de Tasa
- Ventana fija: Cuenta las solicitudes y restablece el contador al inicio de cada período, por lo que los picos de tráfico pueden pasar desapercibidos alrededor de cada restablecimiento.
- Ventana deslizante: Pondera el conteo del período anterior según cuánto se superponga con la ventana actual, lo que suaviza esos picos.
- Cubo de tokens: Los tokens se reponen a una tasa fija hasta un máximo. Cada solicitud gasta uno, por lo que se permiten ráfagas hasta el tamaño del cubo.
- Cubo con fuga: Las solicitudes se drenan a una tasa constante. Cuando el cubo está lleno, se rechazan nuevas solicitudes.
Por Qué los Sitios Usan Limitación de Tasa
El scraping es solo un objetivo. Los límites de tasa también ayudan a:
- Ralentizar los intentos de inicio de sesión por fuerza bruta, que Cloudflare recomienda rastrear tanto por dirección IP como por nombre de usuario.
- Mitigar inundaciones de tráfico DoS y DDoS.
- Mantener el uso de la API dentro de las cuotas por usuario, como un número establecido de llamadas por hora o día, incluso cuando el uso excesivo no es malicioso.