Vue normale

Reçu hier — 14 avril 2025TIC

Et si l'IA devenait un compagnon ?

14 avril 2025 à 21:16
Les assistants IA sont toujours plus présents dans notre quotidien et, malgré le caractère virtuel de nos interactions avec ces outils, certains internautes peuvent se lier d’amitié avec un chatbot. Tout est une question de “réglages” !

[Anubis] Utiliser la preuve de travail pour bloquer les robots

14 avril 2025 à 02:00

Bonjour à tous,

Le mois dernier, je vous parlais de mon problème lié aux crawlers d’IA en bloquant l’accès à mon serveur à des pays entiers. Aujourd’hui, je vais vous montrer comment j’ai mis en place Anubis avec Traefik pour réussir à ne bloquer (que ?) les crawlers et les bots.

Contexte

Mon instance Gitea, comme toutes les forges logicielles publiques, se fait tabasser par les robots scannant ce genre d’outils pour “améliorer/nourrir” des IA. Dans un monde idéal (et j’en parlais dans mon dernier article), le fichier robots.txt est respecté et aucun abus n’a lieu, fin de l’histoire. Sauf que dans le monde de l’IA, on se fout des règles, on se fout de tout. Il suffit de voir ce genre d’article dont le titre est littéralement:

OpenAI dit que c’est fini s’ils ne peuvent pas voler les contenus Copyrightés

Donc on ne respecte pas ce fichier, et on tabasse tout le monde pour faire la course à qui a la plus grosse (IA).

Le mois dernier, j’avais donc montré comment j’avais du en arriver à bloquer des pays entiers au niveau pare-feu. La solution ne me plaisait pas car elle exclue également tous les utilisateurs légitimes de ces pays. Aussi, ça voudrait aussi dire que les entreprises scannant illégitimement le web auraient gagné.

De plus, chaque jour, le spam venait de nouveaux pays au point où je n’avais whitelisté que la France. J’en étais arrivé au point où j’avais totalement coupé mon instance Gitea, et je la démarrai juste quand j’avais besoin de commit un truc …

Mais ça, c’était en attendant une solution plus pérenne que j’ai pu mettre en place la semaine dernière.

Présentation d’Anubis

Anubis est le fruit de l’exaspération de Xe Iaso par ces crawlers d’IA qui ne respectent rien. Le code source est disponible ici.

Il s’agit un reverse-proxy écrit en Go qui exige la résolution d’un défi de preuve de travail (Proof of work en anglais). Si le défi est réussi, alors l’accès au service est autorisé et un cookie est déposé pour autoriser directement les prochaines requêtes.

L’outil est encore très jeune, mais déjà utilisé pour protéger des sites de l’UNESCO, le dépôt Git de kernel.org, le Gitlab de GNOME, etc…

Mise en place avec Traefik

Tout d’abord, voici comment ça va marcher:

  • Traefik reçoit une requête à destination de git.pofilo.fr.
  • Il la transmet au service Anubis.
  • Anubis s’assure que l’émetteur de la requête est autorisé (via la preuve de travail ou le cookie).
  • Si c’est le cas, il la transmet à Gitea via un entrypoint dédié.

Ajout de l’entrypoint

Il s’agit d’un entrypoint local à ne pas exposer sur le réseau public, c’est lui que l’instance Gitea va désormais écouter.

Dans ma conf statique de Traefik, j’ai donc:

 1entryPoints:
 2  web:
 3    address: :80
 4    http:
 5      redirections:
 6        entryPoint:
 7          to: websecure
 8          scheme: https
 9  websecure:
10    address: :443
11  anubis:
12    address: :3923

Ajout du service

Il faut désormais ajouter le service Anubis.

Dans mon cas, je le dédie à mon instance Gitea, de ce fait, je peux avoir plusieurs instances Anubis avec diverses configurations pour protéger différents services avec des règles différentes.

 1services:
 2  gitea-anubis:
 3    image: ghcr.io/techarohq/anubis:latest
 4    environment:
 5      BIND: ":8080"
 6      DIFFICULTY: "4"  # Fast successful response with most devices, 5 is way more slow
 7      SERVE_ROBOTS_TXT: "false"  # I prefer my own robots.txt from Gitea service (supposed to block every user agents)
 8      TARGET: "http://traefik:3923"
 9      ED25519_PRIVATE_KEY_HEX_FILE: "/etc/private_key_hex_file"
10      POLICY_FNAME: "/etc/botPolicies.json"
11    labels:
12      - "traefik.enable=true"
13      - "traefik.docker.network=traefik"
14      - "traefik.http.services.gitea-anubis.loadbalancer.server.port=8080"
15      - "traefik.http.routers.gitea-anubis.rule=Host(`git.pofilo.fr`)"
16      - "traefik.http.routers.gitea-anubis.entrypoints=websecure"
17        # TLS and security
18      - "traefik.http.routers.gitea-anubis.tls=true"
19      - "traefik.http.routers.gitea-anubis.tls.options=intermediate@file"  # this is the conf generated with https://ssl-config.mozilla.org/
20      - "traefik.http.routers.gitea-anubis.middlewares=nocsp-headers@file"  # this is the conf I used for headers
21    networks:
22      - traefik
23    volumes:
24      - ../path/to/private_key_hex_file:/etc/private_key_hex_file:ro
25      - ../path/to/botPolicies.json:/etc/botPolicies.json:ro
26networks:
27    name: traefik
28    external: true

Du côté de mon service Gitea, je remplace - "traefik.http.routers.gitea.entrypoints=websecure" par - "traefik.http.routers.gitea.entrypoints=anubis". Il faut également que je retire ce genre de lignes (tout est désormais géré par le routeur dédié au service Anubis):

1# TLS and security
2- "traefik.http.routers.gitea.tls=true"
3- "traefik.http.routers.gitea.tls.options=intermediate@file"
4- "traefik.http.routers.gitea.middlewares=nocsp-headers@file"

Concernant:

  • L’image Docker: personnellement je fixe les versions et j’utilise mon propre registre d’images.
  • ED25519_PRIVATE_KEY_HEX_FILE: ça permet de ne pas re-challenger les clients si je redémarre l’instance d’Anubis (le cookie expire tout de même après 1 semaine).
  • POLICY_FNAME: je vais en parler dans le prochain paragraphe.
  • Pour le reste, je ne rentre pas trop dans les détails, chacun a différents besoin et j’ai donc essayé de rester suffisament générique.

Par exemple, si on ne veut qu’une seule instance d’Anubis, pour matcher toutes les règles (et jouer sur les priorités), on pourrait utiliser une règle du type:

- traefik.http.routers.anubis.rule=PathRegexp(`.*`)

Le fichier de conf des “policies”

La version par défaut est trouvable ici et la documentation ici. Personnellement, je suis parti du principe que:

  • Mon fichier robots.txt est censé bloqué tout type de bots.
  • Je n’en ai rien à carrer de donner à manger à des IA, et encore moins quand je leur interdis déjà explicitement.
  • J’ai déjà perdu trop de temps avec ces problèmes, donc on va au plus simple et surtout plus efficace.

Au final, j’interdis globalement tout ce qui ressemble à un bot/crawler et je force le challenge à tout les autres (sauf pour l’accès au fichier robots.txt pour ceux qui le respectent encore).

 1{
 2  "bots": [
 3    {
 4      "name": "robots-txt",
 5      "path_regex": "^/robots.txt$",
 6      "action": "ALLOW"
 7    },
 8    {
 9      "name": "internal-traffic",
10      "remote_addresses": ["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"],
11      "action": "ALLOW"
12    },
13    {
14      "name": "generic-challenging",
15      "user_agent_regex": "(?i)(bot|spider|crawl|fetch|scrapy|wget|curl|python-requests|libwww|Java|Go-http-client)",
16      "action": "CHALLENGE",
17      "challenge": {
18        "difficulty": 16,
19        "report_as": 4,
20        "algorithm": "slow"
21      }
22    },
23    {
24      "name": "ai-bots",
25      "user_agent_regex": "(?i)(AI2Bot|Ai2Bot-Dolma|Amazonbot|anthropic-ai|Applebot|Applebot-Extended|Brightbot 1.0|Bytespider|CCBot|ChatGPT-User|Claude-Web|ClaudeBot|cohere-ai|cohere-training-data-crawler|Crawlspace|Diffbot|DuckAssistBot|FacebookBot|FriendlyCrawler|Google-Extended|GoogleOther|GoogleOther-Image|GoogleOther-Video|GPTBot|iaskspider/2.0|ICC-Crawler|ImagesiftBot|img2dataset|imgproxy|ISSCyberRiskCrawler|Kangaroo Bot|Meta-ExternalAgent|Meta-ExternalFetcher|OAI-SearchBot|omgili|omgilibot|PanguBot|Perplexity-User|PerplexityBot|PetalBot|Scrapy|SemrushBot-OCOB|SemrushBot-SWA|Sidetrade indexer bot|Timpibot|VelenPublicWebCrawler|Webzio-Extended|YouBot)",
26      "action": "CHALLENGE",
27      "challenge": {
28        "difficulty": 16,
29        "report_as": 4,
30        "algorithm": "slow"
31      }
32    },
33    {
34      "name": "default",
35      "user_agent_regex": ".*",
36      "action": "CHALLENGE"
37    }
38  ]
39}

Suppression des logs d’accès sur Anubis

Avec mon instance Gitea de nouveau debout, mes fichiers de logs d’accès explosent. Or avec Traefik, il n’y a pas moyen de ne pas loguer les accès pour un seul service, c’est tout ou rien.

J’ai donc mis en place une simple tâche cron qui va faire la commande sed pour supprimer tous les logs sur le service Anubis:

sed -i '/"gitea-anubis@docker"/d' /path/to/traefik-access.log && docker kill --signal="USR1" traefik > /dev/null 2>&1

Il faut également envoyer le signal USR1 à Traefik afin qu’il ré-ouvre le fichier de log de son côté.

Ce n’est pas parfait, parce que ça me supprime les IP entrantes dans les logs d’accès de Gitea (du point de vue de Traefik, le trafic provient d’Anubis via l’entrypoint dédié), mais ça évite de générer plusieurs centaines de Mo de logs pour rien chaque jour.

Conclusion

C’est très dommage de devoir faire ça, mais ça protège réellement mon serveur sans avoir à bloquer des pays entiers. Ça demande également des calculs “inutiles” (dans le sens où ils ne servent pas à quelque chose d’utile derrière) à chaque nouveau client, mais peut-on encore parler de sobriété face à ce que consomme l’entraînement des IA ?

À noter également que pour l’instant, Anubis rend le Javascript obligatoire. C’est un point à prendre en compte dans le choix de mettre Anubis devant un service.

Pour finir, dans cet article, je montre comment j’ai configuré Anubis avec Gitea, mais on voit qu’on peut très facilement l’adapter à d’autres services. J’ai par exemple rajouté Anubis sur ce site pour éviter que les IA y volent le contenu sans mon accord.

Reçu aujourd’hui — 15 avril 2025TIC

Confidentialité : Google Chrome 136 enterre un problème de sécurité vieux de 20 ans !

14 avril 2025 à 10:00

Google Chrome 136 s'apprête à intégrer une amélioration pour corriger une faille portant atteinte à la confidentialité, à cause du sélecteur CSS visited.

The post Confidentialité : Google Chrome 136 enterre un problème de sécurité vieux de 20 ans ! first appeared on IT-Connect.

PrivateBin : comment déployer votre propre PasteBin sur un serveur ?

14 avril 2025 à 18:00

PrivateBin est une alternative open source à PasteBin, une application très utile pour partager des mots de passe et bouts de code en toute sécurité.

The post PrivateBin : comment déployer votre propre PasteBin sur un serveur ? first appeared on IT-Connect.

Goossips SEO : Hreflang, Outil de désaveu

15 avril 2025 à 08:09

 Quelques infos sur Google (et Bing parfois) et son moteur de recherche, glanées ici et là de façon officieuse ces derniers jours, avec au programme cette semaine quelques réponses à ces angoissantes questions : quelles sont les conséquences de balises hreflang pointant vers des pages redirigées en 301 ? L'outil de désaveu peut-il être considéré comme une solution de maintenance pour les sites ?

Goossip #1

Les balises hreflang pointant vers des pages redirigées sont probablement acceptables

Selon John Mueller, les balises hreflang pointant vers des pages avec une redirection 301 sont « probablement acceptables ». Cependant, il recommande d'automatiser la configuration des balises hreflang pour éviter les redirections, ce qui facilite au passage le suivi et réduit les risques liés aux problèmes de canonicalisation.

Source : Search Engine Roundtable

Taux de fiabilité : ⭐⭐ On a quelques doutes...

En effet, même si certaines solutions techniques fonctionnent en l’état, l’idéal reste encore de faire les choses proprement. D’autant que John Mueller évoque ici un « probablement acceptable » qui laisse une belle place au doute.

Goossip #2

L’outil de désaveu de liens n’est pas un outil de maintenance de site

Lors d’un événement Search Central à New York, John Mueller a précisé que l’outil de désaveu n’était pas destiné à un usage régulier et ne fait pas partie de la maintenance normale d’un site. Par ailleurs, il a insisté sur le fait que Google ne reconnaît pas la notion de « backlinks toxiques », terme inventé par certains outils SEO. Le désaveu ne devrait être utilisé que dans certains cas extrêmes, comme lorsqu’un site a acheté des liens et subit une action manuelle pour spam. En règle générale, Google ignore les liens douteux automatiquement.

Source : Search Engine Journal

Taux de fiabilité : ⭐⭐⭐ On est d'accord !

Derrière la déclaration de John Mueller, qui ne manque jamais une occasion pour rappeler que l’outil de désaveu de liens est utilisé en dépit du bon sens, il y a aussi l’idée encore répandu qu’un mauvais classement serait nécessairement lié à un problème de liens toxiques. Dans la plupart des cas, l’explication se trouve souvent ailleurs : contenu de mauvaise qualité, problèmes techniques…

L’article "Goossips SEO : Hreflang, Outil de désaveu" a été publié sur le site Abondance.

Boxedwine – Linux Emulator that runs WINE

15 avril 2025 à 08:38
hahaha non attendez 😄🤔
C'est une appli en wasm (donc javascript) qui tourne dans le navigateur.
Qui émule un processeur Intel 32 bits.
Dans lequel tourne Linux.
Dans lequel tourne Wine.
Dans lequel des jeux et applications Windows sont lancés.

Donc tout cela sert à faire tourner des applications Windows directement dans un navigateur.
(bon que des applis windows 32 bits)
C'est tordu mais j'admire la prouesse.
(Permalink)

Samsung dévoile deux smartphones robustes et avec IA : Galaxy XCover7 Pro et Galaxy Tab Active5 Pro

15 avril 2025 à 08:37
Alliant puissance et intelligence, le XCover7 Pro s’impose comme le nouveau smartphone tout-terrain de Samsung. Ce modèle de dernière génération se distingue par un écran plus lumineux et l’intégration du logiciel d’intelligence artificielle de Google.

❌