Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Pyison — Pythonischer KI-Crawler-Tarpit | Kitploit
Tools/GitHubGitHub/jonaslong/pyison
DefensivwerkzeugeScripting & AutomatisierungWebsicherheitLernen & BildungCrawlerAnti-Bot
GitHubjonaslong/pyison

Pyison

Pythonischer KI-Crawler-Tarpit

Repository anzeigen
12224vor 11 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Pyison

Pyison ist ein Tar-Pit für KI-Webcrawler

Einleitung

  • Wie alle Webcrawler fordern KI-Bots Seiten von Webservern an und folgen dann den Links auf der Seite zu anderen Seiten. Dadurch können sie einen Index einer gesamten Website erstellen.
    • Im Gegensatz zu anderen Webcrawlern stellen KI-Bots jedoch einige besondere Probleme dar
      • Serveradministratoren können eine robots.txt-Datei konfigurieren, die Webcrawlern mitteilt, welche Seiten sie crawlen sollen und welche nicht.
        • Es wurde festgestellt, dass einige KI-Crawler diese Datei ignorieren. Es gibt Datenschutz- und Urheberrechtsbedenken, wenn diese Bots die Daten einer Website zum Trainieren von LLMs verwenden dürfen, insbesondere wenn der Benutzer das Crawlen explizit abgelehnt hat.
        • Einige Crawler ignorieren auch die Ratenbegrenzung. Wenn sie Seiten so schnell wie möglich anfordern, können sie eine erhebliche Last auf einem Webserver verursachen.
    • Betreten Sie Pyison. Wie andere KI-Crawler-Tarpits (Nepenthes, Iocane) füttert Pyison Webcrawler mit einer endlosen Liste von Links zu anderen Seiten auf seiner Website. Dies fängt die Crawler auf einer einzigen Website ein, wo sie endlos in einem ständig wachsenden Meer von Links navigieren.
      • Wenn KI-Crawler an einem Ort festgehalten werden, wird verhindert, dass sie andere Teile der Website indizieren, die der Besitzer möglicherweise nicht an LLMs verfüttern möchte.
      • Gleichzeitig können diese Seiten jede Menge nutzlosen Text enthalten. Wenn LLMs diesen Text in ihre Modelle einbeziehen, können sie allmählich „vergiftet“ werden, da die zufällige Eingabe ihre Antworten weniger kohärent macht.

Motivation

  • Nützliche Software zu erstellen, um dem Anstieg des LLM-Inhaltsdiebstahls entgegenzuwirken
  • Lösen von Problemen in bestehenden KI-Tarpits:
    • Generierung von Zufallstext ohne Verwendung einer Markov-Kette, von LLMs oder vorhandenen Textbeispielen
    • Keine Unterscheidung von KI-Bots anhand des User-Agent-Headers, da sich Crawler oft als normale Benutzer tarnen
    • Entwurf einer realistischen blogartigen Website, um die Erkennung zu verhindern
      • Schaffung eines extrem anpassbaren Frameworks für weitere Konfiguration
    • Bereitstellung einer Lösung, die sich einfach in eine bestehende Website integrieren lässt
      • Unterstützt (aber erfordert nicht) Reverse Proxies/spezifische Webserver, bietet Unterpfad-Konfiguration mit einem Dokumentstammverzeichnis
    • Betrieb mit geringem Platzbedarf statt eines gesamten CMS oder funktionsreichen Webservers

Technische Spezifikationen

  • Dieses Projekt betreibt einen dynamischen Webserver unter Verwendung der HTTPServer-Bibliothek von Python
  • Sätze werden aus einer 50/50-Mischung von zufälligen englischen Wörtern und „Stoppwörtern“ erzeugt
  • Pyison verwendet einen globalen Salt sowie eine Seiten-URL, um seinen RNG zu seeden. Dadurch wird sichergestellt, dass, wenn Crawler jemals einen „Sicherheitscheck“ durchführen, indem sie eine Seite neu laden, diese dieselbe ist wie beim letzten Mal. Gleichzeitig sollten verschiedene Server unterschiedliche globale Seeds verwenden, damit nicht alle Websites, die Pyison verwenden, gleich aussehen.
  • Es ist möglich, eine unbegrenzte Anzahl von Seiten zu generieren, da Pyison keine permanenten Dateien erstellt. Es ist ein dynamischer Webserver, der einfach HTML generiert und an den Client sendet.
  • Die Verwendung von HTML-Inhalts-Tags, CSS-Formatierung und Bildern sollte die Website für einen Crawler etwas realistischer erscheinen lassen.
  • Es ist möglich, die Ausgabe von Pyison zu konfigurieren, ohne das Programm neu zu schreiben, indem die Konfigurations-, statischen und Vorlagendateien geändert werden.
  • Pyison antwortet auf fehlerhafte POST- und PUT-Anfragen mit einem 404, falls Crawler testen, ob diese HTTP-Verben konfiguriert sind.

Erste Schritte

  • Klonen Sie dieses Projekt in einen lokalen Ordner

  • Ändern Sie die Einstellungen in der Datei config/config.json

    • Setzen Sie random-seed auf eine zufällige Zahl!
    • Setzen Sie die port-Nummer für den Server
    • Weitere Informationen finden Sie im Abschnitt Konfiguration
  • (Optional, aber empfohlen) Aktualisieren Sie die HTML-Vorlage, CSS, Bilder und robots.txt nach Ihren Wünschen

    • Dieses Projekt ist effektiver, wenn Seiten unterschiedlich aussehen, was durch Variation der HTML- und CSS-Struktur erreicht werden kann. Ordnen Sie einige Dinge um und benennen Sie sie um, oder schreiben Sie sie vollständig neu.
  • (Optional) Bearbeiten Sie die robots.txt, wenn Sie ändern möchten, welche Bots betroffen sind

  • Richten Sie die Serverumgebung mit einer der unten stehenden Methoden ein

  • Stellen Sie den Server hinter einen Reverse Proxy

    Lokale Ausführung

    • Installieren Sie nltk
      • pip install nltk
    • Führen Sie Pyison aus
      • python3 src/server.py
    • Überprüfen Sie, ob es läuft
      • Öffnen Sie http://localhost:<Ihre Portnummer> in einem Browser

    Docker

Reverse Proxy

Es wird dringend empfohlen, einen Reverse Proxy zu verwenden, um diesen Inhalt auszuliefern. Dies kann die Serverlast reduzieren, indem Seiten zwischengespeichert und Ratenbegrenzungen eingeführt werden, sowie den Inhalt über https ausliefern und vor einigen grundlegenden Webserver-Exploits schützen.

Überlegungen

  • Diese Beispiele verwenden Nginx Proxy Manager, aber jede Reverse-Proxy-Software sollte funktionieren
  • Pyison unterstützt die strengsten SSL-Einstellungen von NPM
  • NPM sollte den User-Agent-HTTP-Header von NPM an den Pyison-Server ohne spezielle Konfiguration weiterleiten. Verwenden Sie proxy_pass_header User-Agent; falls nötig.

Unabhängige Subdomain-Konfiguration

  • Wählen Sie die folgenden Einstellungen in der Benutzeroberfläche oder geben Sie die entsprechenden Einstellungen in der Konfigurationsdatei ein:

    Die NGINX-Reverse-Proxy-Oberfläche. Der Dialog "Proxy-Host bearbeiten" ist geöffnet.
    • Domain Names: Eine Domain oder Subdomain, die Sie kontrollieren, z. B. tarpit.example.com
    • Scheme: http
    • Forward Hostname / IP: localhost oder der Name des Docker-Containers, wenn ein Docker-Netzwerk verwendet wird
    • Forward Port: Der in der docker-compose/run-Befehl/config.json definierte Port (Standard ist 80)
    • Aktivieren Sie Cache Assets und Block Common Exploits, aber nicht Websockets Support

Unterpfad-Konfiguration

  • Um Pyison in einem Unterpfad zu verwenden, verwenden Sie die folgende Standortkonfiguration

    root@kitploit:~
    # Behandelt die Stammseite ("example.com/tarpit")
    location /tarpit {
        proxy_pass http://localhost:80;
    }
    
    # Behandelt alle Unterseiten ("example.com/tarpit/a" und "example.com/tarpit/a/b")
    location /tarpit/ {
        proxy_pass http://localhost:80;
    }
    
    # Behandelt alle URLs mit einer 3-Buchstaben-Dateierweiterung ("example.com/tarpit/style.css" und "example.com/tarpit/images/picture.jpg")
    # Beachten Sie, dass ~ für Regex-Abgleich steht. Die unmittelbar darauf folgende Zeichenfolge muss eine gültige Regex-Anweisung sein.
    location ~ .*\/tarpit\/.*\....$ {  
        proxy_pass http://localhost:80;
    }
    
  • Hier ist eine funktionierende Einrichtung über die Benutzeroberfläche:

    Die NGINX-Reverse-Proxy-Oberfläche. Der Dialog "Proxy-Host bearbeiten" ist auf dem Tab "Benutzerdefinierte Standorte" geöffnet.
    • Der erste Standortblock /tarpit hat keine benutzerdefinierte Konfiguration. Er verhält sich wie der erste oben definierte Standortblock.
    • Der zweite Standortblock /tarpit/ enthält den zweiten und dritten oben definierten Standortblock
    • Ersetzen Sie tarpit durch den gewünschten Stammpfad.
      • Wenn Sie einen tieferen Stammpfad wie /tar/pit verwenden, beachten Sie, dass der dritte Standortblock Regex verwendet. Schrägstriche müssen daher mit einem Backslash maskiert werden.

Konfiguration

  • Die Datei config.json definiert verschiedene Einstellungen zur einfachen Anpassung:
  • port (Standard 80)
    • Auf welchem Port Inhalte ausgeliefert werden
  • random-seed (Bitte ändern Sie dies!)
    • Globaler Seed (Salt), um sicherzustellen, dass nicht jeder Webserver genau denselben Text hat
    • Setzen Sie dies auf eine zufällige Zahl, muss nicht sicher sein
  • document-root (Standard "/")
    • Stellt einem Pfad voran für Links
    • Sie müssen dies nur ändern, wenn Sie einen Reverse Proxy verwenden und in ein Unterverzeichnis ausliefern
      • Wenn ja, verwenden Sie entweder einen vollqualifizierten Pfad oder einen relativ zum Stammverzeichnis
        • d. h. https://example.com/pyison/ oder /pyison/
  • fake-image-dir (Standard ["images"])
    • Alle Bilder scheinen von diesem Pfad ausgeliefert zu werden
    • Akzeptiert entweder eine einzelne Zeichenfolge, null oder eine Liste von Optionen, aus denen zufällig ausgewählt wird
  • fake-css-dir (Standard ["css"])
    • Alle CSS-Dateien scheinen von diesem Pfad ausgeliefert zu werden
    • Akzeptiert entweder eine einzelne Zeichenfolge, null oder eine Liste von Optionen, aus denen zufällig ausgewählt wird
  • spacing-characters (Standard ["_","-","%20"])

HTML-Vorlagen

  • Bevor Ihre HTML-Datei(en) ausgeliefert werden, ersetzt Pyison einige voreingestellte Tags durch eigene Werte

    Statische Werte

    Wenn einer dieser Tags mehrmals in der Vorlage angegeben wird, ist jeder Wert derselbe
    • {HOME}
      • Link zum Dokumentstamm, wie in der Konfiguration definiert
    • {TITLE}
      • Titeltext der Seite, basierend auf der aktuellen URL
        • z. B. /blog/about/once-upon-a-time -> Once Upon A Time
    • {UPTITLE}
      • Titeltext der übergeordneten Seite, generiert aus der aktuellen URL
    • {MAIN}
      • Dies sollte als Hauptinhalt der Website verwendet werden. Es generiert mehrere Absätze mit zufälligem Text sowie Abschnittsüberschriften und Unterüberschriften. In jedem Absatz können auch zufällige Links vorhanden sein.
    • {UP}
      • Pfad zur übergeordneten Seite
      • z. B.: /blog/about/once-upon-a-time -> /blog/about
    Jedes Vorkommen dieser Tags wird durch einen eindeutigen Wert ersetzt

Bilder

Pyison-Logo. Ein rechteckiges, landschaftsorientiertes Bild mit einem körnigen grauen Hintergrund. Hellgrüner Text in einer pinselstrichartigen Schrift mit einem dunkelroten Textschatten ist in der Mitte des oberen Drittels des Bildes zentriert. Es lautet 'Pyison'. Unten steht in stilisierter, eckiger weißer Schrift 'This is a tar pit for AI webcrawlers'. Bei näherer Betrachtung sind im gesamten Bild sichtbare JPEG-Artefakte vorhanden.

Hier ist ein Beispiel dafür, wie die Website vor der Bearbeitung der Vorlage aussieht:

Herausgezoomtes Bild einer gesamten Pyison-Seite. Es verwendet schwarzen Text auf einem hellgelben Hintergrund. Oben auf der Seite befindet sich eine grüne Navigationsleiste mit Links, die zufällige Wörter enthalten. Unter der Navigationsleiste befindet sich der Titel 'Home' und ein Logobild mit der Aufschrift 'Pyison: This is a tar pit for AI webcrawlers'. Unter den Bildern befinden sich mehrere Absätze mit zufälligen Wörtern und Überschriften in verschiedenen Einrückungsebenen. Diese Absätze nehmen den größten Teil der Seite ein. Einige der Texte in den Absätzen sind Links zu anderen Seiten. Unten auf der Seite befindet sich ein gefälschter Autorenhinweis mit einem weiteren Pyison-Logo. Der Hinweis lautet 'Written by It'S An'. Darunter befindet sich ein Abschnitt 'Other Posts' mit mehreren weiteren Links.
Tool herunterladen

Mit docker compose

  • Erstellen Sie eine minimale docker-compose.yml-Datei mit folgendem Inhalt
    root@kitploit:~
    services:
      pyison:
        image: "ghcr.io/jonaslong/pyison:main"
        container_name: pyison
        tty: true
        ports:
          - 80:80
    
  • docker compose up
    • (Optional) Verwenden Sie das Flag -d, um sich vom Container zu trennen
  • Damit Änderungen an lokalen Dateien wirksam werden, klonen Sie dieses Repository und verwenden Sie einen Bind Mount. Siehe die vollständige Compose-Datei.

Mit docker run

  • docker run --tty --name pyison -p "127.0.0.1:80:80" --rm ghcr.io/jonaslong/pyison:main
    • (Optional) Entfernen Sie das Flag --rm, um den Container zu persistieren

Aus dem Quellcode bauen

  • Klonen Sie das Repository lokal
  • docker build -t pyison:latest .
  • Führen Sie den Container aus mit docker run --tty --name pyison -p "127.0.0.1:80:80" --rm pyison:latest
  • z. B.: /tar/pit würde location ~ .*\/tar\/pit\/.*\....$ im dritten Standortblock erfordern
  • Aktualisieren Sie die Einstellung document-root von Pyison mit dem vom Proxy verwendeten Unterpfad (siehe Abschnitt Konfiguration)
  • Siehe oben (Reverse Proxy) für weitere Konfiguration von Host, Ports, SSL usw.
    • Leerzeichen, die zwischen den Wörtern in einer Seiten-URL verwendet werden
    • Dies wirkt sich auch darauf aus, wie Seiten-URLs aufgeteilt werden, um sie wieder in Titel zu decodieren
  • unsafe-characters (Standard ["'","`"])
    • Zeichen, die natürlich in der Wortliste vorkommen können, aber aus URLs entfernt werden sollten
    • Standardmäßig entfernt dies Apostrophe (`) und einfache Anführungszeichen (')
  • robots-txt (Standard "assets/robots.txt")
    • Konfiguriert die Datei, die unter /robots.txt ausgeliefert wird
    • Wenn die Zeichenfolge leer ist, wird stattdessen eine 404-Antwort zurückgegeben
  • html-templates (Standard ["assets/template.html"])
    • Auszuliefernde HTML-Datei, die Formattext enthält, um Zufallswerte zu liefern (siehe HTML-Vorlagen)
    • Akzeptiert entweder eine einzelne Zeichenfolge oder eine Liste von Optionen, aus denen zufällig ausgewählt wird
  • css-files (Standard ["assets/style.css"])
    • CSS-Datei(en) zum Ausliefern
    • An CSS-Dateien wird keine Ersetzung vorgenommen
    • Akzeptiert entweder eine einzelne Zeichenfolge oder eine Liste von Optionen, aus denen zufällig ausgewählt wird
  • images
    • ico (Standard ["assets/logo.ico"])
    • jpg (Standard ["assets/logo.jpg"])
    • png (Standard["assets/logo.png"])
    • Für jede der obigen Bilddateierweiterungen: Eine einzelne Bilddatei, null oder eine Liste von Bildern, aus denen zufällig ausgewählt wird
  • remove-from-stop-words
    • Die nltk-Bibliothek hat eine Liste von „Stoppwörtern“, die nützlich ist, um viele gebräuchliche Wörter zu generieren. Einige Einträge sollten jedoch nicht für die Textgenerierung verwendet werden, da sie ein offensichtlicher Hinweis darauf sind, dass es sich um generierten Inhalt handelt
  • {CSSLINK}
    • Zufällige URL zu einem CSS-Dokument
    • Der Anfangspfad dieser URL (z. B. /styles) kann in der Konfiguration festgelegt werden
    • Stellen Sie sicher, dass Sie unmittelbar nach dem Tag '.css' angeben. So weiß der Webserver, dass er CSS anstelle von weiterem HTML senden soll.
      • Das tatsächliche vom Server zurückgegebene Dokument wird basierend auf der/den in der Konfiguration angegebenen CSS-Seite(n) ausgewählt.
  • Dynamische Werte

    • {WORD}
      • Generiert ein einzelnes zufälliges Wort. Eigennamen können großgeschrieben werden.
    • {NAME}
      • Generiert zwei großgeschriebene Wörter mit einem Leerzeichen dazwischen.
    • {SENTENCE}
      • Generiert einen zufälligen Satz, der mit einem Großbuchstaben beginnt und mit einem Punkt endet.
    • {PIC}
      • Generiert eine zufällige URL zu einer Bilddatei
      • Der Anfangspfad dieser URL (z. B. /images) kann in der Konfiguration festgelegt werden
      • Stellen Sie sicher, dass nach dem Link eine geeignete Dateierweiterung (.png, .jpg, .ico) angegeben wird.
        • Das tatsächliche vom Server zurückgegebene Bild wird basierend auf der angegebenen Erweiterung und dem/den in der Konfiguration angegebenen Bild(ern) ausgewählt.
    • {LINK}
      • Generiert einen zufälligen Link, der Unterpfade enthalten kann
      • Der Seitenname kann durch Bindestriche oder Unterstriche getrennt sein
      • z. B.: /dressage/electrochronometer/himself-she-eciliate
    • {OVER}
      • Generiert einen zufälligen Link zu einer Geschwisterseite
      • z. B.: Beim Besuch von /neighborliness/wont_unhonest könnte ein {OVER}-Tag durch /neighborliness/hooliganism ersetzt werden
    • {NEWTITLE}
      • Generiert einen zufälligen Titel
      • Verwendet eine Reihe von zufälligen Wörtern in Titelschreibung
      • z. B.: Nectarial Electrofusion Which Dephosphorization
      • Wenn dieser Tag einem {LINK}- oder {OVER}-Tag folgt, werden Titel und URL synchronisiert
        • z. B.: <a href="https://github.com/jonaslong/pyison/blob/main/%7BOVER%7D">{NEWTITLE}</a> könnte durch <a href="https://github.com/jonaslong/pyison/blob/main/swordmanship/yeller/over-will-oghuz">Over Will Oghuz</a> ersetzt werden
        • Tags werden vorwärts durch die Vorlage ausgewertet. Ein {NEWTITLE}-Tag sucht rückwärts nach dem nächstgelegenen {LINK}- oder {OVER}-Tag, um sich damit zu synchronisieren.
          • Tags werden immer korrekt gepaart, wenn einem {LINK}- oder {OVER}-Tag unmittelbar sein -Tag folgt, falls ein gewünscht wird.
    {NEWTITLE}
    {NEWTITLE}