Visitantes Sombrios

:information_source: Resumo Integra o serviço Known Agents com o Discourse para monitorar rastreadores e scrapers indesejados que visitam seu fórum.
:hammer_and_wrench: Link do Repositório \u003chttps://github.com/magicball-network/discourse-darkvisitors\u003e
:open_book: Guia de Instalação Como instalar plugins no Discourse

:information_source: A partir de 3 de fevereiro de 2026, o serviço Dark Visitors foi renomeado para Known Agents. O plugin do Discourse não foi renomeado.

Funcionalidades

Known Agents é um serviço que monitora agentes (crawlers, scrapers e outros tipos de bots) que visitam seus sites. O foco principal deles é na análise de agentes de IA.

Ele oferece dois serviços:

  • Geração e monitoramento de robots.txt
  • Análise de agentes; tanto do lado do servidor quanto do lado do cliente

O serviço robots.txt é gratuito. Os serviços de análise oferecem um nível gratuito. Sugiro que você visite o site deles para mais informações.

Este plugin do Discourse se conecta a todos esses serviços, todos opcionais e configuráveis em certa medida.

Geração de robots.txt

O Discourse já oferece uma opção para configurar o robots.txt. Este plugin o estende. Quando ativado, o plugin recupera uma lista de agentes em diferentes categorias (atualmente apenas categorias de IA são suportadas) e aqueles que estão faltando entre os agentes já configurados, ele os adicionará. A lista será atualizada diariamente. Desta forma, quando um novo scrapper de IA for reconhecido, ele será adicionado ao seu robots.txt.

Este recurso só funciona se o Discourse gerenciar o robots.txt e você não o substituiu manualmente. O plugin não altera a configuração Blocked crawler user agents (Agentes de usuário de crawler bloqueados), ele aumenta os novos agentes ausentes no robots.txt. Assim, você ainda tem controle total sobre o gerenciamento desta lista.

Ao visitar o robots.txt do seu site, você verá um comentário inicial da última atualização e o número de agentes retornados pelo Known Agents. Os agentes que ainda não estão configurados são adicionados ao final da lista. Eles devem estar entre o Googlebot e a diretiva sitemap (se configurada).

Análise de agentes

A análise do lado do servidor e do lado do cliente podem ser habilitadas individualmente. Pode ser habilitada para todos os visitantes ou apenas para visitantes não autenticados.

A análise do lado do servidor relata visitas rastreadas para o Known Agents. Ela enviará o caminho da requisição, o endereço de origem do visitante, o cabeçalho User-Agent e alguns mais cabeçalhos do navegador.

Existem algumas configurações adicionais sobre quais requisições são relatadas, veja as configurações abaixo. Por padrão, apenas as requisições que o Discourse marca para rastrear como visualizações serão rastreadas. As seguintes requisições ao Discourse nunca serão relatadas:

  • Requisição para a seção de Administração
  • Requisições de background e API

A análise do lado do cliente é tratada adicionando Javascript à sua página que chama o Known Agents sob certas condições:

  • O navegador parece ser automatizado, ou um navegador de IA
  • O usuário veio de um serviço de chat de IA

Todas as requisições rastreadas contam para os eventos que afetam seu plano de pagamento.

Configuração

Você precisa se registrar no Known Agents para usar este plugin. O nível gratuito oferece 100.000 eventos por mês. Quando esse limite for atingido, você não verá mais eventos em sua análise, mas ainda poderá enviar novas informações e continuar usando o serviço robots.txt.

Após se registrar, você deve criar um projeto (ou seja, um site para rastrear). Isso fornecerá um token de acesso que é necessário para a funcionalidade de robots.txt e análise do lado do servidor.

Quando você habilita a funcionalidade robots.txt, leva um tempo até que seja atualizada. Visite https://seusite/robots.txt para ver se está funcionando. Deve haver um comentário no topo

# Augmented by Dark Visitors on 2025-05-07T12:46:00+00:00 with 28 agents

Quando você habilita a análise do lado do servidor, pode testar se está funcionando solicitando uma visita de teste nas configurações do projeto do Known Agents. Pode levar alguns segundos. Você deverá ver o resultado na página Realtime no Known Agents.

Configurações

Nome Descrição
darkvisitors enabled Sinalizador global para habilitar todo o plugin
darkvisitors access token O token de acesso secreto necessário para o robots.txt e a análise do lado do servidor para se comunicar com o Known Agents. Você encontrará isso no projeto do Known Agents em settings (configurações).
darkvisitors robots txt enabled Quando ativado, o robots.txt do Discourse será aumentado com agentes adicionais
darkvisitors robots txt agents O tipo de agentes a serem adicionados ao robots.txt.
darkvisitors robots txt path O caminho para negar acesso aos agentes. Provavelmente é melhor deixar como / para que o acesso a todo o site seja rejeitado.
darkvisitors server analytics Habilita a análise do lado do servidor. Recomendo habilitá-la apenas para usuários anônimos.
darkvisitors server analytics include Requisições adicionais para rastrear. Você também pode rastrear requisições para arquivos enviados, ou até mesmo requisições de 404 Not Found.
darkvisitors server analytics ignore Substrings nos user agents a serem ignorados (sensível a maiúsculas e minúsculas). Se você usa monitoramento de uptime, sugiro fortemente incluir o user agent de identificação deles nesta lista.
darkvisitors client analytics Habilita a análise do lado do cliente. Isso também fornecerá insights de usuários normais visitando seu fórum enquanto vêm de um serviço de chat de IA.
darkvisitors client analytics project key Para a análise do lado do cliente, você deve configurar a chave de projeto (pública). Você pode encontrá-la nas configurações do projeto do Known Agents na seção JavaScript Tag, é o código após project_key=
5 curtidas

Obrigado por isso, elmuerte! Configurei e está funcionando muito bem.

Vejo que nas configurações do plugin, os tipos de agente que podem ser selecionados para exclusão via robots.txt são:

  • AI Data Scraper [selecionado por padrão]
  • Undocumented AI Agent [selecionado por padrão]
  • AI Agent
  • AI Assistant
  • AI Search Crawler

Mas a lista completa dos tipos de agente Dark Visitors é:
(negrito = adicional)

Crawlers e Scrapers…

  • AI Assistant
  • AI Data Scraper
  • AI Search Crawler
  • Archiver
  • Developer Helper
  • Fetcher
  • Intelligence Gatherer
  • Scraper
  • Search Engine Crawler
  • Security Scanner
  • SEO Crawler
  • Uncategorized Agent
  • Undocumented AI Agent

AI Agents…

  • AI Agent
  • Headless Agent

Nem todos esses tipos de agente são algo que se queira bloquear, mas eu gostaria de incluir alguns como Scraper, AI Data Scraper, SEO Crawler…

Esses tipos de agente adicionais são apenas mais recentes que o seu plugin? Eles poderiam ser adicionados à lista atual de escolhas em settings.yml?

Exceto que robots.txt é apenas um pedido. Um bot o segue ou não. Firewall é a única maneira de parar aqueles.

Sim, eu entendo isso – mas como o Dark Visitors só funciona com o robots.txt, eu gostaria de fazê-lo funcionar o melhor possível.

(Na verdade, estou lendo alguns posts agora onde você sugere bloqueio real com proxy reverso Nginx, mas não tenho certeza se preciso ir tão longe ainda.)

Isso é um pouco radical. Mas o Dark Visitor deve funcionar com a lista de banidos do Discourse para ser útil em algum nível. Claro, com isso você não precisa adicionar manualmente, por exemplo, OpenAI ou outros que seguem o robots.txt.

Entrei em contato com a Dark Visitors sobre isso em 3 de maio deste ano, e a resposta deles foi “No momento não”. Mas vejo que a documentação atual lista ainda mais tipos agora.

No momento, os seguintes tipos são suportados pela API Dark Visitors:

Certifiquei-me de que a configuração no Discourse pode ser estendida com tipos de agente adicionais apenas adicionando-os.

Após adicionar o novo tipo e salvar a configuração, o robots.txt deve ser atualizado imediatamente com todos os novos agentes.

1 curtida

OMG, eu perdi totalmente o campo “Pesquisar ou criar”. Meu tema tem um contraste muito baixo lá e escapou dos meus olhos. Obrigado pelo esclarecimento!