Skip to content

rsarmi/consulado

Repository files navigation

Monitor de Citas - Consulado de España en México

Sistema automatizado para monitorear la disponibilidad de citas en el Consulado de España en México (citaconsular.es). Cuando detecta posible disponibilidad, envía una notificación por email.

Problema

El sistema de citas del consulado (citaconsular.es) raramente tiene disponibilidad. Las citas se liberan de forma impredecible y se agotan en minutos. Este monitor revisa periódicamente y te notifica cuando detecta que no aparece el mensaje "No hay horas disponibles".

Versiones Disponibles

1. monitor_smartproxy.py (Recomendado)

Usa SmartProxy con IPs residenciales de México para evitar bloqueos por IP de datacenter.

Características:

  • Proxy residencial dinámico (nueva IP cada revisión)
  • undetected-chromedriver para evitar detección de bot
  • Horario inteligente para ahorrar requests

2. monitor_selenium.py

Versión básica con Selenium local. Funciona bien desde IPs residenciales (tu casa).

3. monitor_browserless.py

Usa Browserless.io (Chrome en la nube). Bloqueado por citaconsular.es por usar IPs de datacenter.

4. monitor_brightdata.py

Versión con Bright Data proxy. Requiere pre-autorización del dominio en Bright Data.

5. monitor_citas.py

Versión original que intenta usar la API directamente (no funciona porque la página requiere JavaScript).

Horario Inteligente

Para ahorrar recursos y requests del proxy:

  • NO corre: 1am-6am (nadie libera citas de madrugada)
  • NO corre: Fines de semana
  • 10am-4pm: Solo al minuto :01 de cada hora (hora pico)
  • Resto del horario: Cada 10 minutos

Instalación

Requisitos

  • Python 3.8+
  • Google Chrome instalado
  • Cuenta de SmartProxy (para monitor_smartproxy.py)

Dependencias

pip install selenium webdriver-manager undetected-chromedriver requests

Configuración

  1. Copia el archivo de configuración:
cp config.example.py config.py
  1. Edita config.py con tus credenciales:

    • SmartProxy API URL (obtenida de tu dashboard)
    • Email y App Password de Gmail
    • IP del servidor en whitelist de SmartProxy
  2. Para Gmail, necesitas crear un "App Password":

Uso

Modo de prueba (ejecuta inmediatamente):

python monitor_smartproxy.py --test

Modo normal (sigue el horario inteligente):

python monitor_smartproxy.py

En servidor Linux (con nohup):

nohup python3 monitor_smartproxy.py > monitor.log 2>&1 &

Configuración de SmartProxy

  1. Crea una cuenta en SmartProxy
  2. Configura un proxy residencial con:
    • País: México
    • Estado: Mexico City (opcional)
    • Protocolo: HTTP
    • Formato: host:port
  3. Agrega la IP de tu servidor al whitelist
  4. Copia la API URL generada a tu config.py

Estado Actual

El script funciona correctamente para:

  • Obtener proxy residencial de México
  • Verificar que la IP es residencial (no datacenter)
  • Navegar a la página del consulado

Problema pendiente: citaconsular.es parece detectar Chrome headless incluso con IP residencial y retorna HTML vacío. Posibles soluciones:

  • Usar Xvfb para display virtual
  • Probar Playwright con stealth plugin
  • Ejecutar desde una máquina con display real

Estructura del Proyecto

consulado/
├── README.md                 # Este archivo
├── config.example.py         # Ejemplo de configuración
├── requirements.txt          # Dependencias Python
├── .gitignore               # Archivos ignorados por Git
├── monitor_smartproxy.py    # Versión con SmartProxy (recomendada)
├── monitor_selenium.py      # Versión básica Selenium
├── monitor_browserless.py   # Versión Browserless.io
├── monitor_brightdata.py    # Versión Bright Data
└── monitor_citas.py         # Versión original (API directa)

Notas de Seguridad

  • NUNCA subas tus credenciales reales a Git
  • Usa variables de entorno o un archivo config.py (ignorado por .gitignore)
  • El App Password de Gmail es específico para esta aplicación

Licencia

Uso personal. No me hago responsable del uso que le des.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages