Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Pyison — Tarpit Pythonico per crawler AI | Kitploit
Strumenti/GitHubGitHub/jonaslong/pyison
Strumenti DifensiviScripting e AutomazioneSicurezza WebApprendimento e FormazioneCrawlerAnti-Bot
GitHubjonaslong/pyison

Pyison

Tarpit Pythonico per crawler AI

Vedi Repository
12221611 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Pyison

Pyison è un tarpit per i webcrawler AI

Introduzione

  • Come tutti i web crawler, i bot AI richiedono pagine dai server web e poi seguono i collegamenti sulla pagina verso altre pagine. In questo modo, possono creare un indice di un intero sito web.
    • A differenza di altri web crawler, però, i bot AI presentano alcune problematiche uniche
      • Gli amministratori del server possono configurare un file robots.txt, che dice ai web crawler quali pagine dovrebbero e non dovrebbero scansionare.
        • Alcuni crawler AI sono stati trovati a ignorare questo file. Ci sono preoccupazioni per la privacy e il copyright nel permettere a questi bot di utilizzare i dati di un sito web per addestrare LLM, specialmente quando l'utente ha esplicitamente rinunciato alla scansione.
        • Alcuni crawler ignorano anche la limitazione della frequenza. Quando richiedono pagine il più velocemente possibile, possono mettere un carico significativo su un server web.
    • Ecco Pyison. Come altri tarpit per crawler AI (Nepenthes, Iocane), Pyison fornisce ai web crawler una lista infinita di collegamenti ad altre pagine del suo sito. Questo intrappola i crawler in un unico sito, dove navigheranno all'infinito in un mare di link in continua crescita.
      • Mantenere i crawler AI bloccati in un posto impedisce loro di indicizzare altre parti del sito che il proprietario potrebbe non voler fornire agli LLM.
      • Allo stesso tempo, queste pagine possono contenere tonnellate di testo inutile. Quando gli LLM incorporano questo testo nei loro modelli, possono essere gradualmente "avvelenati" poiché l'input casuale renderà le loro risposte meno coerenti.

Motivazioni

  • Creare software utile per affrontare l'aumento del furto di contenuti da parte degli LLM
  • Risolvere problemi nei tarpit AI esistenti:
    • Generare testo casuale senza l'uso di una catena di Markov, LLM o campioni di scrittura esistenti
    • Non discriminare i bot AI tramite l'header User-Agent, poiché i crawler spesso si travestono da utenti normali
    • Progettare un sito dall'aspetto realistico simile a un blog per evitare il rilevamento
      • Creare un framework estremamente personalizzabile per permettere ulteriori configurazioni
    • Fornire una soluzione che possa integrarsi facilmente in un sito web esistente
      • Supporta ma non richiede proxy inversi/server web specifici, fornisce configurazione di sotto-percorso con un'impostazione di document root
    • Eseguire con un'impronta ridotta piuttosto che un intero CMS o server web ricco di funzionalità

Specifiche Tecniche

  • Questo progetto esegue un server web dinamico utilizzando la libreria HTTPServer di Python
  • Le frasi sono prodotte da un mix 50/50 tra parole inglesi casuali e "stop words"
  • Pyison utilizza un salt globale e un URL di pagina per inizializzare il suo RNG. Questo garantisce che se i crawler eseguono un "controllo di sanità" ricaricando una pagina, sarà la stessa dell'ultima volta che l'hanno controllata. Allo stesso tempo, server diversi dovrebbero usare semi globali diversi in modo che non tutti i siti che usano Pyison appaiano uguali.
  • È possibile generare un numero illimitato di pagine, poiché Pyison non sta effettivamente creando alcun file permanente. È un server web dinamico, quindi genera semplicemente HTML e lo invia al client.
  • L'uso di tag di contenuto HTML, formattazione CSS e immagini dovrebbe far sembrare il sito un po' più realistico a un crawler.
  • È possibile configurare l'output di Pyison senza riscrivere il programma, modificando i file di configurazione, statici e template
  • Pyison risponde alle richieste POST e PUT errate con un 404 nel caso in cui i crawler testino che quei verbi HTTP siano configurati

Per Iniziare

  • Clona questo progetto in una cartella locale

  • Modifica le impostazioni nel file config/config.json

    • Imposta il random-seed su un numero casuale!
    • Imposta il numero di port per il server
    • Vedi la sezione Configurazione per maggiori informazioni
  • (Opzionale ma consigliato) Aggiorna il template HTML, CSS, immagini e robots.txt a tuo piacimento

    • Questo progetto è più efficace se le pagine appaiono diverse, cosa che può essere fatta variando la struttura HTML e CSS. Riorganizza e rinomina alcune cose, o riscrivilo completamente.
  • (Opzionale) Modifica il robots.txt se vuoi cambiare quali bot sono interessati

  • Configura l'ambiente del server con uno dei metodi seguenti

  • Metti il server dietro un Proxy Inverso

    Esecuzione Locale

    • Installa nltk
      • pip install nltk
    • Esegui Pyison
      • python3 src/server.py
    • Verifica che sia in esecuzione
      • Apri http://localhost:<numero porta> in un browser

    Docker

    Con docker compose

    • Crea un file docker-compose.yml minimo contenente
      services:
        pyison:
          image: "ghcr.io/jonaslong/pyison:main"
          container_name: pyison
          tty: true
          ports:
            - 80:80
      
    • docker compose up
      • (Opzionale) Usa il flag -d per staccarsi dal container
    • Affinché le modifiche ai file locali abbiano effetto, clona questo repository e usa un bind mount. Vedi il file compose completo.

    Con docker run

    • docker run --tty --name pyison -p "127.0.0.1:80:80" --rm ghcr.io/jonaslong/pyison:main
      • (Opzionale) Rimuovi il flag --rm per mantenere il container

    Compilazione dal sorgente

    • Clona il repository localmente
    • docker build -t pyison:latest .
    • Esegui il container con docker run --tty --name pyison -p "127.0.0.1:80:80" --rm pyison:latest

Proxy Inverso

È altamente consigliato utilizzare un proxy inverso per servire questo contenuto. Può ridurre il carico del server memorizzando nella cache le pagine e introducendo limiti di frequenza, oltre a servire il contenuto su https e proteggere da alcuni exploit di base del server web.

Considerazioni

  • Questi esempi usano Nginx Proxy Manager, ma qualsiasi software proxy inverso dovrebbe funzionare
  • Pyison supporta le impostazioni SSL più rigorose di NPM
  • NPM dovrebbe passare l'header HTTP User-Agent da NPM al server Pyison senza alcuna configurazione speciale. Usa proxy_pass_header User-Agent; se necessario.

Configurazione Sottodominio Indipendente

  • Seleziona le seguenti impostazioni nell'interfaccia utente, o inserisci le impostazioni equivalenti nel file di configurazione:

    L'interfaccia di NGINX Reverse Proxy. Il dialogo 'Modifica Proxy Host' è aperto.
    • Nomi di dominio: un dominio o sottodominio che controlli, come tarpit.example.com
    • Schema: http
    • Hostname/IP di inoltro: localhost, o il nome del container docker se si usa una rete docker
    • Porta di inoltro: qualunque porta definita in docker-compose/run command/config.json (default è 80)
    • Abilita Cache Assets e Block Common Exploits, ma non Websockets Support

Configurazione Sotto-percorso

  • Per usare Pyison in un sotto-percorso, usa la seguente configurazione di location

    # Handles the root page ("example.com/tarpit")
    location /tarpit {
        proxy_pass http://localhost:80;
    }
    
    # Handles all sub-pages ("example.com/tarpit/a" and "example.com/tarpit/a/b")
    location /tarpit/ {
        proxy_pass http://localhost:80;
    }
    
Scarica lo strumento