Google recaptcha, comment l'utiliser

Google recaptcha, comment l'utiliser

23/02/2015

Vous​‌‍​‌​‌‍​‍ connaissez probablement déjà les captchas, ce sont les petits morceaux de texte et de chiffre que l’on retrouve dans les formulaires. Ils sont destinés à empêcher les robots de remplir et valider un formulaire. Avec le temps, ces automates se sont améliorés et les développeurs ont donc dû endurcir le système en générant des images encore plus complexes à déchiffrer même pour un être humain.

Quelques captcha

Il y a peu de temps, l’ami Google a mis a disposition un système qui simplifie énormément ce système. Il s’agit d’une simple case à cocher avec le texte “Je ne suis pas un robot“. En tant qu’utilisateur vous n’avez qu’à cliquer dessus mais en tant que robot c’est plus compliqué.

Google a créé une méthode de validation basée sur de très nombreuses données telles que les mouvements de souris, les cliques et bien d’autres, pour déterminer si vous êtes un robot ou non. Bien entendu cet algorithme est gardé secret.

Je ne suis pas un robot

Je l’ai déjà intégré au formulaire de contact de ce site et je vais vous montrer comment faire de même sur votre site. Deux étapes sont nécessaires pour cela, une au niveau de l’interface et l’autre au niveau du serveur.

Mais avant tout, vous devez vous procurer une clé publique et privée pour utiliser le service. Pour cela rendez-vous sur se site dédié puis cliquez sur “Get reCAPTCHA”. Vous allez devoir remplir un formulaire avec un nom et une liste de domaine. Partez pour “Formulaire de contact” et “localhost” pour le domaine. Sachez que vous pouvez mettre tous les domaines que vous voulez ici, même s’il est recommandé d’avoir une clé par domaine.

Maintenant que vous avez une clé, vous allez devoir intégrer le code suivant dans votre formulaire. Remplacez bien $$votreclédesite$$ par votre clé de site donnée par Google.

1
2
<div class="g-recaptcha" data-sitekey="$$votreclédesite$$"></div>
<script src='https://www.google.com/recaptcha/api.js'></script>

Vous pouvez maintenant ouvrir votre formulaire dans un navigateur et vérifier que jusque-là tout fonctionne.

Maintenant arrive la partie technique, ça ce passe côté serveur. Quand vous allez poster votre formulaire, une donnée nommée _g-recaptcha-response_ sera ajoutée par le service Google. Vous allez devoir la traiter. D’une manière générale il faudra, récupérer cette valeur pour l’envoyer à une page de validation chez Google au travers d’une requête HTTP côté serveur et Vérifier le résultat retourné au format JSON.

Voici un exemple en PHP :

1
2
3
4
5
6
7
8
<?php
$response = $_POST['g-recaptcha-response'];
$googleContent = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$$votrecléprivée$$&response=$response");
$result = json_decode($googleContent); // remplacez $$votrecléprivée$$par la clé privée fournie par Google
if($result->success)
echo 'Je ne suis pas un robot, je suis un homme libre!';
else
echo 'Exterminate!';

Et c’est tout. Plutôt cool n’est-ce pas ?