Comment éviter 429 Too Many Requests avec SPIP ?
SPIP

Comment éviter 429 Too Many Requests avec SPIP ?

Il y a beaucoup de raisons qui peuvent être la cause de ce message : pour SPIP, en voici une : la lutte contre les bots.

L’erreur 429 apparaît chaque fois que l’internaute accède à plusieurs reprises à votre site et dépasse une limite : internaute ou robot !!
Généralement, cette erreur empêchera l’accès au site et le rendra invisible... aux robots.

Écran de sécurité et charge serveur

Quand un robot lance une requête vers un site SPIP, l’écran de sécurité de SPIP évalue la charge du serveur avant de moduler le passage du robot : s’il y a déjà de la charge, une erreur est renvoyée :

Status 429 : Too Many Requests (try again soon).

Et si votre serveur est un peu trop chargé ?

Si votre serveur est trop chargé ou si vous avez un hébergement mutualisé, les robots font demi-tour : les robots de référencement et de monitoring...

Ce qui peu arriver : vos outils de référencement et de monitoring vont recevoir des erreurs de référencement et de santé du serveur :

Your service is currently DOWN - Cause : HTTP 429 - Too Many Requests

Plus de référencement de votre site et réponses de votre outil de monitoring régulièrement down.

Log d’un outil de monitoring

Mécanisme de l’écran de sécurité

SPIP utilise la fonction PHP sys_getloadavg() pour estimer la charge de votre serveur.

Ensuite, la limite est fixée à 4 par défaut : si la charge est au-dessus, le status 429 est renvoyé au robot, et il est invité à repasser plus tard.

Alors comment gérer les 429 sur un serveur chargé ou mutualisé ?

En février 2021, les DEVs de SPIP on ajouté la possibilité de surcharger la valeur limite de charge du serveur : la constante _ECRAN_SECURITE_LOAD.

Ainsi, en ajoutant un fichier ./config/ecran_securite_options.php, vous pouvez :

  • désactiver la protection anti-robots avec : define('_ECRAN_SECURITE_LOAD', 0);
  • modifier la valeur limite : define('_ECRAN_SECURITE_LOAD', 21);

https://www.spip.net/fr_article4200...

Mais attention, en désactivant ce filtrage robots, vous exposez votre site aux myriades de bots avides qui surchargent votre serveur !

Il est bien de pouvoir faire un filtrage en amont, avec un CDN installé en frontal, par ex.

Comment estimer la charge de votre serveur ?

Le plugin DD pour SPIP affiche cette valeur dans votre pied de page, ou plutôt 3 valeurs qui correspondent à la charge estimée, respectivement, depuis les dernières 1, 5 et 15 minutes.

Ainsi, vous aurez une idée de la valeur limite à utiliser.

https://developer.mozilla.org/fr/docs/Web/HTTP/Status/429
https://contrib.spip.net/Couverture-Google-et-SPIP
https://www.php.net/manual/fr/function.sys-getloadavg.php

Partager cet article sur mon réseau