Bot automatizado para enviar códigos de verificación de Netflix por WhatsApp, con aprobación automática de solicitudes de Hogar.
- 📧 Detección automática: Escucha correos de Netflix en tiempo real (IMAP IDLE con imapflow)
- 📱 WhatsApp automático: Envía códigos al contacto correcto según el perfil
- 🏠 Aprobación de Hogar: Hace clic automático en enlaces de aprobación de Netflix
- 📸 Alertas al admin: Si falla la aprobación, envía screenshot al administrador
- 🪶 Ultra liviano: Bot y Dashboard como servicios separados
- 📊 Dashboard en tiempo real: WebSocket para actualizaciones instantáneas
- 💾 Logs: Registro SQLite de todos los códigos enviados
┌──────────────────────┐ ┌─────────────────────┐
│ pnpm start │ ◄─────► │ pnpm run dashboard │
│ (Bot ligero) │ ws:// │ (Dashboard web) │
│ Puerto: 3001 │ 3001 │ Puerto: 3000 │
│ WhatsApp + Gmail │ │ UI + Historial │
└──────────────────────┘ └─────────────────────┘
- Bot (ligero): Procesa correos y envía WhatsApp. Expone WebSocket en puerto 3001.
- Dashboard (opcional): Interfaz web que se conecta al bot para estado en tiempo real.
cd netflix-code-bot
pnpm installSi usas npm:
npm install
cd node_modules/.pnpm/better-sqlite3@*/node_modules/better-sqlite3
npm run build-release-
Copia el archivo de ejemplo:
cp .env.example .env
-
Genera una Contraseña de Aplicación de Gmail:
- Ve a: https://myaccount.google.com/apppasswords
- Selecciona "Correo" y "Mac"
- Copia la contraseña de 16 caracteres
-
Edita
.envcon tus datos:GMAIL_USER=tu_correo@gmail.com GMAIL_APP_PASSWORD=xxxx_xxxx_xxxx_xxxx ADMIN_PHONE=521234567890
Edita contacts.json con los perfiles de Netflix y números de WhatsApp:
{
"profiles": {
"Mamá": "521234567890",
"Papá": "521234567891",
"Hermano": "521234567892"
}
}
⚠️ Los números deben incluir código de país sin + ni espacios (ej: 52 para México)
pnpm startLa primera vez te pedirá escanear un código QR con WhatsApp:
- Abre WhatsApp en tu teléfono
- Ve a Configuración > Dispositivos vinculados
- Escanea el código QR
En otra terminal:
pnpm run dashboardAccede a: http://localhost:3000
El dashboard muestra:
- 🤖 Estado del bot: Activo/Inactivo
- 📱 WhatsApp: Conectado/Desconectado
- 📧 Gmail: Conectado/Desconectado
- 📋 Historial en tiempo real: Logs instantáneos
- 📇 Filtro por contacto: Click para filtrar
Crea un archivo ~/.netflix-bot-start.sh:
#!/bin/bash
cd /path/to/netflix-code-bot
pnpm start
⚠️ Importante: Antes de usar LaunchAgent, ejecutapnpm startmanualmente al menos una vez para escanear el código QR de WhatsApp.
-
El proyecto incluye
start.shque se usa como punto de entrada. -
Crea
~/Library/LaunchAgents/com.netflix-code-bot.plist:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.netflix-code-bot</string> <key>ProgramArguments</key> <array> <string>/Users/bryanvargas/.nvm/versions/node/v24.12.0/bin/node</string> <string>src/index.js</string> </array> <key>WorkingDirectory</key> <string>/Users/bryanvargas/Developer/netflix-code-bot</string> <key>EnvironmentVariables</key> <dict> <key>PATH</key> <string>/Users/bryanvargas/.nvm/versions/node/v24.12.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string> </dict> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <true/> <key>StandardOutPath</key> <string>/Users/bryanvargas/Developer/netflix-code-bot/data/bot.log</string> <key>StandardErrorPath</key> <string>/Users/bryanvargas/Developer/netflix-code-bot/data/bot-error.log</string> </dict> </plist>
-
Carga el servicio:
launchctl load ~/Library/LaunchAgents/com.netflix-code-bot.plist -
Verificar estado:
launchctl list | grep netflix # Debería mostrar un PID (número) si está corriendo
-
Ver logs:
tail -f data/bot.log tail -f data/bot-error.log
-
Detener/Reiniciar:
# Detener launchctl unload ~/Library/LaunchAgents/com.netflix-code-bot.plist # Reiniciar launchctl unload ~/Library/LaunchAgents/com.netflix-code-bot.plist launchctl load ~/Library/LaunchAgents/com.netflix-code-bot.plist
netflix-code-bot/
├── src/
│ ├── index.js # Bot principal
│ ├── dashboard.js # Dashboard web (WebSocket cliente)
│ └── services/
│ ├── gmail.js # IMAP con imapflow
│ ├── whatsapp.js # WhatsApp con Baileys
│ ├── browser.js # Puppeteer para clics automáticos
│ ├── botStatus.js # WebSocket server (puerto 3001)
│ └── database.js # SQLite
├── dashboard/
│ └── public/
│ └── index.html # UI del dashboard
├── data/ # Datos (creado automáticamente)
│ ├── whatsapp-auth/ # Sesión de WhatsApp
│ └── netflix-bot.db # Base de datos SQLite
├── contacts.json # Mapeo de perfiles a números
├── .env # Variables de entorno
└── package.json
-
WhatsApp: Este bot usa Baileys (no oficial). Evita spam para no ser bloqueado.
-
Gmail: Usa una Contraseña de Aplicación, no tu contraseña normal. sitio web: https://myaccount.google.com/apppasswords
-
Seguridad: No compartas
.envnidata/whatsapp-auth/. -
Admin: Configura
ADMIN_PHONEpara recibir alertas cuando falla la aprobación automática.
- Verifica que la Contraseña de Aplicación sea correcta
- Asegúrate de tener verificación en 2 pasos en Gmail
- Elimina
data/whatsapp-auth/y escanea el QR nuevamente
- Agrega el perfil exactamente como aparece en el correo de Netflix
lsof -ti:3000 | xargs kill -9
lsof -ti:3001 | xargs kill -9MIT - Hecho con ❤️ para automatizar tu vida