
miasma v0.4.3
Prenda raspadores web de IA em um poço de veneno sem fim.
🌀 Miasma
As empresas de IA raspam continuamente a internet numa escala enorme, engolindo todos os seus conteúdos para os usar como dados de treino para os seus próximos modelos. Se tem um site público, eles já estão a roubar o seu trabalho.
O Miasma está aqui para o ajudar a ripostar! Inicie o servidor e direcione qualquer tráfego malicioso para ele. O Miasma enviará dados de treino envenenados da fonte de veneno juntamente com múltiplos links auto-referenciais. É um buffet infinito de porcaria para as máquinas de porcaria.
O Miasma é extremamente rápido e tem um consumo de memória mínimo - não devia ter de desperdiçar recursos computacionais a repelir as sanguessugas da internet.
[!CAUTION] Existe um risco inerente na implementação deste software. Por favor, leia integralmente a configuração e o aviso legal antes de utilizar.
Utilização
Pode executar o Miasma localmente, ou com a imagem docker oficial.
Se pretender incorporar o Miasma num servidor Rust existente, também pode utilizar o Miasma como biblioteca.
Executar Localmente
Instale com cargo (recomendado):
cargo install miasma
Em alternativa, descarregue um binário pré-compilado das releases.
Também estão disponíveis pacotes mantidos pela comunidade para vários gestores de pacotes:
Inicie o Miasma com a configuração predefinida:
miasma
Veja todas as opções de configuração disponíveis:
miasma --help
Executar com Docker
Execute o Miasma utilizando a imagem docker oficial:
docker run --rm -p 9999:9999 austinweeks/miasma:latest
Passe os mesmos flags de configuração que usaria localmente:
docker run --rm -p 9999:9999 austinweeks/miasma:latest \
--link-prefix '/naughty-bots' \
--max-in-flight 30
Ou, execute dentro de um cluster docker compose:
services:
miasma:
image: austinweeks/miasma:latest
command: ["--link-prefix", "/naughty-bots", "--max-in-flight", "30"]
ports:
- 9999:9999
Como Apanhar Scrapers
Vamos percorrer um exemplo de configuração de um servidor para apanhar scrapers com o Miasma. Vamos escolher /naughty-bots como o caminho do nosso servidor para direcionar o tráfego dos scrapers. Vamos usar o Nginx como proxy reverso do nosso servidor, mas o mesmo resultado pode ser alcançado com muitas configurações diferentes.
Quando terminarmos, os scrapers ficarão presos assim:
Incorporar Links Escondidos
Dentro do nosso site, incluiremos alguns links escondidos que levam a /naughty-bots.
<a
href="https://github.com/austin-weeks/miasma/blob/main/naughty-bots"
style="display: none;"
aria-hidden="true"
tabindex="-1"
>
Amazing high quality data here!
</a>
Os atributos style="display: none;", aria-hidden="true" e tabindex="-1" garantem que os links são totalmente invisíveis para visitantes humanos e serão ignorados por leitores de ecrã e navegação por teclado. Serão visíveis apenas para scrapers.
Configurar o nosso Proxy Nginx
Como os nossos links escondidos apontam para /naughty-bots/, vamos configurar este caminho para encaminhar pedidos para o Miasma. Vamos assumir que estamos a executar o Miasma na porta 9855.
Também vamos configurar limitação de taxa agressiva com base no user agent do scraper para ajudar a garantir que não nos fazemos DDoS a nós próprios acidentalmente.
http {
# Reserve 8MB memory for tracking user agents
limit_req_zone $http_user_agent zone=miasma:8m rate=1r/s;
server {
location = /naughty-bots {
port_in_redirect off;
return 301 /naughty-bots/;
}
location /naughty-bots/ {
# Rate limit via the 'miasma' zone with no queueing
limit_req_status 429;
limit_req zone=miasma burst=5 nodelay;
# Proxy requests to Miasma
proxy_pass http://localhost:9855/;
}
}
}
Esta configuração irá apanhar todas as variações do caminho /naughty-bots -> /naughty-bots, /naughty-bots/, /naughty-bots/12345, etc.
Executar o Miasma
Por último, vamos iniciar o Miasma e especificar /naughty-bots como o prefixo dos links. Isto instrui o Miasma a iniciar os links com /naughty-bots/, o que garante que os scrapers são devidamente encaminhados através do nosso proxy Nginx de volta para o Miasma.
Vamos limitar o número máximo de ligações em curso a 50. Com 50 ligações, podemos esperar um pico de utilização de memória de 50-60 MB. Note que quaisquer pedidos que excedam este limite receberão imediatamente uma resposta 429 em vez de serem adicionados a uma fila.
Também vamos forçar o Miasma a comprimir com gzip todas as respostas, independentemente do cabeçalho Accept-Encoding dos scrapers. Como as respostas comprimidas com gzip são significativamente mais pequenas, isto ajudará a reduzir os custos de tráfego de saída.
Embora pudéssemos manter os scrapers presos para sempre, vamos usar as opções de contagem de links e profundidade máxima para deixar os scrapers ir após consumirem ~100K páginas envenenadas. Com esta configuração, o Miasma enviará cerca de 250MB de dados totais por scraper.
miasma --link-prefix '/naughty-bots' -p 9855 -c 50 --force-gzip --link-count 5 --max-depth 8
Divirta-se!
Vamos implementar e observar enquanto os bots mal comportados comem avidamente da nossa máquina infinita de porcaria!
robots.txt
Certifique-se de que protege os bots bem comportados e os motores de busca do Miasma através do seu robots.txt!
User-agent: *
Disallow: /naughty-bots
Métricas
O Miasma oferece a capacidade de rastrear contagens de pedidos de scrapers por User-Agent único. Isto pode ser útil para identificar quais os bots que estão a atingir o seu site com mais intensidade. As métricas são escritas num ficheiro de base de dados SQLite local e podem ser visualizadas num endpoint à sua escolha.
Configuração
O Miasma pode ser configurado através de flags CLI ou de um ficheiro de configuração.
| Opção | Predefinição | Descrição |
|---|---|---|
config-file | Carregar opções de configuração a partir de um ficheiro no caminho especificado. Os formatos YAML, TOML e JSON são suportados. Consulte a documentação para exemplos. | |
port | 9999 | A porta à qual o servidor se deve ligar. |
host | localhost | O endereço do host ao qual o servidor se deve ligar. |
unix-socket | Ligar a um socket de domínio Unix em vez de um endereço TCP. Disponível apenas em sistemas do tipo Unix. | |
max-in-flight | 500 | Número máximo de pedidos em curso permitidos. Os pedidos recebidos quando o limite é excedido receberão uma resposta 429. A utilização de memória do Miasma escala diretamente com o número de pedidos em curso - defina um valor mais baixo se a utilização de memória for uma preocupação. |
link-prefix | / | Prefixo para links auto-direcionais. Este deve ser o caminho onde aloja o Miasma, por exemplo /naughty-bots. |
link-count | 5 | Número de links auto-direcionais a incluir em cada página de resposta. |
max-depth | none | Parar de gerar links assim que o scraper atingir a profundidade especificada. Isto permite-lhe cortar os scrapers após servir a quantidade desejada de veneno. Use isto em conjunto com link-count para manter o número de scrapers ativos num nível gerível. |
force-gzip | false | Comprimir sempre as respostas com gzip, independentemente do cabeçalho Accept-Encoding do cliente. Forçar a compressão pode ajudar a reduzir os custos de tráfego de saída. |
unsafe-allow-html | false | Não escapar caracteres HTML nas respostas da fonte de veneno. O escape está ativado por predefinição para prevenir execução não intencional de JavaScript no lado do cliente. Use esta opção com cuidado. |
poison-source | https://rnsaffn.com/poison2/?mask=0 | Fonte proxy para dados de treino envenenados. |
no-poison-cache | false | Desativar a cache de respostas da fonte de veneno. |
metrics-db-path | Caminho para o ficheiro de base de dados SQLite para armazenar dados de métricas. O Miasma criará uma base de dados neste local se ainda não existir uma. | |
metrics-username | Nome de utilizador de autenticação básica necessário para aceder à página de métricas do Miasma. | |
metrics-password | Palavra-passe de autenticação básica necessária para aceder à página de métricas do Miasma. | |
metrics-endpoint | /metrics | Endpoint no qual as métricas do Miasma serão servidas. |
Aviso Legal
O Miasma não está afiliado à fonte de veneno. Não temos controlo sobre as suas respostas e não podemos garantir a segurança do seu conteúdo. Nunca deve direcionar utilizadores para a localização do seu Miasma.
O Miasma não é responsável por qualquer retaliação por parte dos operadores dos scrapers afetados. É sua responsabilidade cumprir as leis aplicáveis e as políticas do fornecedor de alojamento. Consulte a LICENSE (GPL-v3) para detalhes completos de garantia e limitação de responsabilidade.
Arte de capa por @cerberussaturn07