Kidsec Analytics
Overview
Detects risky text and suspicious links on social platforms to protect minors online. Requires local Kidsec Analytics backend.
KIDSEC ANALYTICS — EXTENSIÓN DE MONITOREO DE SEGURIDAD DIGITAL PARA MENORES ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ¿QUÉ ES KIDSEC ANALYTICS? ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Kidsec Analytics es una extensión de Chrome diseñada para padres, tutores y cuidadores que desean monitorear activamente la seguridad digital de menores de edad en plataformas de comunicación y entretenimiento en línea. La extensión analiza el texto visible en pantalla y los mensajes escritos por el menor en plataformas específicas, detecta señales de riesgo mediante un motor de reglas local, y envía alertas al backend de Kidsec Analytics instalado en el computador del hogar. Esta extensión NO es un filtro de contenido ni bloquea acceso a sitios web. Es una herramienta de observación pasiva que registra señales de riesgo para que el adulto responsable pueda revisar, analizar y actuar. IMPORTANTE: Esta extensión requiere que el software backend de Kidsec Analytics esté instalado y en ejecución en el mismo computador donde se usa Chrome. Sin el backend activo, la extensión no puede registrar ni enviar ninguna alerta. El backend se comunica exclusivamente a través de http://127.0.0.1:8000 (localhost), lo que significa que ningún dato sale del computador del hogar hacia servidores externos de Kidsec Analytics. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ PLATAFORMAS MONITOREADAS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ La extensión únicamente actúa en los siguientes dominios. En cualquier otro sitio web permanece completamente inactiva: • ROBLOX — roblox.com y todos sus subdominios Canal detectado: game-chat (chat dentro de juegos) • TIKTOK — tiktok.com y todos sus subdominios Canal detectado: social-feed (feed general) o live-feed (cuando la URL contiene /live) • DISCORD — discord.com y discordapp.com Canal detectado: chat • TWITCH — twitch.tv y todos sus subdominios Canal detectado: live-chat (chat en transmisiones en vivo) • STEAM — steamcommunity.com y store.steampowered.com Canal detectado: game-chat • WHATSAPP WEB — web.whatsapp.com Canal detectado: chat • TELEGRAM WEB — web.telegram.org Canal detectado: chat En cada plataforma, la extensión identifica automáticamente el tipo de canal (chat privado, feed social, chat de juego, transmisión en vivo) para que las alertas incluyan el contexto correcto. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ CÓMO FUNCIONA LA DETECCIÓN — PASO A PASO ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ La extensión opera en dos capas: un script de contenido que corre dentro de la página web, y un service worker en segundo plano que gestiona el envío al backend. PASO 1 — OBSERVACIÓN DE LA PÁGINA Cuando el menor navega a una de las plataformas soportadas, el script de contenido comienza a observar el texto visible en pantalla usando un MutationObserver. Esto significa que cada vez que aparece contenido nuevo en la página (mensajes nuevos, comentarios cargados, respuestas recibidas), el script lo analiza automáticamente. Solo se analiza texto que: - Esté visible en pantalla (elementos con display distinto de "none" y visibility distinto de "hidden") - Tenga entre 4 y 280 caracteres de longitud - Pertenezca a nodos de texto dentro de elementos HTML visibles Los nodos detectados se procesan en lotes de hasta 24 elementos, con una demora de 350 milisegundos entre lotes, para minimizar el impacto en el rendimiento del navegador. PASO 2 — OBSERVACIÓN DE TEXTO ESCRITO POR EL MENOR Además del contenido visible, la extensión también monitorea lo que el menor escribe activamente. Para esto escucha cuatro eventos del navegador: - Evento "input": detecta texto mientras se escribe en campos de texto, áreas de texto y elementos editables (contenteditable). El texto se recuerda temporalmente por 4 segundos. - Evento "change": cuando un campo pierde el foco con contenido nuevo, analiza el texto inmediatamente. - Evento "keydown" con tecla Enter: analiza el texto en el momento exacto en que el menor presiona Enter para enviar un mensaje. - Evento "click" en botones: cuando el menor hace clic en un botón (button, [role="button"] o elementos con aria-label), si existe texto recordado de los últimos 4 segundos, se analiza en ese momento. Este mecanismo permite capturar mensajes que el menor está a punto de enviar, incluso si el chat recarga la interfaz antes de que el MutationObserver lo detecte. PASO 3 — ANÁLISIS DEL TEXTO Cada fragmento de texto pasa por el motor de análisis local (risk-lexicons). El motor realiza los siguientes pasos: 3a. NORMALIZACIÓN: El texto se convierte a minúsculas, se eliminan tildes y diacríticos (normalización NFKD), y se colapsan espacios múltiples. Esto permite detectar variantes como "MÁNDAME" o "mánd4me" como equivalentes a "mandame". 3b. ANÁLISIS DE CATEGORÍAS DE RIESGO: El texto normalizado se compara contra cuatro categorías de patrones. Cada categoría tiene un peso numérico que define su gravedad: ► GROOMING (peso: 3 puntos) Frases que indican posible manipulación sexual de menores: "mandame una foto", "mandame una foto ahora", "foto intima", "no le digas a tus padres", "ven sola", "eres muy madura para tu edad", "quiero verte sin ropa" ► SOLICITUD DE DATOS PERSONALES (peso: 3 puntos) Frases que intentan obtener información personal del menor: "dame tu numero", "pasame tu numero", "comparteme tu whatsapp", "donde vives", "pasa tu direccion", "enviame tu ubicacion", "donde estudias" ► CIBERACOSO (peso: 2 puntos) Frases con intención de hostigamiento o daño psicológico: "nadie te quiere", "te odio", "vete a morir", "te voy a humillar", "todos se van a burlar", "das asco", "eres un fracaso" ► MALAS PALABRAS / LENGUAJE OFENSIVO (peso: 1 punto) Insultos y lenguaje soez en español e inglés: "puta", "puto", "mierda", "idiota", "imbecil", "estupido", "perra", "marica", "bitch", "fuck you" 3c. ANÁLISIS DE URLS: El motor extrae todas las URLs presentes en el texto mediante expresión regular. Cada URL es evaluada para determinar si es sospechosa. Se marcan como sospechosas las URLs que cumplan cualquiera de estas condiciones: - Usan servicios acortadores de URL conocidos: bit.ly, cutt.ly, tinyurl.com, t.ly, is.gd, ow.ly, tiny.cc, rebrand.ly - Tienen dominios de nivel superior (TLD) asociados a phishing o scams: .zip, .click, .cam, .gq, .work, .top, .xyz, .support - Contienen fragmentos de hostname sospechosos: "grabify" (rastreadores de IP), "free-robux", "steamgift", "nitro" (scams de Discord Nitro), "bonus", "giveaway", "gift" - Son direcciones IP directas (ejemplo: http://185.45.20.1/pagina) - Usan protocolo HTTP inseguro hacia dominios externos (no localhost) - Usan codificación punycode (xn--) que puede disfrazar dominios falsos Cada URL sospechosa detectada suma 2 puntos al score del fragmento. Se registran hasta 3 URLs sospechosas por análisis. 3d. BONUS DE CONTEXTO: Si el score es mayor que cero después de las categorías anteriores, se suma 1 punto adicional según la plataforma donde ocurrió: +1 punto en Roblox o Steam → razón: "contexto juego/chat" +1 punto en Discord, WhatsApp o Telegram → razón: "contexto chat" +1 punto en TikTok o Twitch → razón: "contexto social/live" El bonus refleja que el riesgo es mayor en entornos donde adultos pueden contactar menores fácilmente. 3e. NIVEL DE SEVERIDAD: El score final determina el nivel de severidad de la señal: Score 1-2 → LOW (bajo) Score 3-4 → MEDIUM (medio) Score 5-6 → HIGH (alto) Score 7 o más → CRITICAL (crítico) PASO 4 — DEDUPLICACIÓN EN EL SCRIPT DE CONTENIDO Antes de enviar una señal al service worker, el script verifica si la misma combinación de plataforma + canal + texto + URLs ya fue enviada en los últimos 5 minutos. Si es así, la señal se descarta para evitar duplicados por el mismo contenido. PASO 5 — FILTROS DEL SERVICE WORKER El service worker aplica filtros adicionales antes de enviar al backend: - Si el tracking está deshabilitado en la configuración, todas las señales se descartan. - Si el score de la señal es menor que el umbral mínimo configurado (por defecto: 2), la señal se omite. - Si la misma señal (misma combinación de minorId + plataforma + canal + texto + URLs + razones) fue enviada dentro del período de cooldown configurado (por defecto: 15 segundos), se omite para no saturar el backend. - La deduplicación del service worker mantiene un registro de señales enviadas por hasta 10 minutos. PASO 6 — ENVÍO AL BACKEND LOCAL Si la señal pasa todos los filtros, el service worker envía una petición HTTP POST a http://127.0.0.1:8000 (el backend de Kidsec Analytics en el computador local). El payload incluye: - Texto completo de la señal (máximo 180 caracteres) - Extracto del texto - URL de la página donde ocurrió - Nombre de la plataforma (ROBLOX, TIKTOK, DISCORD, etc.) - Tipo de canal (chat, game-chat, live-chat, social-feed, live-feed) - Score numérico calculado - Nivel de severidad (LOW / MEDIUM / HIGH / CRITICAL) - Lista de razones detectadas (hasta 5 razones) - Lista de URLs sospechosas encontradas (hasta 3) - ID del menor (número entero configurado por el tutor) El backend procesa esta información, la registra en la base de datos local, y puede enviar una alerta por WhatsApp al tutor si está configurado con Twilio. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ INDICADOR VISUAL EN LA BARRA DE CHROME ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ El ícono de la extensión en la barra de herramientas de Chrome muestra en tiempo real el estado de la extensión mediante un badge (etiqueta de color): OFF (gris azulado) — El tracking está deshabilitado. La extensión no envía nada. OK (verde oscuro) — La última señal fue enviada exitosamente al backend. SKP (amarillo/naranja) — La última señal fue omitida (por cooldown o por score bajo). ERR (rojo) — El último intento de envío falló (backend no disponible o error de red). Hacer clic en el ícono abre la página de configuración de la extensión. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ PÁGINA DE CONFIGURACIÓN (OPTIONS) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ La página de opciones permite al tutor personalizar el comportamiento de la extensión. Se accede haciendo clic en el ícono de Kidsec Analytics en Chrome. Los parámetros disponibles son: 1. URL DEL BACKEND (apiBaseUrl) Valor por defecto: http://127.0.0.1:8000 La dirección donde está corriendo el backend de Kidsec Analytics. En la mayoría de los casos no necesita cambiarse. Si el backend corre en un puerto diferente, se actualiza aquí. 2. TOKEN DE AUTENTICACIÓN (token) Un token secreto que el backend valida para autenticar las peticiones de la extensión. Se configura una sola vez al instalar el sistema. Sin un token válido, el backend rechaza las peticiones. 3. ID DEL MENOR (minorId) Un número entero entre 1 y 999.999 que identifica al menor siendo monitoreado. Esto permite que un tutor con varios menores en su cargo (varios perfiles en el backend) distinga qué alertas corresponden a quién. 4. TRACKING HABILITADO (trackingEnabled) Interruptor de encendido/apagado. Cuando está desactivado, la extensión observa la página pero NO envía ninguna señal al backend. El badge muestra "OFF". El tutor puede pausar el monitoreo temporalmente sin desinstalar la extensión. 5. COOLDOWN EN SEGUNDOS (cooldownSeconds) Rango: 0 a 3.600 segundos. Valor por defecto: 15 segundos. Tiempo mínimo que debe pasar entre dos envíos de la misma señal idéntica al backend. Evita saturar el backend con alertas repetidas del mismo contenido. Un valor de 0 desactiva el cooldown. 6. SCORE MÍNIMO PARA ENVIAR (minScoreToSend) Rango: 1 a 10. Valor por defecto: 2. Solo se envían al backend señales cuyo score calculado sea mayor o igual a este valor. Con el valor por defecto de 2, señales de solo 1 punto (una mala palabra aislada sin contexto) son descartadas silenciosamente. Aumentar este valor reduce la sensibilidad; disminuirlo la aumenta. La página de configuración también incluye dos botones de diagnóstico: BOTÓN "VERIFICAR BACKEND": Envía una petición GET a /api/health en el backend configurado. Si responde con HTTP 200, confirma que el backend está activo y alcanzable. Si falla, muestra el error. BOTÓN "ENVIAR SEÑAL DE PRUEBA": Envía una señal de prueba predefinida al backend para verificar que todo el flujo funciona correctamente. La señal de prueba simula el siguiente escenario: texto "mandame una foto ahora y entra a https://bit.ly/robux" detectado en WhatsApp Web, con score 6, severidad HIGH, razones "grooming", "link sospechoso", "contexto chat". Esto es útil para confirmar que las alertas llegan correctamente sin necesidad de que el menor esté presente. Debajo del formulario se muestra el registro de la última actividad de la extensión: nivel (OK/SKP/ERR/OFF), mensaje descriptivo, y marca de tiempo en formato Colombia (es-CO). ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ PERMISOS UTILIZADOS Y POR QUÉ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Esta extensión solicita dos permisos de Chrome: PERMISO "storage" Usado para guardar y recuperar la configuración de la extensión. Los ajustes del tutor (token, minorId, cooldown, etc.) se guardan en chrome.storage.sync para persistir entre sesiones. El registro de la última actividad (badge) se guarda en chrome.storage.local. NO se usa storage para guardar historial de mensajes del menor dentro del navegador. PERMISO "tabs" Usado únicamente para obtener la URL completa de la pestaña activa en el momento en que el service worker recibe una señal del content script. Esto complementa la URL reportada por el script de contenido, en caso de que la URL de la pestaña sea más precisa. NO se usa para leer el contenido de otras pestañas ni para rastrear el historial de navegación. Los host_permissions (permisos de acceso a dominios específicos) están restringidos a: - Las siete plataformas soportadas (Roblox, TikTok, Discord, Twitch, Steam, WhatsApp Web, Telegram Web) - http://127.0.0.1:8000/* y http://localhost:8000/* para comunicarse con el backend local La extensión NO tiene acceso a ningún otro sitio web. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ PRIVACIDAD Y MANEJO DE DATOS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ DATOS QUE SE PROCESAN LOCALMENTE: Todo el análisis de texto ocurre dentro del navegador, en el dispositivo del hogar. El motor de detección (risk-lexicons) corre completamente en el script de contenido, sin enviar el texto a ningún servidor externo para su análisis. DATOS QUE SE ENVÍAN AL BACKEND LOCAL: Cuando se detecta una señal de riesgo, se envía a http://127.0.0.1:8000 (el computador del hogar) la siguiente información: el fragmento de texto que activó la alerta (máximo 180 caracteres), la plataforma, el canal, el score, la severidad, las razones, las URLs sospechosas encontradas, y el ID del menor. Esta información NUNCA sale del computador del hogar hacia servidores de Kidsec Analytics ni terceros. DATOS QUE NO SE RECOPILAN: - Contraseñas, tokens o credenciales de las plataformas monitoreadas - Historial de navegación completo - Capturas de pantalla - Pulsaciones de teclado de manera indiscriminada (keylogger). Solo se analiza el texto de campos de entrada en las plataformas soportadas, y solo cuando hay eventos específicos: input, change, Enter, o clic en botón de envío - Conversaciones completas: solo fragmentos que activen una señal de riesgo - Datos de ubicación - Información del dispositivo o del sistema operativo ALMACENAMIENTO EN EL NAVEGADOR: La extensión usa chrome.storage.sync para guardar la configuración (URL del backend, token, minorId, estado del tracking, cooldown, umbral de score) y chrome.storage.local para el registro de la última actividad del badge. No se guarda ningún mensaje o texto del menor en el almacenamiento del navegador.
0 out of 5No ratings
Details
- Version1.1.0
- UpdatedMay 8, 2026
- Offered bycsamueljjz
- Size20.13KiB
- Languagesespañol
- Developer
Email
csamueljjz@gmail.com - Non-traderThis developer has not identified itself as a trader. For consumers in the European Union, please note that consumer rights do not apply to contracts between you and this developer.
Privacy
Kidsec Analytics has disclosed the following information regarding the collection and usage of your data. More detailed information can be found in the developer's privacy policy.
Kidsec Analytics handles the following:
This developer declares that your data is
- Not being sold to third parties, outside of the approved use cases
- Not being used or transferred for purposes that are unrelated to the item's core functionality
- Not being used or transferred to determine creditworthiness or for lending purposes