Este proyecto es una herramienta de automatización diseñada para facilitar el proceso de recuperación de contraseña en la plataforma SGA UNESR.
Debido a la infraestructura y posibles congestiones en la plataforma universitaria, el proceso de enviar el correo de recuperación puede fallar o indicar que se ha alcanzado el límite diario. Este script automatiza el intento de recuperación, reintentando automáticamente en caso de fallos o límites temporales hasta lograr el envío exitoso.
- Automatización con Selenium: Navega e interactúa como un usuario real.
- Manejo de Errores Robustos: Detecta caídas de red, timeouts y alertas de la aplicación.
- Bypass de Límites Temporales: Refresca y reintenta automáticamente si detecta notificaciones de "Límite diario alcanzado" (bajo la premisa de que a veces son falsos positivos o errores de conexión).
- Compatibilidad Linux/Snap: Configurado específicamente para funcionar con Firefox instalado vía Snap en Ubuntu/Linux.
- Python 3.8+
- Firefox Browser instalado (
/usr/bin/firefox) - Conexión a Internet estable
-
Clona este repositorio:
git clone https://github.com/tu-usuario/unesr_scraper.git cd unesr_scraper -
Crea un entorno virtual (opcional pero recomendado):
python3 -m venv venv source venv/bin/activate -
Instala las dependencias:
pip install -r requirements.txt
Ejecuta el script principal pasando el correo electrónico que deseas recuperar.
python3 main.py --email estudiante@ejemplo.com --retries 50--email(Requerido): El correo electrónico asociado a la cuenta UNESR.--retries(Opcional, default: 50): Número máximo de intentos antes de desistir por cada hilo.--threads(Opcional, default: 1): Número de navegadores simultáneos a lanzar (Paralelismo).--headless(Opcional): Ejecuta el navegador sin interfaz gráfica.
Ejemplo de ataque de recuperación masivo (3 hilos):
python3 main.py --email estudiante@ejemplo.com --threads 3 --headlessEl proyecto ha sido refactorizado siguiendo principios de separación de responsabilidades:
src/config/: Configuraciones y constantes globales.src/core/: Lógica central de infraestructura (Driver Factory).src/services/: Lógica de negocio (Scraper y flujos de recuperación).src/utils/: Utilidades transversales (Logging, etc).main.py: Punto de entrada de la aplicación.
Error: "Process unexpectedly closed with status 1" en Linux
Este script crea automáticamente un directorio temporal en ~/tmp_firefox para solucionar conflictos de permisos con la versión Snap de Firefox. No es necesario realizar configuraciones adicionales.
Este proyecto está bajo la Licencia MIT. Úsalo bajo tu propia responsabilidad y con fines éticos.