Skip to content

Daxer97/h-c

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

32 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“¬ TempMail + Higgsfield Auto-Registration Bot

Bot Telegram con:

  • Email temporanee via mail.tm API
  • Auto-registrazione Higgsfield via Playwright headless
  • Page monitor che ti avvisa su Telegram se la struttura della pagina cambia
  • Proxy rotation per IP rotation

Quick Start (Docker)

# 1. Clona e configura
cp .env.example .env
# Modifica .env β†’ inserisci TELEGRAM_BOT_TOKEN e ADMIN_CHAT_ID

# 2. Build e run
docker compose up -d

# 3. Verifica logs
docker compose logs -f

Quick Start (senza Docker)

Richiede Python 3.12+ e le dipendenze di sistema per Chromium.

# 1. Installa dipendenze di sistema (Debian/Ubuntu)
sudo apt-get update && sudo apt-get install -y \
    wget ca-certificates fonts-liberation libasound2t64 \
    libatk-bridge2.0-0 libatk1.0-0 libcups2 libdbus-1-3 \
    libdrm2 libgbm1 libgtk-3-0 libnspr4 libnss3 \
    libx11-xcb1 libxcomposite1 libxdamage1 libxrandr2 xdg-utils

# 2. Crea virtual environment e installa dipendenze Python
python3 -m venv .venv
source .venv/bin/activate
pip install -r bot/requirements.txt

# 3. Installa Chromium per Playwright
playwright install chromium

# 4. Configura environment
cp .env.example .env
# Modifica .env β†’ inserisci TELEGRAM_BOT_TOKEN e ADMIN_CHAT_ID
# Cambia LOG_DIR se vuoi (default: /app/logs)
#   LOG_DIR=./logs

# 5. Avvia il bot
cd bot
python main.py

Nota: il watchdog (watchdog/main.py) monitora container Docker, quindi ha senso solo dentro Docker. Senza Docker il bot gira comunque β€” perdi solo il monitoraggio infrastruttura.

Comandi Bot

πŸ“§ Email Temporanee

Comando Descrizione
/newemail Crea email temporanea
/check Controlla inbox
/wait Attendi messaggio (polling 2 min)
/read <n> Leggi messaggio n
/links Estrai link dall'ultimo messaggio
/info Mostra email attiva + ultima registrazione

πŸš€ Higgsfield

Comando Descrizione
/register Auto-registrazione completa (email β†’ form β†’ verifica)

πŸ” Monitor & Diagnostica

Comando Descrizione
/monitor_status Stato del monitor
/monitor_check Forza check immediato della struttura pagina
/notif_status Status del notification bus

Architettura

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ OVERLAY β€” tempmail-bot (container)                   β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”‚
β”‚  β”‚ Mail     β”‚ Higgsfield   β”‚ Page Monitor     β”‚     β”‚
β”‚  β”‚ Service  β”‚ Service      β”‚ (Playwright)     β”‚     β”‚
β”‚  β”‚ (aiohttp)β”‚ (Playwright) β”‚                  β”‚     β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚
β”‚  Health endpoint :8080/health                        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ UNDERLAY β€” watchdog (sidecar container)              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”‚
β”‚  β”‚ Docker Eventsβ”‚ Health Check β”‚ Host Metrics β”‚     β”‚
β”‚  β”‚ (socket)     β”‚ (HTTP poll)  β”‚ (psutil)     β”‚     β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ NOTIFICATION BUS (shared da entrambi i container)    β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚
β”‚  β”‚ Telegram β”‚ β”‚ Webhook  β”‚ β”‚ File/Console β”‚         β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚              Proxy Layer (opzionale)                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Flusso /register:

  1. Crea email su mail.tm
  2. Lancia Chromium headless β†’ naviga sign-up
  3. Compila form con digitazione simulata
  4. Polling mail.tm per email di verifica
  5. Estrae link β†’ naviga per conferma
  6. Restituisce credenziali su Telegram

Flusso Monitor:

  1. All'avvio, acquisisce baseline (fingerprint struttura pagina)
  2. Ogni N secondi (MONITOR_INTERVAL), ricalcola fingerprint
  3. Se l'hash cambia β†’ alert su Telegram via ADMIN_CHAT_ID
  4. Il fingerprint traccia: input fields, buttons, iframes (CAPTCHA), forms

Proxy

Supporta HTTP e SOCKS5. Configura in .env:

# Singolo proxy
PROXY_LIST=socks5://user:pass@proxy1:1080

# Rotazione (random ad ogni richiesta)
PROXY_LIST=socks5://user:pass@proxy1:1080,http://proxy2:8080,socks5://proxy3:1080

Il proxy Γ¨ usato sia da Playwright (browser) che da aiohttp (API mail.tm).

Selectors

Se il monitor rileva un cambiamento, aggiorna i selectors in bot/config.py:

SELECTORS = {
    "email_input": 'input[type="email"], input[name="email"]',
    "password_input": 'input[type="password"]',
    "submit_button": 'button[type="submit"]',
    ...
}

I selectors usano una catena di fallback (prioritΓ  da sinistra a destra).

Watchdog (System Monitor)

Container sidecar che monitora l'infrastruttura β€” quello che il bot non puΓ² monitorare da solo.

Cosa monitora

Monitor Cosa rileva Severity
Docker Events die, OOM kill, restart, stop, kill signal CRITICAL/WARNING
Restart Loop 3+ restart in 5 minuti CRITICAL
Health Check Bot non risponde su /health ERROR
CPU Sopra soglia (default 90%) WARNING/ERROR
RAM Sopra soglia (default 85%) WARNING/ERROR
Disco Sopra soglia (default 90%) WARNING/ERROR

Come funziona

Il watchdog si aggancia al Docker socket (/var/run/docker.sock, read-only) e ascolta eventi in tempo reale. Per le metriche host usa psutil. Per la salute del bot, pinga http://tempmail-bot:8080/health via rete interna Docker.

Tutte le notifiche passano per lo stesso NotificationBus del bot β€” stessi endpoint (Telegram, webhook, file).

PerchΓ© un container separato?

Un processo non puΓ² monitorare la propria morte. Se il bot crasha per OOM, il suo codice Python non gira β€” non puΓ² mandarti nulla. Il watchdog sopravvive e ti avvisa.

Notification System

Architettura pub/sub pluggabile per instradare errori, crash e lifecycle events verso qualsiasi endpoint.

Python Logging β†’ LoggingBridge β†’ NotificationBus β†’ [Telegram, Webhook, File]
sys.excepthook β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
asyncio.exception_handler β”€β”€β”€β”€β”€β”€β”€β”˜

Notifier inclusi

Notifier Trigger Config
File/Console Sempre attivo (safety net) LOG_DIR
Telegram Se ADMIN_CHAT_ID presente TELEGRAM_BOT_TOKEN + ADMIN_CHAT_ID
Webhook Se WEBHOOK_URL presente WEBHOOK_URL + WEBHOOK_FORMAT

Aggiungere un notifier custom

from notifications import BaseNotifier, Event, NotificationBus

class SlackNotifier(BaseNotifier):
    async def send(self, event: Event) -> bool:
        # la tua logica qui
        return True

bus = NotificationBus.get_bus()
bus.register(SlackNotifier(name="slack", min_severity=Severity.ERROR))

Severity levels

DEBUG β†’ INFO β†’ WARNING β†’ ERROR β†’ CRITICAL

Ogni notifier ha un min_severity β€” riceve solo eventi >= quel livello.

Rate Limiting

I comandi piΓΉ pesanti hanno un cooldown per-utente per evitare abusi e OOM:

Comando Cooldown
/register 60s
/monitor_check 30s
/newemail 10s

Le istanze Chromium sono serializzate (max 1 alla volta) per restare nel limite di memoria del container.

Limiti e Note

  • Stato in-memory β€” si resetta al riavvio del container
  • mail.tm rate limit β€” 8 req/sec per IP (gestito con retry automatico)
  • Immagine Docker β€” ~800MB (Chromium incluso)
  • Memoria β€” il container usa fino a ~500MB durante registrazione (Chromium)
  • ToS β€” l'automazione viola i termini di servizio di Higgsfield

About

h-c

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors