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.
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".
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-chromedriverpara evitar detección de bot- Horario inteligente para ahorrar requests
Versión básica con Selenium local. Funciona bien desde IPs residenciales (tu casa).
Usa Browserless.io (Chrome en la nube). Bloqueado por citaconsular.es por usar IPs de datacenter.
Versión con Bright Data proxy. Requiere pre-autorización del dominio en Bright Data.
Versión original que intenta usar la API directamente (no funciona porque la página requiere JavaScript).
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
- Python 3.8+
- Google Chrome instalado
- Cuenta de SmartProxy (para
monitor_smartproxy.py)
pip install selenium webdriver-manager undetected-chromedriver requests- Copia el archivo de configuración:
cp config.example.py config.py-
Edita
config.pycon tus credenciales:- SmartProxy API URL (obtenida de tu dashboard)
- Email y App Password de Gmail
- IP del servidor en whitelist de SmartProxy
-
Para Gmail, necesitas crear un "App Password":
- Ve a https://myaccount.google.com/apppasswords
- Crea una contraseña de aplicación
- Usa esa contraseña en la configuración (no tu contraseña normal)
python monitor_smartproxy.py --testpython monitor_smartproxy.pynohup python3 monitor_smartproxy.py > monitor.log 2>&1 &- Crea una cuenta en SmartProxy
- Configura un proxy residencial con:
- País: México
- Estado: Mexico City (opcional)
- Protocolo: HTTP
- Formato: host:port
- Agrega la IP de tu servidor al whitelist
- Copia la API URL generada a tu
config.py
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
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)
- 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
Uso personal. No me hago responsable del uso que le des.