web-dev-qa-db-fra.com

Manière d'éviter le défi d'images reCAPTCHA

J'implémente reCAPTCHA sur l'un de mes sites Web et je l'ai mis en œuvre avec succès. Cela fonctionne bien. Parfois, le reCAPTCHA n'est complété qu'en cliquant sur le bouton "Je ne suis pas un robot", mais parfois, il affiche la grille des images pour sélectionner les images correctes et compléter le captcha.

Je me demandais si cela était possible ou non. Pouvons-nous désactiver le défi de sélection d'images afin que le reCAPTCHA ne puisse être complété qu'en cliquant sur le bouton "Je ne suis pas un robot". Quelle est la théorie de Google pour afficher la grille d'images?

J'ai déjà lu ceci: Empêcher les sélections d'images multiples reCaptcha mais il n'y a pas assez d'informations là-bas.

Merci!

J'ai inclus recaptcha/api.js au dessous de.

<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallbackAuto&render=explicit&hl=<?php echo $lang;?>" async defer >

Mon code reCAPTCHA est ci-dessous:

    var onloadCallbackAuto = function() {
         /// do something....
    }
    var verifyCallback = function() {
         /// do something....
    }
    grecaptcha.render('gReCaptchaDiv', {
     'sitekey' : '<?php echo $siteKey;?>',
     'callback' : verifyCallback,
     'theme' : 'light'
    });
23
elegant-user

Le nouveau reCaptcha de Google implémente des algorithmes sophistiqués pour déterminer s’il ya un utilisateur réel ou non. Certaines méthodes utilisées sont la détection de la répétition de la requête (si une requête est répétée plusieurs fois dans une courte période d’une source particulière), le comptage du temps (combien de temps s’est écoulé depuis l’initialisation du script), les événements de curseur (comme en cliquant), les événements de défilement, le déclenchement d’événements communs javascript et les appels XHR.

Toutes ces méthodes, parmi bien d'autres, combinent l'invisible reCaptcha et, dans le cas de la case à cocher reCaptcha, certaines de ces méthodes de détection se déclenchent également. Si l'algorithme détecte quelque chose d'inhabituel pour un utilisateur humain, par exemple, en cochant la case reCaptcha sans que l'événement mousemove soit déclenché, cela ne sera pas considéré comme un résultat humain et reCaptcha doit donc s'appuyer sur autre chose pour s'assurer qu'il existe un humain qui fait des trucs et pas un script bot.

La réponse est que vous ne pouvez pas l'éviter. Si la méthode reCaptcha de base échoue, elle doit faire quelque chose pour assurer sa protection.

Gardez à l'esprit que les utilisateurs de votre application ne verront pas la méthode des images très souvent comme vous. J'imagine que vous faites des tests et que vous essayez encore et encore les mêmes choses après des mises à jour de code, vous obtenez donc l'échec de reCaptcha plus souvent en raison de la répétition de la même source.

37
Christos Lytras

Non, vous ne pouvez pas le sauter.

Je suis surpris que personne n'ait expliqué pourquoi nous les obtenons. L'image recaptcha ne consiste pas uniquement à détecter que l'utilisateur n'est pas un bot. Si vous remarquez, elles sont toujours liées au trafic, aux ponts, aux panneaux, aux devantures de magasins, etc. Google utilise cet outil pour former des réseaux de neurones artificiels, principalement destinés aux voitures autonomes. Cette méthode s'appelle la formation supervisée.

Dans les réseaux de neurones, il existe deux types de formation, la formation supervisée et la formation non supervisée. La formation supervisée consiste à fournir un mécanisme d’évaluation manuelle des performances du réseau. Ainsi, lorsque vous choisissez toutes ces images de voiture, le réseau tente également de faire de même, vous évaluez les performances du réseau. Plus il reçoit d'informations, plus il devient intelligent en ajustant les poids de chaque neurone du réseau.

Dans la formation non supervisée, le réseau doit donner un sens à ce que vous essayez d'enseigner sans aide extérieure. C'est beaucoup moins efficace mais on peut quand même le faire.

5
ColdTuna