¿Cómo funciona Google reCAPTCHA v2 entre bastidores?
Esta publicación se refiere a Google ReCaptcha v2 (no a la última versión)
Recientemente, Google introdujo un sistema de verificación de "captcha" simplificado ( vídeo ) que permite a los usuarios pasar el "captcha" simplemente haciendo clic en él.
Pero, ¿cómo se puede diferenciar un bot de una persona con sólo 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 representa de manera perezosa una casilla de verificación (no una casilla de verificación real input
sino una div
) con la misma clave que cuando se hace clic, envía una solicitud asincrónica (XHR) a los servidores backend 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, los bots basados en navegador)?
¿Cómo podría funcionar esto?
Esto es una especulación, pero se basa en la referencia de Google al "motor de análisis de riesgos" que utilizan ( http://googleonlinesecurity.blogspot.com/2014/12/are-you-robot-introduciendo-no-captcha.html ).
Supongo que analiza cómo se comportó antes de hacer clic, cómo se movió el cursor en su camino hacia la marca (ruta orgánica/aceleración), en qué parte de la casilla de verificación se hizo clic (lugares aleatorios o exactamente en el centro cada vez), navegador huella digital, cookies y contenidos de Google, historial de ubicación de clic 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ñe a un motor de detección de patrones que aprende continuamente. En los casos en los que no esté seguro, aún le solicitará que coincida con una cadena CAPTCHA real.
Se ha publicado un nuevo artículo 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 aspectos destacados:
- Al mantener una cookie activa durante más de 9 días (al navegar por sitios con recursos de Google), puede pasar reCAPTCHA con solo hacer clic en la casilla de verificación;
- No existen restricciones basadas en solicitudes por IP;
- El agente de usuario del navegador debe ser real y Google realiza pruebas en su entorno para garantizar que coincida con el agente de usuario;
- Google prueba si el navegador puede representar un Canvas;
- La resolución de la 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 las IP.
Otro hallazgo interesante es que Google ejecuta una máquina virtual en JavaScript que confunde gran parte del código y el comportamiento de reCAPTCHA. Esta VM se conoce como botguard y se utiliza 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 logra un 85% de precisión al resolver los desafíos de audio noCAPTCHA reCAPTCHA:
http://uncaptcha.cs.umd.edu/papers/uncaptcha_woot17.pdf
ACTUALIZACIÓN 2018
Google está presentando reCAPTCHA v3, que parece un "motor de predicción de puntuación humana" que se calibra 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 robots antes de completar un reCAPTCHA.
https://www.google.com/recaptcha/intro/v3beta.html
Mis Bots funcionan bien con ReCaptcha.
Aquí mi solución.
Deja que tu Bot haga estos pasos:
Primero escriba una función de movimiento del mouse humano para mover el mouse como un B-Spline (pregúnteme el código fuente). Este es el punto mas importante.
Utilice también para obtener mejores resultados una VPN como https://www.purevpn.com
Para cada Recpatcha, siga estos pasos:
Si usa VPN, cambie de IP primero
Borrar todas las cookies del navegador
Borrar todo el caché del navegador
Configure uno de estos Useragents al azar:
a. 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 Mueva su mouse con la función de movimiento del mouse humano desde un punto aleatorio a la imagen No soy un robot cada vez con un rango aleatorio diferente de 10x10
Luego haga clic siempre con un retraso aleatorio entre
WM_LBUTTONDOWN
y
WM_LBUTTONUP
Tomar captura de pantalla de Image Captcha
Enviar captura de pantalla a
http://www.deathbycaptcha.com
o
https://2captcha.com
y que lo resuelvan.
Después de recibir las coordenadas de clic del solucionador de captcha, use la función de movimiento del mouse humano para moverse y haga clic en Recaptcha Images
Utilice la función de movimiento del mouse humano para moverse y haga clic en el botón Verificar de Recaptcha
En un 75% todos los intentos de Recaptcha se resolverán.
Saludos a Google
Tomás
¿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 a los humanos de los robots. Pero lo que más me interesa es 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 cifrado 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 hay una ubicación posible para hacer clic con el botón derecho (con algunas compensaciones, es un cuadro cuadrado) en este sistema de coordenadas aleatorias que pertenece únicamente a Google y a los propietarios del sitio.