¿Cómo funciona Google reCAPTCHA v2 detrás de escena?

303

Esta publicación hace referencia a Google ReCaptcha v2 (no la última versión)

Recientemente, Google introdujo un sistema simplificado de verificación de "captcha" ( video ) que permite a los usuarios pasar el "captcha" simplemente haciendo clic en él.

Pero, ¿cómo puede diferenciar un bot de una persona con solo un clic?

Según esta respuesta , (suponiendo una implementación similar), al principio "recaptcha" genera una clave oculta y la adjunta a un elemento de entrada oculto y también presenta de forma perezosa una casilla de verificación (no una casilla de verificación real inputsino a div) con la misma clave que cuando se hace clic, envía una solicitud asincrónica (XHR) a los servidores de back-end de Google para marcarla como una clave de verificación válida (es decir, una clave que debe validarse cuando se envía el formulario).

Pero, ¿por qué los bots no pueden automatizar ese clic (al menos, bots basados ​​en navegador)?

¿Cómo podría funcionar esto?

everlasto
fuente
1
Probablemente similar a la forma en que enviaban captchas simples a los humanos, y captchas difíciles a los bots
mukunda
1
La forma en que lo entendí es que todavía hay un captcha, pero a menos que haga solicitudes sospechosas, nunca tendrá que resolverlo.
Kelm
@Louie ¿Qué fue "robado"? Alguien hizo la misma pregunta y vinculó la misma (y única) publicación, pero está redactada de manera un poco diferente y ninguna de las respuestas es la misma. Además, la pregunta original de Quora se publicó el 3 de diciembre, un día antes de esta pregunta. ¿Cuál parece ser el problema?
wchargin
10
@CiroSantilli 六四 事件 法轮功 ¿qué diablos? el enlace se ha ido
TechLife
14
@TechLife cierto! Parece haberse mudado a github.com/neuroradiology/InsideReCaptcha ? Recordatorio: siempre bifurca cosas.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Respuestas:

200

Esto es especulación, pero según la referencia de Google al "motor de análisis de riesgos" que utilizan ( http://googleonlinesecurity.blogspot.com/2014/12/are-you-robot-introducing-no-captcha.html )

Supongo que se ve cómo te comportaste antes de hacer clic, cómo se movió el cursor en su camino hacia la marca de verificación (ruta orgánica / aceleración), en qué parte de la casilla de verificación se hizo clic (lugares aleatorios o muertos en el centro cada vez), navegador huella digital, cookies y contenido de Google, haga clic en el historial de ubicaciones vinculado a su huella digital o cuenta si detecta una, etc.

Es bastante difícil fingir un comportamiento "orgánico" de tal manera que engañaría a un motor de detección de patrones de aprendizaje continuo. En los casos en los que no está seguro, aún le solicita que coincida con una cadena CAPTCHA real.

AgmLauncher
fuente
73
Eso parece correcto y debería explicar por qué siempre tengo que escribir una cadena en mi PSVita con los palos. No se mueve como un mouse normal.
Domino
3
Me pregunto cómo reaccionaría Google ante una gran cantidad suficiente de comportamiento orgánico registrado.
Markus Malkusch
16
El movimiento del mouse definitivamente no contribuye a esto. Coloque el cursor justo en el lugar donde aparecería la casilla de verificación. Navegue al sitio sin mover el cursor. Haga clic en la casilla de verificación y pasará.
Derek 朕 會 功夫
3
@Derek, no creo que eso sea prueba de nada. Las cookies, la propiedad intelectual y muchos otros factores pueden contribuir a permitirle pasar antes de que retrocedan al movimiento del mouse. No tengo ganas de probarlo, pero si tuviera que disparar una computadora nueva desde una nueva IP y no usar el mouse, estoy dispuesto a apostar que fallará.
Caimen
13
Tenga en cuenta que también puede presionarlo y presionar la barra espaciadora.
JSideris
74

Se ha publicado un nuevo documento con varias pruebas contra reCAPTCHA:

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

Algunos puntos destacados:

  • Al mantener una cookie activa durante +9 días (al navegar por sitios con recursos de Google), puede pasar reCAPTCHA haciendo clic en la casilla de verificación;
  • No hay restricciones basadas en solicitudes por IP;
  • El agente de usuario del navegador debe ser real y Google ejecuta pruebas contra su entorno para asegurarse de que coincida con el agente de usuario;
  • Google prueba si el navegador puede representar un Canvas;
  • La resolución de pantalla y los eventos del mouse no afectan los resultados;

Google ya ha solucionado la vulnerabilidad de las cookies y probablemente está restringiendo algunos comportamientos basados ​​en IP.

Otro hallazgo interesante es que Google ejecuta una VM en JavaScript que ofusca gran parte del código y el comportamiento de reCAPTCHA. Esta VM se conoce como botguard y se usa para proteger otros servicios además de reCAPTCHA:

https://github.com/neuroradiology/InsideReCaptcha

ACTUALIZACIÓN 2017

Se publicó un artículo reciente (de agosto) en WOOT 2017 que alcanzó un 85% de precisión en la resolución de desafíos de audio noCAPTCHA reCAPTCHA:

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

ACTUALIZACIÓN 2018

Google presenta reCAPTCHA v3, que parece un "motor de predicción de puntaje humano" que está calibrado por sitio web. Se puede instalar en diferentes páginas de un sitio web (funciona como un script de Google Analytics) para ayudar a reCAPTCHA y al propietario del sitio web a comprender el comportamiento de los humanos frente a los bots antes de llenar un reCAPTCHA.

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

barbolo
fuente
44
mouse events don't affect the resultsEso es interesante, ya que yo (y creo que muchos otros) habían pensado que eso era lo principal que afectaba los resultados. Pensé que en el móvil en lugar de la casilla de verificación, se les pidió a los usuarios que seleccionaran todas las imágenes similares, porque no hay movimientos del mouse en una pantalla táctil. Sin embargo, mirando de nuevo la publicación introductoria del blog, parece que ese podría no ser el caso. Quizás seleccionar imágenes es en lugar de escribir texto distorsionado, no en lugar de marcar una casilla. ¿Sabes (o alguien) si reCAPTCHA permite simplemente marcar una casilla en el móvil?
Nateowami
Los eventos del mouse afectan los resultados. Si presiona Taby Enterpara seleccionar la casilla de verificación, se mostrará el captcha de imágenes para que pueda seleccionarlas según un criterio.
mbomb007
1
@ mbomb007 Los eventos del mouse pueden afectar los resultados, pero presionar Taby Enterno mostrarán la imagen captcha todo el tiempo. La mayoría de las veces presionando Taby Enteres aceptado
Manish Ojha
24

Mis Bots están funcionando bien contra ReCaptcha.

Aquí mi solución.

Deje que su Bot haga estos pasos:

Primero escriba una función de movimiento del mouse humano para mover su mouse como un B-Spline (Pídame el código fuente). Este es el punto mas importante.

También use para obtener mejores resultados una VPN como https://www.purevpn.com

Para cada Recpatcha, siga estos pasos:

  1. Si usa primero el interruptor de VPN IP

  2. Borrar todas las cookies del navegador

  3. Borrar todo el caché del navegador

  4. Establezca uno de estos Agentes de uso al azar:

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

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

5 Mueva su mouse con el mouse humano Mueva la función de un RandomPoint a la imagen No soy un robot cada vez con un rango aleatorio diferente de 10x10

  1. Luego haga clic siempre con retraso aleatorio entre

    WM_LBUTTONDOWN

    y

    WM_LBUTTONUP

  2. Tomar una captura de pantalla de Image Captcha

  3. Enviar captura de pantalla a

    http://www.deathbycaptcha.com

    o

    https://2captcha.com

y deja que resuelvan.

  1. Después de recibir click cooridinates del solucionador de captcha, use la función de movimiento del mouse humano para mover y haga clic en Recaptcha Images

  2. Use la función de movimiento del mouse humano para moverse y haga clic en el botón de verificación Recaptcha

En el 75% de todos los intentos, Recaptcha se resolverá

Chears Google

Tom

Ingo
fuente
2
¿Por qué necesita la "Función de movimiento del mouse humano"? Parece innecesario lograr tu objetivo.
barbolo
99
La función 'Movimiento del ratón humano' es el punto más importante. Google detecta dentro del captcha Mousespeed, MouseWay, MouseButton hacia abajo y hacia arriba Eventos, Clickpositions, Mouse EntryPoint en el captcha, ... y envía esta información a través de Javascript a la Base de datos de Google con muchos millones de Rastreos humanos reales de Mousemove. Después de interpretar toda esta información capturada, el Captcha marcará como resuelto, solo si el algoritmo de Google dice que fue un humano.
Ingo
3
@ barbolo: Consulte este blog oficial de Google security.googleblog.com/2014/12/… -> Google dice "Para contrarrestar esto, el año pasado desarrollamos un backend de Análisis de Riesgos Avanzado para reCAPTCHA que considera activamente la participación completa de un usuario con CAPTCHA -antes, durante y después de la para determinar si dicho usuario es un ser humano. "
Ingo
66
El paso 8 usa una API externa donde los humanos resuelven el captcha por usted. El bot no está resolviendo nada.
Andrea Lazzarotto
14
¿Soy solo yo, o es a la vez inquietante y fascinante para alguien que los escritores de bots están usando Stack Overflow para ayudar a resolver (y debatir sobre) los reCAPTCHA?
Ogre Psalm33
3

Puedo presentar mi suposición, ya que esta no es una tecnología abierta.

Google dice que se trata de combinar información de antes, durante y después para distinguir entre humanos y robots. Pero estoy más interesado en ese clic final en la casilla de verificación.

Digamos que los datos POST (CAPTCHA resuelto) tienen un campo llamado huella digital, una cadena calculada a partir del comportamiento del usuario. Creo que puede haber un campo sobre la ubicación de esa casilla de verificación. Supongo que esta casilla de verificación está en un sistema de coordenadas generado aleatoriamente por el back-end de Google y encriptado por la clave pública de mi sitio. Por lo tanto, un robot puede "adivinar / calcular" una ubicación sobre este cuadro, pero cuando el propietario del sitio realiza la consulta GET con clave privada para verificar la identidad del usuario, Google descifrará el sistema de coordenadas y dirá si el usuario hace clic en el lugar correcto. Por lo tanto, solo un posible clic derecho (con algunos desplazamientos, es un cuadro cuadrado) en este sistema de coordenadas aleatorias propiedad de Google y los propietarios del sitio.

hakunami
fuente
Si el navegador es lo suficientemente bueno como para mostrar el cuadro y detectar clics, ¿por qué un robot de piratería no podría hacer lo mismo? Sin embargo, podría establecer la posición de la casilla de verificación en una posición muy precisa (en decimales), por lo que si se detecta un clic con los mismos decimales, significa que es un robot que no se molestó en agregar decimales aleatorios a la posición del clic. Pero de nuevo, eso no es infalible.
Domino
Supuestamente, Google está utilizando un algoritmo de "aprendizaje", por lo que si algunos clientes con las mismas características parecen tocar el mismo camino general y el mismo tiempo general para llegar allí y esto sucedió 100,000 veces al día, probablemente no sean legítimos.
Sirenas
1
Debería ser relativamente fácil simular hacer clic en el área cuadrada. No importa cómo google cifra los datos antes de enviarlos.
Eugene C
0

Recuerde que Google también usa reCaptcha junto con

Canvas fingerprinting 

para reconocer de forma exclusiva a los usuarios / navegadores sin cookies!

Ingo
fuente