web-dev-qa-db-fra.com

Devrais-je renvoyer un code d'état 429 ou 503 à un bot?

Nous travaillons pour bloquer les bots excessifs. Nous limitons les demandes basées sur IP. Dans le passé, en utilisant IIS, nous avons renvoyé une erreur 503 au client. Quelqu'un a suggéré qu'un 429 est plus approprié. J'essaie de savoir lequel je devrais utiliser et pourquoi. Lorsque j'ai recherché 429 sur ce site, je n'ai rien trouvé.

J'ai trouvé ces définitions des codes d'état HTTP sur Wikipedia:

429 Trop de demandes L'utilisateur a envoyé trop de demandes dans un laps de temps donné. Destiné à être utilisé avec des systèmes de limitation de débit.

503 Service non disponible Le serveur est actuellement indisponible (car il est surchargé ou arrêté pour des raisons de maintenance). En règle générale, il s'agit d'un état temporaire.

Il semble que le 429 est plus approprié pour servir à un bot fautif. Est-ce correct?

5
Evik James
  • 503 non disponible est destiné à tous les utilisateurs (temps d'arrêt pour XYZ).
  • 429 Est destiné aux utilisateurs et aux machines qui demandent trop de threads (Requests).

Vous devez utiliser le statut 429 car cela implique qu'il est destiné à cet utilisateur et que les autres utilisateurs peuvent ne pas être affectés. De plus, le meilleur statut serait 403 Interdit si votre blocage sur des adresses IP, car cela implique qu'elles sont interdites, alors que 429 est normalement associé à un blocage temporaire. Vous devez donc utiliser le statut 429 sur les ordinateurs demandant trop de données en tant que problème temporaire, car vous ne voulez pas utiliser d'utilisateurs légitimes.

3
Simon Hayter