Phishing.exe · detector con IA
Pegas un email y te dice si parece phishing y, sobre todo, por qué: qué palabras han pesado en la decisión de la IA y qué señales de alerta ha encontrado. Todo ocurre en tu navegador.
En pocas palabras
- 98,1 %
- de acierto con 3.508 emails que el modelo no vio al entrenar
- 14.028
- emails reales para entrenar
- 130 KB
- pesa el modelo entero, que corre en el navegador
- 0 servidores
- el texto del email no sale de tu ordenador
Resultados
| Exactitud | Precisión | Sensibilidad | F1 |
|---|---|---|---|
| 98,1 % | 97,0 % | 97,8 % | 0,974 |
Cómo se usa
-
Paso 1
Carga el email
Pégalo en el recuadro (se analiza solo), usa Pegar y analizar, abre un archivo .eml o .txt, arrástralo encima, o prueba uno de los ejemplos.
-
Paso 2
Lee el veredicto
Cinco respuestas posibles: phishing probable, sospechoso, spam o publicidad, sin señales de alerta o parece seguro. Debajo, cuánto se parece a phishing según la IA y cuántas señales de alerta hay.
-
Paso 3
Entiende el porqué
Cada señal de alerta explica qué ha visto y dónde (un enlace a una IP, prisas, que te pida la contraseña…). Las palabras que pesaron en la IA salen en rosa si empujan hacia phishing y en verde si empujan hacia un email normal, y se marcan en el propio texto.
-
Paso 4
En español, mandan las reglas
La IA aprendió con emails en inglés. Si reconoce menos del 60 % del texto, no opina y lo dice; el veredicto lo deciden las señales de alerta, que sí funcionan en español.
-
Paso 5
Mira cómo está evaluado
El panel del modelo enseña su exactitud, precisión y sensibilidad, y la matriz de aciertos y fallos con emails que no vio al entrenar.
Qué incluye
IA explicable
Cada palabra tiene un peso visible.
Señales de alerta
Reglas en español e inglés.
Privado
Nada se envía a ningún servidor.
Cualquier forma de cargar
Pegar, archivo .eml o arrastrar.
Sabe decir «no lo sé»
Si no entiende el idioma, lo dice.
Español e inglés
Interfaz y ejemplos.
Cómo está hecho
- Dataset17.536 emails reales (LGPL-3.0)
- EntrenamientoPython · TF-IDF + regresión logística
- modelo.json130 KB: palabras, pesos e idf
- Tu navegadorla misma cuenta en JS + reglas
Decisiones técnicas
Un modelo sencillo, a propósito
La regresión logística da a cada palabra un peso: se puede enseñar exactamente por qué decide lo que decide, y cabe en un JSON pequeño que el navegador ejecuta sin servidor.
Quité las «trampas» del dataset
La primera versión acertaba un 98,4 %, pero sus palabras favoritas para decir «seguro» eran enron o vince: aprendía de qué colección venía cada email, no si era phishing. Al quitarlas generaliza mejor a emails reales.
La IA sabe cuándo callarse
Antes de opinar mira qué parte del texto reconoce: en inglés ronda el 90 % y en otros idiomas baja del 40 %. Por debajo del 60 % no opina, y el veredicto lo explica.
El JSON se comprueba con tests
El navegador repite a mano la cuenta de scikit-learn (TF-IDF sublineal, normalización y sigmoide). Un test verifica que da las mismas probabilidades.
Calidad y tests
- Tests con pytest en cada push (GitHub Actions): el JSON exportado reproduce a scikit-learn y no contiene palabras-trampa del dataset.
- Evaluado con un 20 % de los emails apartado desde el principio, manteniendo la proporción de cada clase.
- Límites a la vista: aprendió en inglés y el dataset mezcla phishing con spam comercial, por eso existe el veredicto «spam o publicidad».
Pruébalo en tu ordenador
pip install -r requirements.txt
python -m detector.modelo # descarga el dataset, entrena y genera web/modelo.json
pytest
python -m http.server -d web # y abre http://localhost:8000
¿Hablamos?
Si quieres saber más de este proyecto o de cómo trabajo, escríbeme.