\n\n\n\n Estou lutando contra os bots no meu fórum de retro computing. - BotSec \n

Estou lutando contra os bots no meu fórum de retro computing.

📖 12 min read2,255 wordsUpdated Apr 5, 2026

Tudo bem, pessoal, Pat Reeves aqui, falando a partir de seus feeds de botsec.net. É 23 de março de 2026 e ultimamente tenho lutado com um tipo específico de dor de cabeça relacionada a bots. Não o sofisticado e patrocinado por estados nacionais – embora desmontá-los sempre seja divertido – mas a invasão diária e ligeiramente inteligente de bots automatizados que tem como alvo um dos meus projetos secundários.

Meu projeto secundário, para contextualizar, é um pequeno fórum de nicho para entusiastas de retro computing. Nada notável, apenas um lugar para nós, “velhos”, nos queixarmos sobre CPUs modernos e discutirmos a melhor forma de emular um Amiga. O tráfego não é enorme, mas é apaixonado e, por meses, esteve blissfully livre de bots. Até um mês atrás.

De repente, bots de registro. Não apenas um fluxo, mas ondas. Centenas de contas falsas, todas com nomes de usuário ligeiramente aleatórios, endereços de email genéricos (geralmente provenientes de domínios recentemente registrados) e absolutamente nenhum histórico de postagens. Eles não estavam fazendo spam imediatamente, e isso era exatamente o estranho. Eles estavam apenas… se registrando. E preenchendo meu banco de dados de usuários, tornando difícil a gestão e, francamente, me fazendo sentir como se meu pequeno refúgio digital estivesse sendo invadido.

Então, este mês falaremos sobre Vulnerabilidades: O Levantamento Silencioso – Por Que Registros de Bots de Baixo Compromisso São uma Ameaça Maior do Que Você Pensa (e Como Detê-los).

A Irritação que Se Torna Ameaça

Você pode pensar: “Pat, são apenas registros. Sem problemas, certo? Exclua-os e siga em frente.” E por um tempo, esse era exatamente meu pensamento. Configurei um job cron para excluir contas com zero postagens após 24 horas. Problema resolvido, certo? Errado.

Os bots se adaptaram. Começaram a fazer uma única, singela, inofensiva postagem. “Oi!” ou “Feliz por estar aqui.” Nada que acionasse meus filtros de spam. Apenas o suficiente para evitar a exclusão dos zero posts. Agora eu tinha centenas de contas com uma postagem inútil, que continuava a congestionando meu banco de dados, exigindo ainda uma revisão manual.

Isso não é apenas um incômodo. É um ataque sutil e insidioso. É por isso que:

  • Consumo de Recursos: Cada registro, cada entrada do banco de dados, cada pequena postagem consome recursos do servidor. Para um site pequeno como o meu, isso não é desprezível. Se o volume aumentar, pode levar a uma degradação de desempenho ou até mesmo uma negação de serviço para os usuários legítimos.
  • Poluição de Dados: Minhas tabelas de usuários estavam um desastre. Encontrar usuários reais, analisar a atividade ou até mesmo fazer backup do banco de dados tornou-se mais complicado.
  • Risco à Reputação: Se essas contas de repente começassem a fazer spam ou phishing, a reputação do meu fórum poderia ser afetada. Os motores de busca não olham com bons olhos para sites associados a atividades maliciosas.
  • Precursor para Ataques Maiores: Muitas vezes, bots de registro de baixo compromisso são um passo de reconhecimento. Eles testam as águas, identificam fraquezas e constroem uma base para ataques mais sofisticados posteriores, como stuffing de credenciais ou até mesmo spear-phishing direcionado a usuários genuínos.
  • Risco de Credential Stuffing & Account Takeover (ATO): Este é o ponto crucial. Se um bot registra uma conta, e um usuário legítimo tenta se registrar com o mesmo nome de usuário/email (ou um comum), o operador do bot agora tem um possível alvo para o credential stuffing se adquiriu credenciais de uma violação diferente. Ele pode testar essas credenciais no meu site.

Então, o que começou como um problema “meh, eu consertarei depois” rapidamente escalou para uma situação “tem que parar agora”.

Minhas Primeiras Tentativas (Frustradas): A Armadilha CAPTCHA

Minha reação inicial, como muitos, foi lançar um CAPTCHA. Especificamente, reCAPTCHA v2. Todos conhecem reCAPTCHA, certo? A caixa “Não sou um robô”, talvez alguns sinais de trânsito borrados.

Implementei. Por cerca de três dias, os registros diminuíram a quase zero. Eu me dei uma palmadinha nas costas. “Aha! Resolvido!”

Então, eles voltaram. Não tantas contas, mas o suficiente. Como? Bem, para reCAPTCHA v2, existem serviços por aí que pagam humanos alguns centavos para resolver os CAPTCHAs. Ou, cada vez mais, os modelos de IA estão se tornando bons o suficiente para resolvê-los, especialmente aqueles mais simples. É um jogo de gato e rato, e em um site de baixo tráfego, não valia a pena o ônus do reCAPTCHA v3 (que pode ser um pesadelo regular sem que usuários legítimos sejam sinalizados).

“`html

Além disso, usuários legítimos ODEIAM os CAPTCHA. Recebi algumas reclamações. Meu público de retro computing, abençoados seus corações, nem sempre é o mais paciente com as chatices da web moderna. Eu precisava de algo menos invasivo, mais eficaz contra bots e menos chato para os seres humanos.

Além da Caixa de Seleção: Defesas Práticas

Após abandonar o CAPTCHA visível, comecei a pensar no que torna um humano um humano, e um bot um bot, além de simplesmente clicar em uma caixa. Aqui está o que realmente funcionou para mim:

1. O Campo Honeypot

Isso é um clássico por um motivo. É simples, eficaz e completamente invisível para os usuários humanos. A ideia é adicionar um campo extra, oculto, ao formulário de registro. Os bots, sendo menos sofisticados que os humanos, frequentemente tentarão preencher todos os campos que encontrarem. Os humanos não o verão, então não o preencherão.

Aqui está um exemplo simplificado do que adicionei ao meu formulário HTML de registro:


<form action="/register" method="POST">
 <label for="username">Nome de usuário:</label>
 <input type="text" id="username" name="username" required>
 
 <label for="email">Email:</label>
 <input type="email" id="email" name="email" required>
 
 <!-- Campo honeypot -->
 <div style="display:none;">
 <label for="fax_number">Número de Fax (deixe vazio):</label>
 <input type="text" id="fax_number" name="fax_number" tabindex="-1" autocomplete="off">
 </div>
 
 <label for="password">Senha:</label>
 <input type="password" id="password" name="password" required>
 
 <button type="submit">Registrar</button>
</form>

E no lado do servidor (usando um exemplo Python/Flask, mas a lógica se aplica universalmente):


@app.route('/register', methods=['POST'])
def register():
 # Verifica o campo honeypot
 if request.form.get('fax_number'):
 # Bot detectado! Registre-o, talvez bloqueie o IP, e retorne um erro
 print(f"Honeypot ativado pelo IP: {request.remote_addr}")
 return "Registro falhou. Por favor, tente novamente.", 400 # Ou uma mensagem de sucesso genérica para confundir os bots
 
 username = request.form.get('username')
 email = request.form.get('email')
 password = request.form.get('password')
 
 # ... o resto da lógica de registro ...
 
 return "Registro realizado com sucesso!"

O display:none; o torna invisível. tabindex="-1" impede a navegação por teclado. autocomplete="off" ajuda a evitar que os navegadores o completem automaticamente. Escolhi “fax_number” porque é um campo antigão que não tem motivo para estar em um formulário de registro moderno, tornando-o uma boa “isca”.

2. Análise Baseada no Tempo (Check de Timestamp)

Os bots muitas vezes enviam formulários incrivelmente rápido. Os humanos levam pelo menos alguns segundos para preencher até mesmo um formulário simples. Registro o tempo em que o formulário foi carregado e o tempo em que foi enviado.

Quando o formulário de registro é servido:


<form action="/register" method="POST">
 <!-- Outros campos do formulário -->
 <input type="hidden" name="form_load_time" value="{{ current_timestamp_in_seconds }}">
 <button type="submit">Registrar</button>
</form>

No lado do servidor:


import time

@app.route('/register', methods=['POST'])
def register():
 form_load_time = int(request.form.get('form_load_time', 0))
 submission_time = int(time.time())
 
 time_taken = submission_time - form_load_time
 
 # Se o formulário foi enviado rápido demais (por exemplo, menos de 5 segundos)
 if time_taken < 5: 
 print(f"Envio muito rápido pelo IP: {request.remote_addr}, levou {time_taken}s")
 return "Registro falhou. Por favor, tente novamente.", 400
 
 # ... o resto da lógica de registro ...
 
 return "Registro realizado com sucesso!"

Eu estipulei um mínimo de 5 segundos. Isso imediatamente capturou uma boa parte dos bots restantes. Tenha cuidado para não definir esse limite muito alto, pois usuários genuínos podem digitar rápido ou ter formulários pré-preenchidos.

3. Limitação de Taxa de IP (Com uma Surpresa)

A limitação de taxa de IP padrão está boa: “Não mais que 5 registros deste IP por hora.” Mas os bots frequentemente usam proxies ou rotacionam os IPs. Assim, adicionei uma surpresa: Impressão de IP e User-Agent.

“`

Eu comecei a registrar a stringa User-Agent junto com o endereço IP. Se eu notasse uma onda repentina de registros de IPs diferentes, mas com a mesma string User-Agent, ligeiramente incomum, isso era um forte indicador de um botnet ou de um único bot que estava alternando os IPs. Isso me permitiu bloquear temporariamente ou sinalizar não apenas o IP, mas também o User-Agent se fosse claramente não parecido com um navegador ou repetido de forma suspeita.

Esse não é um trecho de código que você pode simplesmente inserir, pois requer algum registro e análise no backend. Mas, conceitualmente, trata-se de observar padrões além do simples IP de origem. Muitos firewalls para aplicações web (WAF) oferecem esse tipo de limitação avançada de frequência e detecção de anomalias.

4. Verificação de Domínio de Email (usando Dados Públicos)

Muitos registros de bots vêm de domínios de email registrados recentemente, frequentemente descartáveis. Eu implementei um controle contra uma pequena lista curada de conhecidos provedores de email descartáveis, mas de forma mais eficaz, comecei a observar a idade do próprio domínio de email.

Existem APIs (algumas pagas, outras gratuitas com limites) que podem te dizer quando um domínio foi registrado. Se um endereço de email provém de um domínio registrado nos últimos 30 dias, é um enorme sinal de alerta. Isso não é infalível: novos sites legítimos são lançados continuamente, mas combinado com outros sinais, é poderoso.

Para o meu fórum, tomei uma decisão pragmática: se o domínio tivesse menos de 60 dias e houvesse outros sinais de bot (honeypot ativado, envios muito rápidos), eu bloquearia diretamente o registro. Para domínios com menos de 30 dias, eu os destacaria para uma revisão manual e potencialmente exigiria uma confirmação por email antes da ativação.

Os Resultados: Paz (Quase) Restaurada

Implementar esses passos não foi uma solução imediata, mas foi incrivelmente eficaz. O honeypot e os controles baseados em tempo reduziram imediatamente a maioria dos registros automatizados. A análise dos padrões de IP/User-Agent me ajudou a identificar e bloquear os operadores de bots mais persistentes.

Meu banco de dados de usuários está limpo novamente. Os logs do meu servidor estão menos barulhentos. E eu posso me concentrar em moderar as discussões sobre como o chip SID do Commodore 64 era superior, em vez de eliminar centenas de contas falsas.

É importante entender que esta não é uma solução do tipo “configure e esqueça”. Os bots evoluem. Os atacantes encontram novos métodos. Eu terei que monitorar e adaptar. Mas, por enquanto, esses métodos práticos e de baixo custo me devolveram o controle do meu pequeno canto da internet.

Lições Práticas

Se você está enfrentando registros de bots de baixo esforço ou incômodos automatizados semelhantes, aqui está o que você deve fazer imediatamente:

  • Implemente um Honeypot: É incrivelmente simples, eficaz e invisível para os usuários. Faça isso.
  • Adicione um Controle Baseado em Tempo: Meça o tempo entre o carregamento do formulário e o envio. Bloqueie envios que são anormalmente rápidos.
  • Vá Além do Simples Bloqueio de IPs: Procure padrões nas strings User-Agent, nos referenciadores e em outros cabeçalhos de requisições para identificar bots sofisticados que estão alternando os IPs. Considere um WAF se o seu tráfego justificar.
  • Valide os Domínios de Email: Verifique provedores de email descartáveis conhecidos e considere a idade do domínio para novos registros.
  • Monitore e Adapte: Os bots estão sempre evoluindo. Fique de olho nos seus logs, analise atividades suspeitas e esteja pronto para adaptar suas defesas.
  • Não Incomode Usuários Reais: Priorize a experiência do usuário. Evite CAPTCHAs pesados ou regras excessivamente rígidas que possam bloquear registros legítimos. A melhor defesa contra bots é aquela que os humanos nem notam.

Fique seguro por aí e mantenha esses bots afastados!

Artigos Relacionados

🕒 Published:

✍️
Written by Jake Chen

AI technology writer and researcher.

Learn more →
Browse Topics: AI Security | compliance | guardrails | safety | security
Scroll to Top