CAPTCHA, acrónimo de 'Completely Automated Public Turing test to tell Computers and Humans Apart', es un tipo de prueba de desafío-respuesta utilizada en computación para determinar si el usuario es, o no, un humano. Su objetivo principal es prevenir el abuso de servicios web por parte de bots automatizados, protegiendo contra spam, ataques de fuerza bruta, scraping de datos y creación masiva de cuentas falsas. Funciona presentando una tarea que se presume que un humano puede resolver fácilmente, pero que es computacionalmente difícil para un programa de computadora. Las formas clásicas incluyen la transcripción de texto distorsionado o la identificación de objetos en imágenes.

En el mundo real, CAPTCHA se implementa ampliamente en una variedad de sistemas y herramientas. Google reCAPTCHA es quizás el ejemplo más prominente, evolucionando desde la transcripción de texto a desafíos basados en el comportamiento del usuario y la identificación de imágenes (ej. 'selecciona todas las imágenes con semáforos'). Otros ejemplos incluyen la protección de formularios de registro y comentarios en sitios web (WordPress, foros), la prevención de ataques de 'credential stuffing' en servicios de autenticación, la protección de APIs públicas contra el abuso de tasas de solicitud (rate limiting bypass), y la verificación de usuarios en plataformas de comercio electrónico para prevenir fraudes. Algunos sistemas utilizan variantes como 'honeypots' (campos ocultos para bots) o pruebas matemáticas simples.

Para un arquitecto de sistemas, la implementación de CAPTCHA implica consideraciones estratégicas y trade-offs significativos. Si bien mejora la seguridad y la integridad de los datos, puede degradar la experiencia del usuario (UX), especialmente para usuarios con discapacidades o en dispositivos móviles. La elección de una solución CAPTCHA (ej. reCAPTCHA v2 vs. v3, hCaptcha, o soluciones custom) depende del balance entre seguridad, usabilidad y privacidad. reCAPTCHA v3, por ejemplo, ofrece una experiencia 'invisible' pero puede generar falsos positivos. Un arquitecto debe evaluar el riesgo de abuso, el impacto en la conversión de usuarios y la complejidad de integración, así como las implicaciones de privacidad de enviar datos de usuario a terceros. La resiliencia del sistema frente a la evolución de las técnicas de evasión de bots también es una preocupación constante.