▸ Gana dineroPaso 1 gratis
Avisa al negocio antes de que su web caída le cueste clientes, y cóbrale cada mes por vigilarla
Una web puede caerse un sábado o quedarse sin candado porque nadie renovó el certificado, y el dueño se entera el lunes, cuando ya ha perdido reservas. Empiezas con un script que vigila webs cada minuto y te dice cuántos días le quedan al certificado; luego montas Uptime Kuma con avisos al móvil y una página de estado para cada cliente, y lo vendes como cuota mensual.
El negocio en 30 segundos
Los certificados que ponen el candado a una web duraban hasta 398 días, y el CA/Browser Forum aprobó bajarlos poco a poco hasta 47 días entre marzo de 2026 y marzo de 2029. Cada renovación que falle es una web con el aviso de «No seguro», y muchos negocios no tienen a nadie mirando.
- Lo que enseñas
- Le enseñas al dueño la página de estado de su web: «Este mes estuvo caída 3 horas el sábado por la noche. Con esto te habría llegado un aviso al móvil a los 2 minutos».
- Dónde están los clientes
- Negocios que viven de reservas o pedidos por la web: alojamientos, restaurantes con reservas, clínicas con cita online, tiendas online pequeñas. Y todos a los que ya les hiciste la web.
- Lo que recibe el cliente
- Avisos al instante cuando la web falla, una página de estado y un informe mensual.
- Se cobra
- Se cobra entre 15 y 40 € al mes por web vigilada, más si incluye arreglar las caídas (orientativo)
Los precios son orientativos: lo que se suele cobrar en España, no lo que vas a ganar. Depende de tu zona, tu oferta y de cuántos clientes contactes.
Al terminar tendrás
- Un script que vigila webs cada minuto y avisa si el certificado está a punto de caducar.
- Uptime Kuma funcionando, con avisos al móvil por Telegram.
- Una página de estado para cada cliente con el historial de su web.
- Un servicio con cuota mensual y la forma de ofrecerlo.
En esta misión · 8 pasos · 1 h 45 min
Lo que vas a usar
Así se ve · capturas oficiales
1 h 45 min €0 en tu ordenador · unos 4-6 €/mes si lo subes a un servidor 4 GB RAM · sin GPU macOS · Windows
Antes de empezar
- Saber abrir la terminal y copiar y pegar órdenes.
1Paso 01 de 08 · ~5 min
Vigila tus primeras webs
Premio en 5 minutos: el estado de 3 webs en tu terminal.
- 1
Abre la terminal. En Mac: pulsa Cmd+Espacio, escribe Terminal y pulsa Enter. En Windows: pulsa la tecla Windows, escribe PowerShell y pulsa Enter.
TerminalmacOSTerminalmacOS$mkdir ~/vigilancia$cd ~/vigilancia - 2
Crea dentro de esa carpeta un archivo llamado vigila.py, pega esto y guárdalo. Córrelo con las webs que quieras vigilar:
vigila.py1# Vigila webs cada minuto: si responden, cuánto tardan y cuántos días le quedan a su certificado. Solo usa Python.2import csv, datetime, socket, ssl, sys, time, urllib.error, urllib.parse, urllib.request34WEBS = [w if w.startswith("http") else "https://" + w for w in sys.argv[1:] if not w.startswith("--")] or ["https://www.boe.es"]56def dias_certificado(host):7 with socket.create_connection((host, 443), timeout=10) as s:8 with ssl.create_default_context().wrap_socket(s, server_hostname=host) as t:9 return int((ssl.cert_time_to_seconds(t.getpeercert()["notAfter"]) - time.time()) // 86400)1011def mira(web):12 inicio = time.time()13 try:14 with urllib.request.urlopen(urllib.request.Request(web, headers={"User-Agent": "vigila/1.0"}), timeout=20) as r:15 estado = r.status16 except urllib.error.HTTPError as e:17 estado = e.code18 except urllib.error.URLError as e:19 return ("CERTIFICADO MAL" if isinstance(e.reason, ssl.SSLError) else "CAÍDA"), 0, "", ""20 except Exception:21 return "CAÍDA", 0, "", ""22 try:23 dias = dias_certificado(urllib.parse.urlsplit(web).hostname)24 except Exception:25 dias = ""26 return ("bien" if estado < 400 else f"ERROR {estado}"), round(time.time() - inicio, 1), dias, ""2728print("Vigilando", len(WEBS), "webs cada minuto. Para salir: Ctrl+C")29while True:30 hora = datetime.datetime.now().strftime("%H:%M")31 with open("vigila.csv", "a", newline="", encoding="utf-8") as f:32 for web in WEBS:33 estado, segundos, dias, motivo = mira(web)34 aviso = f" ⚠ el certificado caduca en {dias} días" if dias != "" and dias < 15 else ""35 print(f"{hora} {estado:<15} {segundos:>5} s {web}{aviso} {motivo}")36 csv.writer(f).writerow([datetime.datetime.now().isoformat(timespec="minutes"), web, estado, segundos, dias])37 if "--una-vez" in sys.argv:38 break39 time.sleep(60)TerminalmacOS$python3 vigila.py www.boe.es expired.badssl.com una-web-que-no-existe-123.esAsí debería verse
La segunda web tiene a propósito el certificado caducado y la tercera no existe: deberían salir como «CERTIFICADO MAL» y «CAÍDA». Cada minuto escribe otra ronda y la apunta en vigila.csv.
Truco
🎉 Si ves una línea por web con su estado, ¡nivel 1 superado! Cambia las de prueba por la tuya y la de un cliente. Para parar: Ctrl+C.
¿Tu Mac dice «brew: command not found»? Instala Homebrew una vez
Homebrew es el instalador de programas que usamos en todas las misiones de Mac. Pega esto en la Terminal (es el comando oficial de brew.sh). Te pedirá la contraseña del Mac: al escribirla no se ve nada, es normal.
Instala HomebrewmacOS$/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Al terminar, copia y ejecuta las líneas que salen bajo «Next steps», cierra la Terminal y ábrela de nuevo. Comprueba con brew --version.
Comprueba que funcionaTienes vigila.csv con las primeras rondas.
Si algo falla (3)
- Sale «brew: command not found»
- Te falta Homebrew. Instálalo con el comando de su web oficial, brew.sh, cierra la terminal, ábrela otra vez y repite.
- En Windows dice que no reconoce el comando nuevo
- Cierra PowerShell y ábrelo otra vez: la ventana vieja no sabe que acabas de instalar algo. Si lo que no reconoce es winget, actualiza «Instalador de aplicación» desde Microsoft Store.
- Sale «CERTIFICATE_VERIFY_FAILED»
- Tu Python es el de python.org y no tiene los certificados. Abre Aplicaciones › Python 3.x y haz doble clic en «Install Certificates.command», o usa el python3 de Homebrew del paso 1.
¿Sigues atascado? Pregunta en la comunidad Avisar de un error en este paso
- 1
Lo que desbloqueas
7 pasos · 4 comandos · 2 errores típicos resueltos
- 2El mercado: por qué ahora~10 min
Certificados más cortos, más sustos.
- 3Monta Uptime Kuma~20 min
El panel de verdad, en tu ordenador.
3 comandos · 2 errores resueltos · comprobación incluida
- 4Avisos al móvil por Telegram~15 min
Te enteras tú antes que el dueño.
- 5Una página de estado para cada cliente~10 min
Lo que enseñas en la reunión.
- 6Déjalo encendido 24/7~20 min
Un servidor pequeño, no tu portátil.
1 comando · comprobación incluida
- 7Ponle precio y ofrécelo~15 min
Cuota mensual, no pago único.
- 8Repite y escala~10 min
Cada cliente nuevo, un minuto más.
Pasos 2–8 con el plan Anual
Primeros logros
Ya lo tienes funcionando. Pruébalo con esto:
El informe del mes
Para mandarlo con la factura.
Este es el registro de un mes de la web de mi cliente (fecha, estado, segundos, días de certificado): [pega las filas de vigila.csv o el resumen de Uptime Kuma]. Escríbeme un informe de 5 líneas para el dueño: cuánto tiempo estuvo bien, cuándo falló y cuánto, cómo de rápida fue y si hay algo que renovar pronto.
El aviso al prospect
Útil, no alarmista.
La web de un negocio que no es cliente mío ha estado caída [cuánto] hoy (o su certificado caduca en [días] días). Escríbeme lo que le diría por teléfono en 3 frases para avisarle, ofrecer ayuda sin presionar y preguntar si quiere que se lo vigile.
Siguiente nivel: una web de cliente en un día
A quien no tiene web, hazle una y vigílala.
Siguiente misiónCómo deshacerlo
Para Uptime Kuma con docker stop uptime-kuma y bórralo con docker rm uptime-kuma y docker volume rm uptime-kuma (se borran también los monitores). Borra la carpeta vigilancia.
$rm -rf ~/vigilancia$docker stop uptime-kuma$docker rm uptime-kuma$docker volume rm uptime-kumaHaciendo esta misión juntos
Sé de los primeros en terminarla. Si te atascas, pregunta: quien ya la hizo te puede ayudar.



