Site icon Freelance Expert PrestaShop – WordPress – WooCommerce : Arnaud Merigeau

Ajouter reCAPTCHA à PrestaShop 8 et 9 : tuto gratuit (sans module payant)

Tuto gratuit reCAPTCHA PrestaShop 8 et 9 : contact, inscription, newsletter sans module payant

Lundi matin, alerte d’un client : « On a reçu 200 mails de bienvenue en une nuit. »

Je me connecte. 200 comptes clients créés en 48 h. Emails jetables. Zéro commande. Un bot sur le formulaire d’inscription : pas de CAPTCHA, pas de rate limiting.

Nettoyage en 2 h. Puis reCAPTCHA v2 sur inscription + contact, honeypot, validation email renforcée. Depuis : zéro vague.

Ce n’est pas spectaculaire comme un skimmer sur le tunnel de paiement. Mais ça pollue ta base CRM, fait exploser tes quotas mail, et peut dégrader ta réputation d’expéditeur.

Dans ce tuto 2026, tu obtiens :

Spoiler : on ne touche plus à contact-form.tpl comme en PrestaShop 1.6. Sur PrestaShop 9 (Hummingbird, Symfony), un module à jour + les bons hooks, c’est plus propre ; et ça survit aux mises à jour. Besoin que je le pose sur ta boutique ? Écris-moi.

Sommaire

  1. Pourquoi tes formulaires PrestaShop se font spammer
  2. reCAPTCHA v2, v3, Enterprise : laquelle choisir en 2026
  3. PrestaShop 1.7, 8 et 9 : ce qui change vraiment
  4. Étape 1 : Créer tes clés Google reCAPTCHA
  5. Étape 2 : Choisir le module gratuit selon ta version
  6. Étape 3 : Installer et configurer le module
  7. Étape 4 : Tester (desktop, mobile, cache)
  8. CSS : afficher proprement la case (Classic / Hummingbird)
  9. Honeypot, emails jetables, rate limiting : la couche 2
  10. Tu as déjà 200 faux comptes : comment nettoyer
  11. Ça ne marche pas : checklist de dépannage
  12. FAQ : reCAPTCHA PrestaShop 8 et 9
  13. Conclusion
Mise à jour 2026 : le même objectif qu’en 1.6 / 1.7, une méthode compatible PrestaShop 8, 9 et Hummingbird.

1. Pourquoi tes formulaires PrestaShop se font spammer

Dès qu’un formulaire est public, il est une API ouverte. Les bots n’ont pas besoin de « casser » PrestaShop : ils POST-ent sur /contact, /connexion (création de compte) et parfois la newsletter. Sans challenge, ça passe.

Les cibles les plus fréquentes :

Le coût n’est pas « 2 minutes à trier ». C’est : quotas transactionnels (Brevo, Mailjet, SMTP), réputation d’expéditeur, clients légitimes qui n’ouvrent plus tes mails de commande, et un back-office clients illisible.

Si tu es encore sur une 1.7 figée, le fond du problème est le même ; l’ancien tuto reCAPTCHA v2 pour PrestaShop 1.7 reste une archive. La méthode 2026 ci-dessous la remplace pour PS 8 / 9.

2. reCAPTCHA v2, v3, Enterprise : laquelle choisir en 2026

Un captcha, c’est un test « humain vs robot ». reCAPTCHA, c’est la version Google. En 2026, tu croises quatre familles ; et beaucoup de tutos mélangent encore les clés.

Type Ce que voit le client Idéal pour Piège
v2 « case à cocher » « Je ne suis pas un robot », parfois des images Contact, inscription Friction légère, mais debug simple
v2 invisible Rien, challenge seulement si doute Parcours où tu veux peu de friction Plus dur à diagnostiquer
v3 (score) Rien Monitoring + seuil Seuil mal réglé = faux positifs ou spam qui passe
Turnstile (Cloudflare) Widget discret Alternative plus « RGPD-friendly » Le module doit le supporter

Mon avis terrain : pour une boutique PME, pars sur reCAPTCHA v2 case à cocher sur contact + inscription. C’est visible, ça rassure, et tu vois tout de suite si ça casse. La v3, je la réserve quand le module gère un seuil (EiCaptcha 2.6 le fait) et que tu as le temps de l’ajuster.

Côté Google : les clés se gèrent de plus en plus dans Google Cloud (Security → reCAPTCHA). La console historique google.com/recaptcha/admin reste le chemin le plus simple pour créer une clé « Challenge / checkbox » ou « Score-based ». La plupart des modules PrestaShop attendent encore une clé du site + clé secrète (mode classique). Après migration Cloud, ces clés continuent en général de fonctionner avec le même module ; à condition de ne pas mélanger une clé v3 avec un module réglé en v2.

Quota : Google documente un socle gratuit d’assessments (ordre de grandeur : 10 000 / mois sur l’offre Cloud). Pour un contact + des inscriptions, une PME y reste. Un gros trafic catalogue + login partout, c’est un autre sujet (Turnstile, ou facturation Cloud).

3. PrestaShop 1.7, 8 et 9 : ce qui change vraiment

Le spam n’a pas changé. L’architecture si :

Ne force pas un ZIP 1.7 sur une PrestaShop 9 « pour voir ». Vérifie la ligne de compatibilité avant d’uploader.

EiCaptcha (nenes25/eicaptcha) est le module open source que je recommande depuis des années sur 1.7 / 8 ; j’avais même poussé un correctif CSS dès la 2.0.1. La branche 2.6.0 (fin 2025) cible 1.7 et 8, avec score v3 configurable. La ligne 3.x (PrestaShop 9 only, PHP 8.1+) était en cours côté GitHub en 2026 : à vérifier sur la page Releases au moment où tu installes.

Sur une PrestaShop 9 en production aujourd’hui, je prends un module qui déclare 9.x : par exemple Tec Spam Guard (MIT, reCAPTCHA + Turnstile + emails jetables) ou le reCAPTCHA gratuit PrestaHero (contact / inscription / login). Pas de religion : la fiche « compatible 9.x » + un test staging battent n’importe quel nom connu.

4. Étape 1 : Créer tes clés Google reCAPTCHA

  1. Ouvre la console reCAPTCHA (compte Google de la boîte, pas ton Gmail perso si tu peux).
  2. Crée un site / une clé. Libellé : le nom de la boutique (ex. « Bohomane prod »).
  3. Type : Challenge / case à cocher (v2) si tu suis ce tuto « simple ». Score-based (v3) seulement si ton module le demande clairement.
  4. Domaines : votreboutique.fr et www.votreboutique.fr. Ajoute le domaine de préprod si tu testes là-bas.
  5. Valide les conditions. Tu obtiens une clé du site (publique, front) et une clé secrète (serveur). La secrète = mot de passe : pas dans un ticket Trello public.

Si Google te pousse vers Cloud Console : Security → reCAPTCHA → Create key. Même logique. Si ton module PrestaShop a un mode « Enterprise » (Key ID + Project ID + API key), c’est un autre formulaire ; ne colle pas une clé Enterprise dans un champ « secret key » classique.

5. Étape 2 : Choisir le module gratuit selon ta version

Version PrestaShop Module gratuit Formulaires À retenir
1.7 / 8 EiCaptcha 2.6.x Contact, compte, newsletter Télécharge le ZIP des Releases, pas « Code → Download ZIP » (vendor Composer manquant)
9 Module déclaré 9.x (Tec Spam Guard, PrestaHero free, EiCaptcha 3.x s’il est sorti) Contact, compte, login, parfois checkout Teste sur staging. Hummingbird n’est pas Classic.
1.6 EiCaptcha 0.4.x (legacy) Contact Le vrai sujet, c’est la migration 1.7 → 8/9

Prérequis fréquents : module natif contactform activé. Pour la newsletter EiCaptcha : ps_emailsubscription ≥ 2.6.0.

L’ordre compte : clés d’abord, module ensuite, tests en navigation privée en dernier ; pas l’inverse.

6. Étape 3 : Installer et configurer le module

Sauvegarde (fichiers + BDD) avant d’uploader un ZIP. Cinq minutes, pas un optionnel.

  1. Back-office → Modules → Module Manager → Upload a module / « Ajouter un module ».
  2. Envoie le ZIP. Installe. Si PrestaShop refuse la version : tu n’as pas le bon ZIP (PS 9 vs 2.6, ou l’inverse).
  3. Configure : colle clé du site + clé secrète.
  4. Active les formulaires : contact et création de compte a minima. Login et newsletter selon ta surface d’attaque.
  5. Si le module propose v2 / v3 : aligne-le sur le type de clé Google. Un mismatch = widget invisible ou validation qui échoue toujours.
  6. Enregistre. Vide le cache PrestaShop (Performances). Sur PS 9, vide aussi le cache Symfony si tu as la main SSH : php bin/console cache:clear.

Tu n’as pas à coller <div class="g-recaptcha"> dans le thème si le module est compatible. C’était le bricolage 1.6. Sur 8 / 9, c’est un anti-pattern : tu perds la validation serveur au prochain update de thème.

7. Étape 4 : Tester (desktop, mobile, cache)

Un widget qui s’affiche ne prouve rien. La preuve, c’est le refus serveur.

  1. Déconnecte-toi du back-office. Fenêtre privée. Idéalement le téléphone en 4G (comme pour un test anti-skimmer : l’admin n’est pas le client).
  2. Contact : envoie un message sans cocher. Tu dois être bloqué. Puis avec la case : le mail part.
  3. Création de compte : même protocole. Vérifie qu’un compte n’est pas créé en base si le captcha est vide.
  4. Mobile : la case v2 fait 304×78 px. Sur Classic, elle passe parfois sous le bouton ; d’où le CSS plus bas.
  5. Newsletter / checkout (si activés) : un bot moderne s’inscrit souvent au tunnel, pas seulement sur /connexion.

Si « ça marche chez moi en admin » mais pas en privé : cache, CDN (Cloudflare Rocket Loader qui casse le JS Google), ou module de perf qui concatène les scripts.

8. CSS : afficher proprement la case (Classic / Hummingbird)

Sur Classic, le widget se cale mal à droite / trop large en mobile. Colle ceci à la fin de themes/ton-theme/assets/css/custom.css (enfant, pas le parent que tu écrases à chaque update) :

/* Style reCAPTCHA - thème Classic (PS 1.7 / 8, parfois 9) */
.contact-form form .form-fields #captcha-box > div {
  float: right;
}
.contact-form form .form-footer {
  clear: both;
  padding-top: 1rem;
}
@media screen and (max-width: 767px) {
  #contact #left-column,
  #contact #content-wrapper {
    padding-left: 0 !important;
    padding-right: 0 !important;
    width: 100%;
  }
  .contact-form form .form-fields #captcha-box {
    position: relative;
    min-height: 78px;
  }
  .contact-form form .form-fields #captcha-box > div {
    float: none;
    position: absolute;
    left: 50%;
    top: 0;
    transform: translate(-50%, 0);
  }
}
@media screen and (max-width: 379px) {
  .register-form form .form-group .g-recaptcha {
    position: relative;
    min-height: 78px;
  }
  .register-form form .form-group .g-recaptcha > div {
    float: none;
    position: absolute;
    left: 50%;
    top: 0;
    transform: translate(-50%, 0);
  }
}

Sur Hummingbird, ne copie pas ce CSS les yeux fermés : les classes ne sont pas les mêmes. Inspecte le DOM (#captcha-box, .g-recaptcha) et adapte. Un padding / min-height: 78px suffit souvent pour que le bouton d’envoi ne recouvre pas la case.

9. Honeypot, emails jetables, rate limiting : la couche 2

En 2026, les fermes à captcha existent. reCAPTCHA réduit le bruit, il ne le supprime pas. Sur le client des 200 comptes, le combo qui a tenu :

Pour une première barrière « nom + URL dans le prénom », j’avais documenté des overrides Validate.php / Customer.php dans Comment protéger PrestaShop des comptes clients spams. Sur PS 8 / 9, je ne recopie plus ces overrides tels quels : le $definition a bougé. Captcha + emails jetables + honeypot, c’est plus maintenable qu’un override core figé en 2019.

10. Tu as déjà 200 faux comptes : comment nettoyer

  1. Back-office → Clients. Filtre par date d’inscription (les 48 h de la vague).
  2. Croise : 0 commande, domaines jetables, prénoms identiques, même IP.
  3. Exporte le filtre (CSV) avant de supprimer ; pour le support si un vrai client était dans le lot.
  4. Supprime. Ne vide pas toute la table clients.
  5. Vérifie la file mail (module mail, logs SMTP) : les 200 « bienvenue » ont peut-être déjà brûlé un quota.
  6. Ensuite seulement pose le captcha. Nettoyer sans fermer la porte, c’est recommencer mardi.

11. Ça ne marche pas : checklist de dépannage

Symptôme Cause fréquente Quoi faire
Pas de case Cache, mauvais thème, clé v3 dans un module v2, domaine absent Vider cache + CDN. Vérifier le type de clé et www / non-www
Toujours refusé Clé secrète inversée, firewall sortant vers Google Recoller les clés. Tester siteverify depuis le serveur
OK en admin, KO en privé Cache page, Cloudflare, minification JS Désactiver Rocket Loader / combine JS sur les pages compte et contact
PS 9 : installé, rien Module 1.7/8 sur Hummingbird Module déclaré 9.x, test staging
Newsletter passe encore Hook newsletter non géré Activer l’option, vérifier ps_emailsubscription
Checkout guest sans captcha L’inscription n’est pas /connexion Module qui couvre l’identité checkout (surtout en OPC PS 9.2)

Thème lourd, checkout one-page, formulaire d’un module tiers : le captcha « contactform » ne s’y accroche pas tout seul. C’est du sur-mesure ; ticket d’intervention ou accompagnement freelance.

12. FAQ : reCAPTCHA PrestaShop 8 et 9

reCAPTCHA fonctionne-t-il sur PrestaShop 9 ?

Oui, à condition d’utiliser un module qui déclare PrestaShop 9 (et de tester sur Hummingbird si c’est ton thème). Ce n’est plus le copier-coller contact-form.tpl de PrestaShop 1.6. EiCaptcha 2.6 est le standard 1.7/8 ; la 3.x vise PS 9 ; vérifie les Releases GitHub le jour J.

Faut-il un module payant pour ajouter reCAPTCHA à PrestaShop ?

Non. EiCaptcha (GitHub) et plusieurs modules gratuits suffisent pour contact + inscription. Un module payant se justifie si tu veux support éditeur, Turnstile, blacklist, checkout et emails jetables dans la même interface.

reCAPTCHA v2 ou v3 : lequel choisir sur une boutique ?

v2 case à cocher pour démarrer : visible, débogable, efficace contre le brute-force d’inscription. v3 si tu veux zéro friction et que tu acceptes de régler un seuil (et de surveiller les faux rejets clients).

Pourquoi la case reCAPTCHA ne s’affiche pas sur PrestaShop ?

Dans l’ordre : cache (Smarty + Symfony + CDN), domaine Google incomplet (www), type de clé (v2 vs v3), JS Google bloqué par un module de perf, thème enfant qui n’appelle pas le hook. Teste en navigation privée après avoir vidé tous les caches.

reCAPTCHA suffit-il contre les bots en 2026 ?

Non, plus comme seule barrière. Les fermes à captcha existent. Combine captcha + honeypot + rejet des emails jetables + rate limiting. C’est ce combo qui a arrêté la vague des 200 comptes, pas la case toute seule.

Cloudflare Turnstile est-il mieux que Google reCAPTCHA ?

Souvent plus agréable (vie privée, UX). Il faut un module PrestaShop qui le parle (Tec Spam Guard le fait). Si ton module ne gère que Google, reste sur reCAPTCHA v2 ; un captcha qui marche bat une « meilleure » techno non branchée.

Comment supprimer 200 faux comptes clients PrestaShop ?

Filtre par date + 0 commande + domaines jetables, export CSV, puis suppression. Pose le captcha tout de suite après, sinon la vague revient. Ne vide pas toute la table clients.

reCAPTCHA ralentit-il le site ou le SEO ?

Le script Google s’ajoute sur les pages où le module le charge (contact, compte), pas sur tout le catalogue si tu configures correctement. Ce n’est pas un sujet Core Web Vitals de homepage. Évite « charger le script partout » sauf besoin réel.

Faut-il un captcha sur le tunnel de commande PrestaShop 9 ?

Si tu autorises la création de compte / l’invité au checkout, oui : les bots ne passent pas que par /connexion. Surtout avec un One Page Checkout. Vérifie que ton module couvre cette étape, pas seulement la page compte isolée.

Les clés Google reCAPTCHA sont-elles encore gratuites en 2026 ?

Oui pour un usage boutique classique, via le socle gratuit Cloud documenté par Google. Au-delà, facturation possible. Si tu exploses le quota, Turnstile ou un WAF devient plus intéressant qu’une case à 50 000 assessments.

Hummingbird change-t-il l’installation du captcha ?

Oui : autres templates, autres classes CSS. Un module pensé Classic peut s’installer sans rien afficher. Choisis un module testé PS 9 / Hummingbird, et n’applique le CSS Classic de ce tuto que si tes classes DOM matchent.

Où trouver un tuto reCAPTCHA PrestaShop 1.7 ?

L’ancienne version est ici : Ajouter reCAPTCHA v2 pour PrestaShop 1.7. Pour une boutique encore en 8 ou déjà en 9, reste sur cette page ; c’est le guide à jour.

13. Conclusion

Ajouter reCAPTCHA à PrestaShop, ce n’est plus un exploit FTP de 2016. En 2026, sur PS 8 et 9, la recette est : bonnes clés Google (v2 pour démarrer), module gratuit compatible avec ta version, tests en navigation privée, puis honeypot + emails jetables parce que la case seule ne tient plus face à une ferme de bots.

Si tes formulaires d’inscription et de contact ne sont pas protégés, tu n’as pas un « petit spam » : tu as une porte ouverte sur ta CRM et tes quotas mail. Ferme-la ce week-end.

Tu veux que je pose reCAPTCHA, honeypot et le nettoyage de vague sur ta boutique ; sans module payant inutile, avec un test staging ? Discutons-en →

Pour aller plus loin : politique de sécurité thèmes et modules, guide modules PrestaShop 2026, et le protocole skimmer 2026 si tu n’as pas audité ton tunnel de paiement ce mois-ci.


Quitter la version mobile