Comment fonctionne Google reCAPTCHA v2 en arrière-plan?

303

Ce message fait référence à Google ReCaptcha v2 (pas la dernière version)

Récemment, Google a introduit un système de vérification "captcha" simplifié ( vidéo ) qui permet aux utilisateurs de passer le "captcha" simplement en cliquant dessus.

Mais comment peut-il différencier un bot d'une personne par un simple clic?

Selon cette réponse , (en supposant une implémentation similaire), dans un premier temps "recaptcha" génère une clé cachée et l'attache à un élément d'entrée caché et rend également paresseusement une case à cocher (pas une case à cocher réelle inputmais a div) avec la même clé qui lorsque vous cliquez dessus, envoie une demande asynchrone (XHR) aux serveurs principaux de Google pour la marquer comme une clé de vérification valide (c'est-à-dire une clé qui doit être validée lorsque le formulaire est soumis).

Mais pourquoi les robots ne peuvent-ils pas automatiser ce clic (au moins, les robots basés sur un navigateur)?

Comment cela pourrait-il fonctionner?

everlasto
la source
1
Probablement similaire à la façon dont ils envoyaient des captchas simples aux humains et des captchas durs aux bots
mukunda
1
La façon dont je l'ai compris est - il y a toujours un captcha, mais à moins que vous ne fassiez des demandes suspectes - vous n'aurez jamais à le résoudre.
Kelm
@Louie Qu'est-ce qui a été "volé"? Quelqu'un a posé la même question et a lié le même (et le seul) post - mais c'est libellé un peu différemment, et aucune des réponses n'est la même. De plus, la question originale de Quora a été publiée le 3 décembre, un jour avant cette question. Quel semble être le problème?
wchargin
10
@CiroSantilli 六四 事件 法轮功 que diable? le lien a disparu
TechLife
14
@TechLife true! Semble avoir déménagé sur github.com/neuroradiology/InsideReCaptcha ? Rappel à soi: toujours fourchette.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Réponses:

200

C'est de la spéculation, mais basée sur la référence de Google au "moteur d'analyse des risques" qu'ils utilisent ( http://googleonlinesecurity.blogspot.com/2014/12/are-you-robot-introducing-no-captcha.html )

Je suppose qu'il examine la façon dont vous vous êtes comporté avant de cliquer, comment votre curseur s'est déplacé sur la route (chemin organique / accélération), quelle partie de la case à cocher a été cliquée (endroits aléatoires ou morts au centre à chaque fois), navigateur empreinte digitale, cookies et contenu Google, historique de localisation des clics lié à votre empreinte digitale ou à votre compte s'il en détecte une, etc.

Il est assez difficile de simuler un comportement "organique" de telle manière qu'il tromperait un moteur de détection de modèle d'apprentissage continu. Dans les cas où il n'est pas sûr, il vous invite toujours à faire correspondre une chaîne CAPTCHA réelle.

AgmLauncher
la source
73
Cela semble juste et devrait expliquer pourquoi je dois toujours taper une chaîne sur ma PSVita avec les bâtons. Il ne bouge pas comme une souris normale.
Domino
3
Je me demande comment Google réagirait sur une énorme quantité suffisante de comportements organiques enregistrés.
Markus Malkusch
16
Le mouvement de la souris n'y contribue certainement pas. Placez le curseur à droite à l'endroit où la case à cocher apparaît. Accédez au site sans déplacer votre curseur. Cochez la case et cela passera.
Derek 朕 會 功夫
3
@Derek, je ne pense pas que ce soit la preuve de quoi que ce soit. Les cookies, l'IP et de nombreux autres facteurs peuvent contribuer à vous laisser passer avant qu'ils ne retombent dans le mouvement de la souris. Je n'ai pas envie de le tester, mais si vous deviez tirer un nouvel ordinateur à partir d'une nouvelle IP et ne pas utiliser la souris du tout, je suis prêt à parier que cela échouerait.
Caimen
13
Notez que vous pouvez également y accéder et appuyer sur espace.
JSideris
74

Un nouveau document a été publié avec plusieurs tests contre reCAPTCHA:

https://www.blackhat.com/docs/asia-16/materials/asia-16-Sivakorn-Im-Not-a-Human-Breaking-the-Google-reCAPTCHA-wp.pdf

Quelques faits saillants:

  • En gardant un cookie actif pendant +9 jours (en naviguant sur des sites avec des ressources Google), vous pouvez ensuite passer reCAPTCHA en cliquant uniquement sur la case à cocher;
  • Il n'y a aucune restriction basée sur les demandes par IP;
  • L'agent utilisateur du navigateur doit être réel et Google exécute des tests par rapport à votre environnement pour s'assurer qu'il correspond à l'agent utilisateur;
  • Google teste si le navigateur peut rendre un canevas;
  • La résolution d'écran et les événements de souris n'affectent pas les résultats;

Google a déjà corrigé la vulnérabilité des cookies et limite probablement certains comportements basés sur les adresses IP.

Une autre découverte intéressante est que Google exécute une machine virtuelle en JavaScript qui obscurcit une grande partie du code et du comportement reCAPTCHA. Cette machine virtuelle est connue sous le nom de botguard et est utilisée pour protéger d'autres services en plus de reCAPTCHA:

https://github.com/neuroradiology/InsideReCaptcha

MISE À JOUR 2017

Un article récent (d'août) a été publié sur WOOT 2017 avec une précision de 85% dans la résolution des défis audio noCAPTCHA reCAPTCHA:

http://uncaptcha.cs.umd.edu/papers/uncaptcha_woot17.pdf

MISE À JOUR 2018

Google présente reCAPTCHA v3, qui ressemble à un "moteur de prédiction du score humain" calibré par site Web. Il peut être installé dans différentes pages d'un site Web (fonctionnant comme un script Google Analytics) pour aider reCAPTCHA et le propriétaire du site Web à comprendre le comportement des humains par rapport aux robots avant de remplir un reCAPTCHA.

https://www.google.com/recaptcha/intro/v3beta.html

barbolo
la source
4
mouse events don't affect the resultsC'est intéressant, car j'avais (et je pense que beaucoup d'autres) pensais que c'était la principale chose qui affectait les résultats. J'ai pensé sur mobile au lieu de la case à cocher, les utilisateurs ont été invités à sélectionner toutes les images qui se ressemblent à la place, car il n'y a pas de mouvements de souris sur un écran tactile. Cependant, en regardant à nouveau le billet de blog d'introduction, il semble que ce ne soit pas le cas. Peut-être que la sélection d'images est au lieu de taper du texte déformé, pas au lieu de cocher une case. Savez-vous (ou quelqu'un d'autre) si reCAPTCHA permet de simplement cocher une case sur mobile?
Nateowami du
Les événements de souris affectent les résultats. Si vous appuyez sur Tabet Enterpour sélectionner la case à cocher, elle affichera les images captcha pour que vous puissiez les sélectionner en fonction d'un critère.
mbomb007
1
@ mbomb007 Les événements de la souris peuvent affecter les résultats, mais en appuyant sur Tabet Entern'affichera pas l'image captcha tout le temps. La plupart du temps pressant Tabet Enteraccepté
Manish Ojha
24

Mes Bots fonctionnent bien contre ReCaptcha.

Voici ma solution.

Laissez votre Bot faire ces étapes:

Écrivez d'abord une fonction de déplacement de la souris humaine pour déplacer votre souris comme une B-Spline (demandez-moi le code source). C'est le point le plus important.

Utilisez également pour de meilleurs résultats un VPN comme https://www.purevpn.com

Pour chaque Recpatcha, procédez comme suit:

  1. Si vous utilisez d'abord le commutateur VPN IP

  2. Effacer tous les cookies du navigateur

  3. Effacer tout le cache du navigateur

  4. Définissez l'un de ces useragents par hasard:

    une. Mozilla / 5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident / 5.0)

    b. Mozilla / 5.0 (Windows NT 6.1; WOW64; rv: 44.0) Gecko / 20100101 Firefox / 44.0

5 Déplacez votre souris avec la fonction de déplacement de la souris humaine d'un point aléatoire vers l'image Je ne suis pas un robot à chaque fois avec une plage aléatoire 10 x 10 différente

  1. Cliquez ensuite sur avec un retard aléatoire entre

    WM_LBUTTONDOWN

    et

    WM_LBUTTONUP

  2. Prendre une capture d'écran de l'image Captcha

  3. Envoyer une capture d'écran à

    http://www.deathbycaptcha.com

    ou

    https://2captcha.com

et laissez-les résoudre.

  1. Après avoir reçu les cooridinates de clic du solveur captcha, utilisez votre Funktion de déplacement de la souris humaine pour déplacer et cliquer sur Recaptcha Images

  2. Utilisez votre fonction de déplacement de souris humaine pour vous déplacer et cliquez sur le bouton de vérification Recaptcha

Dans 75% tous les trys Recaptcha seront résolus

Chears Google

À M

Ingo
la source
2
Pourquoi avez-vous besoin de la "fonction de déplacement de la souris humaine"? Il semble inutile d'atteindre votre objectif.
barbolo
9
La fonction «Human Mouse Move» est le point le plus important. Google détecte à l'intérieur du captcha Mousespeed, MouseWay, MouseButton down and up Events, Clickpositions, Mouse EntryPoint dans le captcha, ... et envoie ces informations via Javascript à la base de données Google avec plusieurs millions de véritables suivis humains Mousemove. Après avoir interprété toutes ces informations capturées, le captcha sera marqué comme résolu, uniquement si l'algorithme de Google indique qu'il s'agissait d'un humain.
Ingo
3
@ barbolo: Veuillez consulter ce blog officiel de Google security.googleblog.com/2014/12/… -> Google dit "Pour contrer cela, l'année dernière, nous avons développé un backend Advanced Risk Analysis pour reCAPTCHA qui prend activement en compte l'intégralité de l'engagement d'un utilisateur avec le CAPTCHA —Avant, pendant et après — pour déterminer si cet utilisateur est un humain. "
Ingo
6
L'étape 8 utilise une API externe où les humains résolvent le captcha pour vous. Le bot ne résout rien.
Andrea Lazzarotto
14
Est-ce juste moi, ou est-ce à la fois dérangeant et fascinant pour quelqu'un d'autre que les auteurs de robots utilisent Stack Overflow pour aider à résoudre (et à débattre!) Les reCAPTCHA?
Ogre Psalm33
3

Puis-je présenter ma supposition, car ce n'est pas une technologie ouverte.

Google dit qu'il s'agit de combiner les informations d'avant, pendant et après pour distinguer l'homme du robot. Mais je suis plus intéressé par ce dernier clic sur la case à cocher.

Disons que les données POST (CAPTCHA résolues) ont un champ appelé empreinte digitale, une chaîne calculée à partir du comportement de l'utilisateur. Je pense qu'il peut y avoir un champ sur cet emplacement de case à cocher. Je suppose que cette case à cocher est dans un système de coordonnées généré de manière aléatoire par le back-end de Google et chiffré par la clé publique de mon site. Ainsi, un robot peut "deviner / calculer" un emplacement à propos de cette zone, mais lorsque le propriétaire du site effectue la requête GET avec une clé privée pour vérifier l'identité de l'utilisateur, Google décryptera le système de coordonnées et dira si l'utilisateur clique au bon endroit. Donc, un seul clic droit possible (avec certains décalages, c'est une boîte carrée) dans ce système de coordonnées aléatoires appartenant uniquement à Google et aux propriétaires de sites.

hakunami
la source
Si le navigateur est assez bon pour afficher la boîte et détecter les clics, alors pourquoi un robot de piratage ne pourrait-il pas faire de même? Je pourrais cependant définir la position de la case à cocher sur une position très précise (en décimales), donc si un clic est détecté avec les mêmes décimales, cela signifie que c'est un robot qui n'a pas pris la peine d'ajouter des décimales aléatoires à la position du clic. Mais encore une fois, ce n'est pas infaillible.
Domino
Google est censé utiliser un algorithme `` d'apprentissage '' de sorte que si certains clients ayant les mêmes caractéristiques semblent toucher le même chemin général et le même temps général pour y arriver et que cela se produise 100 000 fois par jour, ils ne sont probablement pas légitimes.
Sirens
1
Il devrait être relativement facile de simuler un clic dans la zone carrée. Peu importe comment Google crypte les données avant de les envoyer.
Eugene C
0

N'oubliez pas que Google utilise également reCaptcha avec

Canvas fingerprinting 

pour reconnaître de manière unique les utilisateurs / navigateurs sans cookies!

Ingo
la source