Pyison
Pyison é um tarpit para rastreadores web de IA
Introdução
- Como todos os rastreadores web, os bots de IA solicitam páginas de servidores web e depois seguem links na página para outras páginas. Ao fazer isso, eles podem construir um índice de um site inteiro.
- Ao contrário de outros rastreadores web, porém, os bots de IA apresentam alguns problemas exclusivos
- Os administradores de servidores podem configurar um arquivo robots.txt, que informa aos rastreadores web quais páginas eles devem ou não rastrear.
- Descobriu-se que alguns rastreadores de IA ignoram esse arquivo. Há preocupações de privacidade e direitos autorais em permitir que esses bots usem os dados de um site para treinar LLMs, especialmente quando o usuário optou explicitamente por não ser rastreado.
- Alguns rastreadores também ignoram a limitação de taxa. Quando eles solicitam páginas o mais rápido possível, podem colocar uma carga significativa em um servidor web.
- É aí que entra o Pyison. Como outros tarpits para rastreadores de IA (Nepenthes, Iocane), o Pyison alimenta os rastreadores web com uma lista interminável de links para outras páginas do seu site. Isso prende os rastreadores em um único site, onde eles navegarão sem fim por um mar de links em constante crescimento.
- Manter os rastreadores de IA presos em um só lugar evita que eles indexem outras partes do site que o proprietário pode não querer fornecer aos LLMs.
- Ao mesmo tempo, essas páginas podem conter toneladas de texto inútil. Quando os LLMs incorporam esse texto em seus modelos, eles podem ser gradualmente "envenenados", pois a entrada aleatória tornará suas respostas menos coerentes.
Motivações
- Criar software útil para lidar com o aumento do roubo de conteúdo por LLMs
- Resolver problemas em tarpits de IA existentes:
- Gerar texto aleatório sem uso de uma Cadeia de Markov, LLMs ou quaisquer amostras de escrita existentes
- Não discriminar bots de IA pelo cabeçalho User-Agent, já que rastreadores frequentemente se disfarçam como usuários normais
- Projetar um site realista estilo blog para evitar detecção
- Criar uma estrutura extremamente personalizável para permitir configuração adicional
- Fornecer uma solução que possa ser facilmente integrada a um site existente
- Suporta, mas não exige, proxies reversos/servidores web específicos; fornece configuração de sub-caminho com uma configuração de raiz do documento
- Executar com uma pegada pequena em vez de um CMS inteiro ou servidor web cheio de recursos
Especificações Técnicas
- Este projeto executa um servidor web dinâmico usando a biblioteca HTTPServer do Python
- As frases são produzidas a partir de uma mistura 50/50 entre palavras inglesas aleatórias e "stop words"
- O Pyison usa um salt global e também uma URL de página para semear seu RNG. Isso garante que, se os rastreadores fizerem uma "verificação de sanidade" recarregando uma página, ela será a mesma da última vez que verificaram. Ao mesmo tempo, servidores diferentes devem usar sementes globais diferentes para que nem todos os sites que usam o Pyison pareçam iguais.
- É possível gerar um número ilimitado de páginas, já que o Pyison não está realmente criando arquivos permanentes. É um servidor web dinâmico, então ele apenas gera HTML e o envia ao cliente.
- O uso de tags de conteúdo HTML, formatação CSS e imagens deve fazer o site parecer um pouco mais realista para um rastreador.
- É possível configurar a saída do Pyison sem reescrever o programa, alterando os arquivos de config, estáticos e de template
- O Pyison responde a solicitações POST e PUT indevidas com um 404, caso os rastreadores testem se esses verbos HTTP estão configurados
Começando
-
Clone este projeto para uma pasta local
-
Altere as configurações no arquivo config/config.json
- Defina o
random-seed para um número aleatório!
- Defina o número da
port para o servidor usar
- Veja a seção Configuração para mais informações
-
(Opcional, mas recomendado) Atualize o template HTML, CSS, imagens e robots.txt ao seu gosto
- Este projeto é mais eficaz se as páginas parecerem diferentes, o que pode ser feito variando a estrutura HTML e CSS. Reorganize e renomeie algumas coisas, ou reescreva completamente.
-
(Opcional) Edite o robots.txt se quiser mudar quais bots são afetados
-
Configure o ambiente do servidor com qualquer um dos métodos abaixo
-
Coloque o servidor atrás de um Proxy Reverso
Executando localmente
- Instale o nltk
- Execute o Pyison
- Verifique se está funcionando
- Abra
http://localhost:<seu número de porta> em um navegador
Docker
docker run --tty --name pyison -p "127.0.0.1:80:80" --rm ghcr.io/jonaslong/pyison:main
- (Opcional) Remova o sinalizador
--rm para que o contêiner persista
Construindo a partir do código-fonte
- Clone o repositório localmente
docker build -t pyison:latest .
- Execute o contêiner com
docker run --tty --name pyison -p "127.0.0.1:80:80" --rm pyison:latest
Proxy Reverso
É altamente recomendado que você use um proxy reverso para servir este conteúdo. Ele pode reduzir a carga do servidor armazenando páginas em cache e introduzindo limites de taxa, além de servir o conteúdo via https e proteger contra alguns exploits básicos de servidores web.
Considerações
- Estes exemplos usam o Nginx Proxy Manager, mas qualquer software de proxy reverso deve funcionar
- O Pyison suporta as configurações SSL mais rígidas do NPM
- O NPM deve passar o cabeçalho http
User-Agent do NPM para o servidor Pyison sem qualquer configuração especial. Use proxy_pass_header User-Agent; se necessário.
Configuração de Subdomínio Independente
Configuração de Sub-caminho
-
Para usar o Pyison em um sub-caminho, use a seguinte configuração de 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;
}