SMFPT - Suporte e Manutenção de Fórum em Português
SMFPT Comunidade geral => Tutorial SMFPT => Tópico começado por: candidosa2 em 16 de Julho de 2026, 05:20
Título: Como bloquear 100% dos bots russos e chineses no registo do SMF
Mensagem de: candidosa2 em 16 de Julho de 2026, 05:20
Introdução – O desafio dos bots avançados
Nos últimos anos, os foruns SMF têm sido alvo de redes de bots provenientes da Rússia e da China que utilizam técnicas de *machine learning* para contornar CAPTCHAs tradicionais. Estes bots criam milhares de contas falsas, enviam spam, e comprometem a reputação da comunidade. Neste artigo vamos explorar, passo a passo, como configurar o registo do SMF para bloquear **100 %** desses robôs, usando perguntas e respostas personalizadas, filtros de GeoIP, análise de *User‑Agent*, *rate‑limiting* e integração avançada com hooks do SMF.
---
Por que o CAPTCHA comum já não trava os robôs avançados?
CAPTCHA visual (texto distorcido, imagens) e até mesmo o reCAPTCHA v2 podem ser resolvidos por serviços de *captcha‑solving* baseados em IA. Além disso:
* **Treinamento de redes neurais** permite reconhecer padrões de distorção quase como humanos. * **Bots headless** utilizam navegadores sem cabeça (Puppeteer, Playwright) que executam o JavaScript do reCAPTCHA e enviam a resposta ao servidor. * **Serviços de terceiros** (2Captcha, Anti‑Captcha) fornecem respostas em segundos por um custo baixo.
Portanto, confiar apenas num CAPTCHA está obsoleto para proteger o registo contra bots sofisticados.
---
Estratégia 1 – Perguntas e respostas personalizadas (Q&A)
O SMF já inclui a funcionalidade de "Pergunta de segurança" no registo. Para torná‑la eficaz contra bots russos e chineses:
1. **Crie perguntas que exigem conhecimento cultural local** (ex.: "Qual é a capital da França?"). Bots estrangeiros costumam falhar em perguntas que envolvem idioma ou conhecimento regional. 2. **Use variações dinâmicas** – armazene um conjunto de 30 + perguntas e responda aleatoriamente. 3. **Desative respostas "case‑insensitive"** e permita apenas respostas exatas.
$modSettings['qa_verification'] = 1; // Ativa Q&A $modSettings['qa_questions'] = serialize(array( 'Qual é a capital da França?' => 'Paris', 'Qual é o nome do primeiro presidente dos EUA?' => 'George Washington', // ... adicione 30+ perguntas aqui ... ));
**Dica SEO:** Inclua palavras‑chave como "registo seguro SMF", "bloquear bots" nos textos das perguntas – isso ajuda a indexar o seu tópico como referência de segurança.
---
Estratégia 2 – Bloqueio por GeoIP (russos e chineses)
A maioria dos bots indesejados provém de IPs alocados na Rússia (RU) e China (CN). Use um serviço de GeoIP (por exemplo, *MaxMind GeoLite2*) para rejeitar esses países no registo.
1. **Instale a extensão PHP GeoIP2** no servidor. 2. **Adicione um hook** no ficheiro *Sources/Subs.php* para validar o país antes de criar a conta.
// Exemplo de hook em Subs.php function block_bot_countries() { global $user_info, $txt; $ip = $user_info['ip']; $reader = new \GeoIp2\Database\Reader('/path/to/GeoLite2-Country.mmdb'); $country = $reader->country($ip)->country->isoCode;
$blocked = array('RU', 'CN'); if (in_array($country, $blocked)) { fatal_error('Registo indisponível para o seu país.'); } } add_integration_function('integrate_register', 'block_bot_countries');
**Importante:** Mantenha a base GeoIP atualizada semanalmente para evitar falsos positivos.
---
Estratégia 3 – Filtragem de User‑Agent e Referer
Bots headless costumam enviar *User‑Agents* genéricos ou ausentes. Crie uma lista negra e rejeite registos suspeitos.
foreach ($blocked_agents as $bad) if (strpos($ua, $bad) !== false) fatal_error('User‑Agent não permitido.'); } add_integration_function('integrate_register', 'block_suspicious_agents');
Além disso, verifique o cabeçalho **Referer** – se o registo não vem de uma página do seu fórum, bloqueie.
function check_honeypot() { if (!empty($_POST['website'])) fatal_error('Detecção de bot.'); } add_integration_function('integrate_register', 'check_honeypot');
O reCAPTCHA v3 não apresenta desafio ao utilizador; devolve um *score* (0‑1). Defina um limiar baixo (ex.: 0.3) e combine com as outras medidas.
1. Registe‑se no Google reCAPTCHA e obtenha **site‑key** e **secret‑key**. 2. Insira o script no template de registo. 3. Verifique o score no servidor.
if (!$data['success'] || $data['score'] < 0.3) fatal_error('Falha na verificação de segurança (reCAPTCHA).'); } add_integration_function('integrate_register', 'verify_recaptcha_v3');
Combine o score com a verificação de Q&A para elevar ainda mais a barreira.
---
Estratégia 6 – Modificando o fluxo de registo via hooks do SMF
O SMF oferece *integration hooks* que permitem inserir código personalizado sem tocar nos arquivos core. Use os hooks:
* `integrate_register` – executado antes de criar a conta. * `integrate_register_after` – após a criação (para enviar e‑mail de verificação).
Exemplo completo de um *plugin* que reúne todas as verificações acima:
Estratégia 7 – Testes, monitorização e manutenção contínua
1. **Logs detalhados** – registre cada falha de registo em *log_security* para analisar padrões. 2. **Ferramentas de monitorização** – use o *SMF Admin Dashboard* ou integrações com *Fail2Ban* para bloquear IPs que excedam limites. 3. **Atualizações regulares** – mantenha o SMF, o GeoIP e as bibliotecas PHP sempre na última versão. 4. **Teste A/B** – compare registos com e sem as novas camadas para garantir que não está a bloquear utilizadores legítimos.
Conclusão – Segurança em camadas é a única solução viável
Bloquear 100 % dos bots russos e chineses requer:
* **Perguntas e respostas personalizadas** que dependam de conhecimento cultural. * **Filtragem GeoIP** para negar registos desses países. * **Validação de User‑Agent, Referer, Hone
Citação🛑 Cansado de apagar bots e utilizadores falsos manualmente? Proteja a sua comunidade de forma definitiva. Se precisa de um tema premium, moderno, que afaste bots invasores e funcione perfeitamente em telemóveis, conheça o portfólio de design da Aplic.com (https://www.aplic.com).n