Até 2025, o cenário digital mudou: CAPTCHA não é mais o guardião confiável que costumava ser. Enquanto bots impulsionados por IA resolvem quebra-cabeças CAPTCHA com precisão quase perfeita, usuários genuínos ficam frustrados e muitas vezes abandonam os sites quando desafiados. Estudos recentes mostram que bots agora passam facilmente por CAPTCHAs baseados em imagem e texto 96–100% das vezes—superando em muito as taxas de sucesso humanas reais e reduzindo as conversões de formulários em até 20%. Mas o problema vai muito além de qualquer quebra-cabeça desatualizado.
Hoje, o tráfego automatizado domina a web. Eu percebo isso pessoalmente. Em 2024, estimava-se que quase metade de toda a atividade online era gerada por bots, com até 37% classificados como abertamente maliciosos. Mesmo sites com mitigação ativa ainda relatam 10–20% de atividade contínua de bots. A realidade é dura: soluções tradicionais como CAPTCHA e listas negras de IPs tornaram-se quase impotentes diante de botnets coordenados e em rápida evolução que podem imitar usuários reais, alternar entre IPs novos e até explorar dispositivos móveis para ataques em grande escala.
Para proprietários de sites e negócios online, o impacto é devastador. Inundações de bots podem paralisar recursos de servidor, diminuir a velocidade de carregamento das páginas a um ponto insuportável e arruinar a experiência do usuário. Mas os efeitos vão além—os rankings do Google caem à medida que o desempenho das páginas despenca, a receita de anúncios evapora conforme a qualidade do tráfego declina, e as relações com parceiros de publicidade azedam quando visitas falsas inundam suas análises.
Eu experimentei essa crise em primeira mão. Tudo começou com uma acusação de uma agência de publicidade: eles afirmaram que 90% do tráfego do meu site era falso. O código de rastreamento deles, incorporado para entrega de anúncios, revelou volumes de bots que estavam sobrecarregando não apenas seus filtros, mas também meu servidor. Estamos falando de mais de um milhão de visitas de bots por dia—tráfego invisível para o Google Analytics, mas catastrófico nos bastidores. O que inicialmente acreditei serem usuários genuínos eram, na verdade, parte de uma onda incessante de acessos automatizados, inundando minha infraestrutura e ameaçando a viabilidade de todo o meu projeto.
Esta não é apenas uma história sobre maus atores explorando fraquezas—é sobre como a própria arquitetura da web moderna está sob cerco. Otimizações de código e atualizações de servidor não foram suficientes. O desafio tornou-se uma corrida armamentista, com meu site pego no fogo cruzado. Veja como a inundação de bots se desenrolou, quase destruindo tudo o que eu havia construído—e as etapas que tomei para lutar de volta.
Minha história de tráfego de bots: de 3 milhões de acessos a meio milhão
Tudo começou com uma agência de publicidade me acusando de ter 90% de tráfego falso, já disse isso antes, mas: eles haviam colocado um código de rastreamento no meu site para entregar anúncios, e o volume de bots era um problema para eles também—sobrecarregava seus filtros e inflava a carga do servidor. Estamos falando de mais de um milhão de visitas de bots por dia.
A princípio, fiquei indignado. No Google Analytics, eu via 100.000 visitas diárias puras. Usuários reais, eu pensava. Mas a preocupação deles era com o tráfego fora do Analytics. Essa camada invisível de acessos estava causando estragos na carga do servidor. Naquela época, meu projeto estava rodando no Laravel 5.3 hospedado em hospedagem compartilhada, e eu acreditava que o gargalo de desempenho era o código antigo. Reescrevi tudo no Laravel 10 com otimização excelente, incluindo análise diária de milhões de registros de banco de dados.
Ainda assim, estava lento. Minha hospedagem compartilhada não conseguia lidar com isso. O carregamento de páginas arrastava-se, e o tráfego real caía—mês a mês, eu estava perdendo cerca de 150.000 visitas. De 3 milhões de visitas mensais, acabei perdendo mais da metade.
Eu havia atualizado para um poderoso VPS com 16 núcleos de CPU e 32GB de RAM, esperando que isso resolvesse tudo. Mas mesmo com a infraestrutura melhorada e o backend recodificado no Laravel 10, o problema persistia. Na verdade, as coisas pioraram—os bots se tornaram mais agressivos, aumentando seu volume e frequência de ataques. Ficou claro que nenhuma quantidade de otimização de código ou escalonamento de hardware poderia resolver um problema que era fundamentalmente sobre tráfego de bots descontrolado e malicioso.
Mas isso não era tudo. Ao aprofundar, percebi que a escala era ainda maior: mais de 2 milhões de rastreamentos de sites por dia, separados de cerca de 1,5 milhão de visitas diárias de bots. E ainda assim, a parte do site que era monetizável e rastreável (aquela que as agências se importavam) estava trazendo apenas 100.000 impressões por dia. Foi aí que o problema escalou. Eu estava trabalhando com uma agência de publicidade que dependia de tráfego humano limpo. Eles precisavam encontrar maneiras de filtrar os bots rapidamente, ou seus sistemas de análise e de veiculação de anúncios seriam sobrecarregados. As acusações, a sobrecarga de infraestrutura e as discrepâncias de receita—tudo estava ligado a essa inundação invisível e implacável de bots.
Meu primeiro movimento foi criar um CAPTCHA personalizado, visando mostrar uma página em branco para os bots enquanto os usuários reais passavam. Infelizmente, isso saiu pela culatra. Os bots maliciosos não diminuíram—eles aumentaram. O CAPTCHA tornou-se um desafio que eles tentaram superar agressivamente, dobrando a carga.
Em seguida, veio o bloqueio em massa via .htaccess. Funcionou—por alguns dias. Então, as redes de bots se ajustaram, novos IPs apareceram, e o .htaccess ficou inchado e lento. Meu provedor de hospedagem interveio, ajudando a bloquear sub-redes inteiras temporariamente, mas o problema retornava semanalmente.
Finalmente, recorri ao Cloudflare. Esta foi a mudança mais impactante. Embora não seja perfeito, permitiu-me filtrar mais de 1,5 milhão de solicitações de bots em 24 horas. Carreguei blocos de rede diretamente em seu firewall. O resultado? De 1,5 milhão de acessos de bots, apenas 20 desafios de CAPTCHA foram acionados diariamente—prova de que a detecção de borda do Cloudflare funcionou melhor do que qualquer outra coisa que tentei.
Para ficar à frente dos bots, construí meu próprio sistema de registro interno. Ele registra cada solicitação por endereço IP e string de User-Agent, armazenando-os em um banco de dados. Nos bastidores, uma tarefa agendada é executada a cada minuto para agregar os dados. Quando detecta atividade suspeita—como um grande volume de solicitações vindo de uma única rede ou faixa de IP—ele aciona uma notificação por e-mail automatizada. Esse e-mail inclui uma lista de IPs e sub-redes prontas para serem adicionadas ao Cloudflare para bloqueio.
Ainda estou no plano gratuito do Cloudflare, mas mesmo isso oferece controle suficiente para implementar regras de firewall manuais. Essa abordagem proativa me permite detectar e responder a enxurradas de bots antes que elas sobrecarreguem o sistema. No nível do Apache, originalmente tentei usar o .htaccess para bloquear o tráfego diretamente, mas esse método teve retornos decrescentes. À medida que mais regras se acumulavam, o desempenho do site degradava, deixando claro que o bloqueio ao nível do servidor não era sustentável sem um CDN ou suporte de camada de borda.
Como criar um sistema de login + proteção CloudFlare?
Por que não limitar a taxa ou bloquear por localização geográfica? Porque eles não funcionam no meu caso. A maioria desses bots faz apenas uma solicitação por IP—mas eles fazem isso usando centenas ou até milhares de IPs dentro da mesma rede. Isso significa que limitar a taxa por IP não ajuda muito; o volume é distribuído, não concentrado. Quanto a detectá-los pelo User-Agent? Inútil. Alguns bots são inteligentes o suficiente para imitar o Googlebot ou outros rastreadores legítimos, então você não pode confiar apenas nos cabeçalhos. E quanto ao filtro de localização geográfica? Também não é eficaz. Meu site é multilíngue e recebe tráfego de muitos países por design. Essas redes de flood sabem disso e rotacionam IPs de todo o mundo. Talvez estejam me raspando porque meu site tem conteúdo valioso—mas eu não posso simplesmente trancá-lo atrás de uma parede de registro. Isso arruinaria a experiência do usuário. Então eu precisava de algo mais inteligente do que as soluções usuais.
Veja meu código, consultas MYSQL e recomendações abaixo. (Laravel 10 + MYSQL)