PROJET AUTOBLOG


Warrior du Dimanche

Site original : Warrior du Dimanche

⇐ retour index

IA Bot war: on BOT en touche ?

dimanche 2 novembre 2025 à 12:23

Les IA qui butinent broutent comme des vaches sur nos serveurs semblent poser de plus en plus de problèmes à tout le monde, si on en croit masto et la river...

Symptômes

Risques

Bref, les crawlers des IA sont comme les IA elles-mêmes: de la merde envahissant et ressourçophage...

Oui, ressourçophage...   j'ai le droit de néologismer  quand je veux...

Quelles solutions pour lutter ?

le robot.txt : 👍 facile - 👎 efficace que pour ceux qui jouent le jeu

En gros, on joue sur la détection du user-agent, pas forcément fiable puisqu'il est simple de le modifier.

voir https://alyze.info/Blog/le-fichier-robots-txt-ia , https://sebsauvage.net/links/?hyKnfA & https://github.com/ai-robots-txt/ai.robots.txt/blob/main/robots.txt

IP & htaccess : 👍 efficace avec les bots connus - 👎 plus ardu, besoin de mises à jour

On bloque des IP ou des plages d'IP dont on sait qu'elles sont utilisées par les bots.

Premier problème, obtenir une liste de ces plages d'IP... second problème, la garder à jour. Sans compter que le fait de bidouiller le htaccess quand on est un peu noob n'est pas sans danger ou prises de tête...

voir https://chemicloud.com/kb/article/block-bad-bots-and-spiders-using-htaccess/

action user : 👍 efficace - 👎 chiant pour le visiteur et js obligatoire

Pour faire simple, on attend une action du visiteur avant de lui servir la page: un captcha par exemple... Mais il faut JS et se faire chmir à cliquer sur des machins...

une appli tierce de blocage 👍 efficace - 👎 ardu pour le webmestre amateur

On a entendu parler d'Anubis ( https://sebsauvage.net/links/?ZFvxlg ) que je n'ai pas testé mais qui détecte qu'un BOT en est un en faisant remplir une «preuve de travail» au navigateur. Même s'ils bossent dessus, le problème, pour les gens un sensibles comme nous, reste qu'il faut JS activé... et que ça semble un peu poilu à configurer...

Même chose pour goaway (https://git.gammaspectra.live/git/go-away) qui semble fonctionner comme un reverse proxy...

Admettons   un instant...

que je veuille une solution simple à installer en PHP qui permette de filtrer raisonnablement les bots en question...

Il faut déjà détecter le bot:

ensuite il faut lutter contre le bot

Mais on peut bien sûr choisir de lutter, au prix d'un peu de charge serveur:

Exemple de zip-bomb. (Votre serveur envoie 10 Mo, côté client ça se décompresse en 10 Go côté client. La plupart des bots qui scannent les sites web supportent la compression gzip et chargeront bien volontier ce fichier. Et comme ils sont mal développés, ils vont planter. (En principe, que vous développez un client http, il faut coder la quantité de données maximales de données que vous allez lire d'une requête http. Par exemple, il n'est généralement pas utile de charger plus de 20 Mo pour une image. Par défaut, ce n'est pas limité.) (via https://shaarli.zoemp.be/shaare/mx1lcg) Une autre manière de répondre aux bots, c'est d'envoyer les données, mais très lentement. Ça ne consomme que peu de ressources côté serveur, mais côté client il va attendre les données.

dd if=/dev/zero bs=1G count=10 | gzip -c > 10GB.gz

<?php
if (ipIsBlackListed() || isMalicious()) {
    header("Content-Encoding: gzip");
    header("Content-Length: "+ filesize(ZIP_BOMB_FILE_10G)); // 10 MB
    readfile(ZIP_BOMB_FILE_10G);
    exit;
}
?>

une bidouille perso : antibotai

photo de subotai
Mon cerveau est content, il a fait sa blague de merde
S'pas facile des fois...

Donc, c'est un petit script PHP dont je préfère vous annoncer de suite qu'il s'agit plus d'une proof of concept que d'un truc à intégrer dans l'immédiat...

Toutefois

  1. il permet de détecter les user-agents de bots IA
  2. il gère les adresses IP et les plages d'IP
  3. il détecte les fréquences de connexions trop rapides
  4. en cas de bot, on peut choisir:
    1. le blocage par header (404 etc)
    2. la redirection automatique vers une URL de son choix
    3. la pollution par retour de bruit (lorem ipsum aléatoire mélangeant des mots français, anglais et espagnols...)

On gère la configuration par des constantes:

  1. en précisant un code HTML dans HEADER_CODE_FOR_BOTS, antibotai boutera le bot avec le header correspondant.
  2. sinon, REDIRECT_TO_URL peut contenir une URL de redirection
  3. USE_CONNECTION_FREQUENCY , USE_USERAGENT et USE_IP, s'ils sont à TRUE, vont déclencher les diverses détections correspondantes.
  4. POLLUTE_LENGTH (nombre de mots) qui, s'il n'est pas vide génère un texte de pollution

Afin de pouvoir contrôler l'efficacité du bouzin, il y a un fichier log (LOGFILE) ce qui m'a permis de voir que ça avait fonctionné pour quelques bots au moins:

Capture d’écran du 2025-11-02 10-25-19.png

Limite constatée

Si une page de votre site redirige automatiquement vers une autre, antibotai peut penser qu'il s'agit d'un bot car la fonction is_too_quick_to_be_honest() va détecter deux accès trop rapides pour la même ip... Il m'a fallu adapter ce script pour le cas précis de ces redirections.

Je n'ai pas tout testé mais si le coeur vous en dit: de mon côté j'ai pas le temps: rien que pour TERMINER cet article -commencé il y a un moment - j'ai été interrompu pour : réparer un vélux, réparer une fuite de douche, couper les cheveux et préparer à manger... (en plus des interruptions diverses habituelles )

Sources diverses:

Téléchargement

Le zip est à récupérer là http://cdn.warriordudimanche.net/antibotai.zip

Il contient :

<link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/style.css"/> <link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.css"/> <script src="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.js"> <script>[].forEach.call(document.querySelectorAll("[lightbox]"), function(el) { el.lightbox = new Lightbox(el);});

► Commentaires

PluXml plugin Starter v1.3

samedi 4 octobre 2025 à 15:26

Pour toute personne voulant faire des plugins pour pluXML, j'ai mis à jour mon générateur de plugin: pour rappel, il sert à créer tous les fichiers et sous-dossiers préconfigurés selon vos choix.

Je ne m'étends pas plus, vu que je dois être le seul à utiliser ça, mais bon.

Au cas où,

<link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/style.css"/> <link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.css"/> <script src="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.js"> <script>[].forEach.call(document.querySelectorAll("[lightbox]"), function(el) { el.lightbox = new Lightbox(el);});

► Commentaires

#LIDD : « l’avenir de la télévision », une TV gratuite contre des pubs constantes - Next

mardi 30 septembre 2025 à 18:09

Alors, là, j'ai pensé à idiocracy direct...

idiocracy.jpeg
Via https://sebsauvage.net/links/
<link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/style.css"/> <link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.css"/> <script src="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.js"> <script>[].forEach.call(document.querySelectorAll("[lightbox]"), function(el) { el.lightbox = new Lightbox(el);});

► Commentaires

Nicolas Sarkozy condamné : Bien que relaxé pour « corruption », l’ex-Président bientôt en prison… On vous explique tout

jeudi 25 septembre 2025 à 16:29
sarkodtc.jpeg

réalisé avec https://api.warriordudimanche.net/stamp/

«J'irai dormir en prison mais la tête haute»

oui, oui, ta gueule et avance... De toutes façon, la tête haute, même avec tes talonnettes...

Finalement, le karcher a fini par marcher... Bon, c'est pas tout ça mais il en reste plein: au suivant !

<link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/style.css"/> <link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.css"/> <script src="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.js"> <script>[].forEach.call(document.querySelectorAll("[lightbox]"), function(el) { el.lightbox = new Lightbox(el);});

► Commentaires

L'attribut contenteditable plaintext-only - Alsacreations

lundi 15 septembre 2025 à 06:45

Résumé : l'attribut contenteditable est une faille XSS en soi car il permet d'injecter une balise script.

Pour éviter ça, contenteditable="plaintext-only".

Et si on a besoin de texte enrichi, on laisse contenteditable="true" mais on sanitize...

<link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/style.css"/> <link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.css"/> <script src="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.js"> <script>[].forEach.call(document.querySelectorAll("[lightbox]"), function(el) { el.lightbox = new Lightbox(el);});

► Commentaires