Skip to content

AI Bots aussperren

Linux
  • Ich glaube, wegen @thomas@metalhead.club bin ich über dieses Projekt gestolpert. Es gibt ja private Webprojekte im Netz, wo ich diesen AI-Bot-Besuch nicht so gerne möchte. Da ich gelesen habe, das sich diese Bots nicht an die robots.txt halten, muss man sich halt was einfallen um sie zu ärgern 🙂 Ich denke, das es kein 100%iger Schutz ist, aber evtl. ist es ein Anfang.

    Da ich Nginx nutze, benötige ich dieses File.

    nginx-block-ai-bots.conf
    

    Das muss dann noch in Nginx eingebaut werden und dann sollte es funktionieren. Mein Ansatz um das zu lösen, sieht so aus. Ich habe ein Script 😉

    ai-block.sh

    #!/bin/bash
    # Script um AI-Bots zu blocken
    # https://github.com/ai-robots-txt/ai.robots.txt/tree/main
    
    mkdir /root/AI-test
    cd /root/AI-test
    
    ## Daten holen
    curl -O https://raw.githubusercontent.com/ai-robots-txt/ai.robots.txt/master/nginx-block-ai-bots.conf
    
    ## Daten in nginx einbauen
    mv nginx-block-ai-bots.conf /etc/nginx/blocklists/
    
    ## NGINX neustarten
    systemctl restart nginx.service
    

    Das wird über einen crontab Eintrag jeden Tag aufgerufen.

    0 1 * * * /root/ai-block.sh
    

    Und in Nginx wird die Blocklist so geladen. Nur ein Ausschnitt aus dem Server Block.

    ## Server Block
    server {
       listen       443 ssl;
       listen  [::]:443 ssl;
       server_name  <DOMAIN>;
    
       # AI-Bots blockieren
        include /etc/nginx/blocklists/nginx-block-ai-bots.conf;
    

    Testen kann man das dann so.

      curl -A "ChatGPT-User" <DOMAIN>
      curl -A "Mozilla/5.0" <DOMAIN>
    

    Der erste Test bringt dann einen 403

    <html>
    <head><title>403 Forbidden</title></head>
    <body>
    <center><h1>403 Forbidden</h1></center>
    <hr><center>nginx/1.22.1</center>
    </body>
    </html>
    

    Der zweite Test ist ein erlaubter Zugriff.

    Danke an @thomas@metalhead.club für den Beitrag zu o.g. Projekt.

    Und zum Schluss noch die Frage "Was kann man noch machen?"

    Als Ergänzung noch, ich arbeite gerne mit diesen AI's an meinen Python Projekten, aber trotzdem gibt es private Webseiten von mir, wo ich das nicht möchte.

  • Wir können das noch für eine sanfte Methode erweitern, das ist die Datei robots.txt, wo man sich in alten Zeiten mal dran hielt. Einige Bots machen das, andere nicht. Praktisch, das o.g. Projekt bietet diese Datei auch an. Dann werden wir das kurz mal mit einbauen.

    ai-block.sh

    #!/bin/bash
    # Script um AI-Bots zu blocken
    # https://github.com/ai-robots-txt/ai.robots.txt/tree/main
    
    mkdir /root/AI-test
    cd /root/AI-test
    
    ## Daten holen
    curl -O https://raw.githubusercontent.com/ai-robots-txt/ai.robots.txt/master/nginx-block-ai-bots.conf
    curl -O https://raw.githubusercontent.com/ai-robots-txt/ai.robots.txt/master/robots.txt
    
    ## Daten in nginx einbauen
    mv nginx-block-ai-bots.conf /etc/nginx/blocklists/
    mv robots.txt /var/www/html
    
    ## NGINX neustarten
    systemctl restart nginx.service
    

    Damit das in nginx funktioniert. Den Server Block um folgendes erweitern.

    # Serve robots.txt directly from Nginx
    location = /robots.txt {
        root /var/www/html;
        try_files $uri =404;
    }
    

    Kurzer Test

    https://<DOMAIN>/robots.txt
    

    Ergebnis

    User-agent: AI2Bot
    User-agent: Ai2Bot-Dolma
    User-agent: Amazonbot
    User-agent: anthropic-ai
    User-agent: Applebot
    User-agent: Applebot-Extended
    User-agent: Brightbot 1.0
    User-agent: Bytespider
    User-agent: CCBot
    User-agent: ChatGPT-User
    User-agent: Claude-Web
    User-agent: ClaudeBot
    User-agent: cohere-ai
    User-agent: cohere-training-data-crawler
    User-agent: Crawlspace
    User-agent: Diffbot
    User-agent: DuckAssistBot
    User-agent: FacebookBot
    User-agent: FriendlyCrawler
    User-agent: Google-Extended
    User-agent: GoogleOther
    User-agent: GoogleOther-Image
    User-agent: GoogleOther-Video
    User-agent: GPTBot
    User-agent: iaskspider/2.0
    User-agent: ICC-Crawler
    User-agent: ImagesiftBot
    User-agent: img2dataset
    User-agent: imgproxy
    User-agent: ISSCyberRiskCrawler
    User-agent: Kangaroo Bot
    User-agent: Meta-ExternalAgent
    User-agent: Meta-ExternalFetcher
    User-agent: OAI-SearchBot
    User-agent: omgili
    User-agent: omgilibot
    User-agent: PanguBot
    User-agent: Perplexity-User
    User-agent: PerplexityBot
    User-agent: PetalBot
    User-agent: Scrapy
    User-agent: SemrushBot-OCOB
    User-agent: SemrushBot-SWA
    User-agent: Sidetrade indexer bot
    User-agent: Timpibot
    User-agent: VelenPublicWebCrawler
    User-agent: Webzio-Extended
    User-agent: YouBot
    Disallow: /