cfsolve es una librería y herramienta de línea de comandos escrita en Rust que permite resolver widgets de Cloudflare Turnstile y páginas de desafío sin necesidad de un navegador headless. El proyecto devuelve un token de Turnstile para los widgets o la cookie cf_clearance para las páginas de desafío, operando mediante la simulación de un navegador específico mediante archivos de perfil JSON.
La herramienta funciona resolviendo los desafíos basándose en la URL de la página, el sitekey y opcionalmente el HTML de la página. Para las páginas de desafío, requiere una petición directa o el HTML de la página. cfsolve impersona un navegador específico, descrito por un archivo de perfil, que incluye respuestas registradas a las comprobaciones del navegador almacenadas como JSON. Actualmente, solo se soportan los tipos de perfil Safari y Chrome(ium).
El proyecto incluye una estructura de directorios para mantener los perfiles y sus directorios asociados. La compilación requiere Rust, CMake, un compilador C/C++, libclang y Git. La herramienta ofrece opciones avanzadas como la selección de widgets específicos mediante sitekey, la capacidad de renderizar widgets en páginas en blanco y la integración con proxies para eludir restricciones de red. Además, proporciona una API en Rust para desarrolladores que permite resolver tanto widgets como desafíos de forma asíncrona, gestionando cookies y conexiones concurrentes. La documentación detalla los errores posibles, como la rechazo de Cloudflare o la falta de desafío, y ofrece ejemplos de código para integrar la librería en proyectos existentes.
