Comment stopper le spam des formulaires de contact WordPress sans CAPTCHA ?
Par Eureka Studio · Mis à jour le
En bref
Combinez des contrôles invisibles au lieu d’un CAPTCHA : un champ piège caché (honeypot) que seuls les robots remplissent, un temps de remplissage minimum, un jeton qui résiste au cache de page, et des limites par IP et par e-mail. Mettez les messages douteux en quarantaine plutôt que de les supprimer. Une extension locale peut faire cela pour Elementor, Contact Form 7 et WPForms sans envoyer de données ailleurs. Dans Hushfort, la protection des extensions de formulaire fait partie de Pro ; l’extension gratuite couvre uniquement les commentaires et les avis.
Étapes
1Étape 1
Observez les robots s’attaquer à votre formulaire
Les robots remplissent tous les champs qu’ils trouvent, y compris un champ caché qu’une personne ne voit jamais, ou envoient sans même charger la page. Le journal de Hushfort nomme chaque cas : champ piège rempli, aucun jeton, rempli trop vite, trop de liens.
2Étape 2
Activez le Bouclier anti-spam en mode Surveillance
Dans Hushfort, ouvrez le Bouclier anti-spam, activez-le et réglez Mode sur « Journaliser uniquement — mode Surveillance, ne bloque rien ». Avec Hushfort Pro installé, laissez Extensions de formulaire activé, puis enregistrez. Il enregistre ce qu’il bloquerait sans encore rien bloquer.

3Étape 3
Réglez les limites discrètes (Pro)
Gardez un Temps de remplissage minimum court (3 secondes). Avec Pro, limitez aussi le nombre de messages qu’une IP (Limite par IP) ou une adresse e-mail (Limite par e-mail) peut envoyer par heure. Les messages contenant plus de liens que le Nombre maximum de liens vont en quarantaine.
4Étape 4
Examinez le journal, puis passez en mode Bloquer
Au bout de quelques jours, regardez ce que le mode Surveillance a intercepté. Si aucun vrai message n’y figure, réglez Mode sur « Bloquer (recommandé) » et enregistrez.

5Étape 5
Les vraies personnes envoient, tout simplement
Un visiteur tape pendant une demi-minute, ne voit jamais le champ caché et envoie. Pas d’énigmes, pas de grilles d’images.

Pourquoi c’est important
Le spam des formulaires n’est qu’une nuisance, jusqu’au jour où il devient un vrai problème. Il noie les vraies demandes, vous habitue à survoler votre boîte de réception, et peut dégrader la réputation d’envoi de votre serveur de messagerie si votre formulaire envoie des réponses automatiques. Sur les sites très fréquentés, il consomme aussi du temps serveur, car chaque envoi déclenche tout le traitement de l’extension de formulaire.
La solution habituelle, un CAPTCHA, fait payer le prix à vos visiteurs. Ils résolvent des énigmes, certains abandonnent, et ceux qui utilisent des outils de protection de la vie privée restent bloqués. La plupart des services CAPTCHA chargent aussi du code tiers et envoient les données des visiteurs hors de votre serveur.
Il existe une méthode plus discrète. Les robots se comportent différemment des humains, et cela se vérifie en silence :
- Ils remplissent les champs cachés. Un honeypot est un champ caché aux humains mais visible dans le HTML. Une personne le laisse vide ; un robot le remplit.
- Ils sont rapides. Une personne a besoin de quelques secondes pour remplir un formulaire. Un robot, de quelques millisecondes.
- Ils se répètent. Une IP ou une adresse e-mail qui envoie dix messages par heure n’est pas un client.
- Ils collent des liens. Un message truffé de liens est rarement une vraie demande.
Erreurs courantes
- Bloquer au lieu de mettre en quarantaine. Quand un contrôle a un doute, gardez le message pour l’examiner. Supprimer la question d’un vrai client est pire que de lire un spam.
- Passer directement en mode Bloquer. Commencez par un mode de journalisation seule pendant quelques jours. Vérifiez ce qui aurait été bloqué avant de le laisser bloquer.
- Des jetons qui cassent avec le cache. Si votre jeton anti-spam fait partie d’une page en cache, tous les visiteurs partagent un même jeton expiré. Utilisez une protection qui récupère son jeton au chargement de la page.
- Un seul contrôle. Un champ piège seul stoppe les robots simples. Ajoutez un contrôle du temps de remplissage et des limites.
Sans extension
La plupart des extensions de formulaire intègrent une version basique de ces protections :
- Formulaires Elementor Pro : ajoutez un champ « Honeypot » depuis la liste des champs.
- Contact Form 7 : ajoutez un honeypot via un module complémentaire ; CF7 prend aussi en charge Akismet si vous acceptez d’envoyer des données à ce service.
- WPForms : dispose d’un jeton anti-spam intégré et d’un honeypot facultatif dans les réglages de chaque formulaire.
Vous pouvez aussi ajouter vous-même un honeypot simple à tout formulaire que vous contrôlez :
<div style="position:absolute;left:-9999px" aria-hidden="true">
<label>Leave this empty <input type="text" name="website" tabindex="-1" autocomplete="off"></label>
</div>
<?php
if ( ! empty( $_POST['website'] ) ) {
wp_die( 'Spam detected.', 403 );
}
Les limites : chaque extension de formulaire procède différemment, il n’y a généralement pas de limite de débit commune à tous les formulaires, pas de quarantaine pour rattraper les erreurs, et rien pour les commentaires ou les avis. Vous finissez par configurer la même idée cinq fois.
En cas de problème
- Les vrais messages n’arrivent plus. Passez le Bouclier anti-spam en mode Surveillance, envoyez un test et consultez le journal pour voir quel contrôle l’a intercepté.
- Les formulaires échouent seulement pour certains visiteurs. Videz votre cache de page une fois après avoir activé la protection.
- Du spam passe encore. Baissez la limite de liens, ajoutez des mots ou des domaines à la liste de blocage, ou activez le mode strict pour les formulaires qui ne doivent accepter que des fournisseurs d’e-mail connus.
Avec Hushfort
Le Bouclier anti-spam de Hushfort protège les commentaires et les avis WooCommerce dans Hushfort Security, l’extension de sécurité WordPress gratuite. Les extensions de formulaire nécessitent Hushfort Pro, qui ajoute six extensions populaires (Elementor Pro, Contact Form 7, WPForms, Gravity Forms, Fluent Forms, Forminator) au même écran.
- Champ piège invisible, temps de remplissage minimum et jetons signés qui résistent au cache de page. Le jeton provient d’un minuscule script d’environ 2 Ko, sans cookies.
- Pro : des limites par défaut par IP (5 par heure) et par e-mail (3 par heure) ; les messages contenant plus de 2 liens vont en quarantaine.
- Pro : une liste d’environ 9 900 domaines d’e-mail jetables, vos propres listes de blocage et des filtres de mots.
- Pro : une quarantaine avec apprentissage « Pas un spam ».
- Un mode Surveillance, pour voir ce qu’il bloquerait avant qu’il ne bloque.
Pas de CAPTCHA, pas d’API externe, et aucune donnée de formulaire ne quitte jamais votre serveur.
Questions fréquentes
Les champs pièges (honeypots) stoppent-ils vraiment le spam des formulaires ?
Pourquoi éviter reCAPTCHA ?
Cela fonctionne-t-il avec le cache de page ?
Quelles extensions de formulaire sont couvertes ?
Que devient un message qui ressemble à du spam mais pourrait être légitime ?
Guides associés
Comment désactiver les commentaires sur WordPress, ou stopper le spam dans les commentaires ?
Désactivez les commentaires WordPress partout, ou gardez-les ouverts sans spam : règles distinctes pour articles et avis produits, sans CAPTCHA.
Voir les étapesComment bloquer les inscriptions spam et les faux comptes sur WordPress ?
Bloquez les inscriptions spam et les faux comptes sur WordPress et WooCommerce : limites horaires, plafond global, champs pièges, sans bloquer la commande.
Voir les étapesComment repérer et bloquer les faux Googlebot et les bots malveillants sur WordPress ?
Bloquez faux Googlebot et bots malveillants sur WordPress : vérifiez les robots par leur IP, fixez un budget de requêtes par IP, sans gêner la commande.
Voir les étapes

