Volver a Inicio
Volver a Otaingenio Lab
MOODLE · HERRAMIENTAS JUNIO 2026
Script listo para producción

Script Anti-Copia Inteligente para Moodle

Bloquea a estudiantes. Se desactiva solo para ti. Sin configuración extra.

Este script es la versión inteligente: le da 1,5 segundos a Moodle para cargar tu interfaz, busca la palabra "Administración del sitio" (en español o inglés) o tus selectores de edición, y si te detecta como Manager o Admin, se apaga por completo para que trabajes libre. Si entra un estudiante, activa todos los bloqueos en milisegundos.

¿Qué hace exactamente?

Espera 1,5 seg.

Da margen a Moodle para renderizar menús asincrónicos antes de evaluar el rol.

Detecta Admin

Busca "Administración del sitio", selectores de edición y M.cfg.userid de Moodle.

Se apaga para ti

Si eres Manager o Admin, el script se detiene. Cero bloqueos para el gestor.

Bloquea al alumno

Para estudiantes activa: sin clic derecho, sin selección de texto, sin F12 ni Ctrl+C.

Dónde pegarlo en tu Moodle

1

Entra en Administración del sitio desde el menú lateral de Moodle.

2

Ve a AparienciaHTML adicional

3

Pega el código completo en el cuadro "Dentro del HEAD" (Within HEAD).

4

Guarda los cambios. Listo. Entra con una cuenta de estudiante para comprobar que los bloqueos funcionan.

El código

HTML / JavaScript
<script>
document.addEventListener("DOMContentLoaded", function() {

    function evaluarSeguridad() {
        // 1. Buscar texto de administración (independiente del tema visual)
        let tieneMenuAdmin = false;
        document.querySelectorAll('a, span, button, p').forEach(el => {
            let txt = el.innerText.toLowerCase();
            if (txt.includes('administración del sitio') || txt.includes('site administration')) {
                tieneMenuAdmin = true;
            }
        });

        // 2. Comprobaciones técnicas por selectores y variables de Moodle
        let isManager = tieneMenuAdmin ||
                        document.querySelector('[data-key="siteadmin"]') ||
                        document.querySelector('.editmode-switch') ||
                        document.querySelector('#editmode-switch') ||
                        document.querySelector('a[href*="/admin/"]') ||
                        (window.M && window.M.cfg && window.M.cfg.userid === 2);

        // Si eres Manager/Admin, el script se detiene aquí
        if (isManager) {
            console.log("Otaingenio: Rol de gestión detectado. Protecciones desactivadas.");
            return;
        }

        // 3. Si es estudiante, se ejecutan los bloqueos
        document.addEventListener('contextmenu', event => event.preventDefault());

        let antiSelectStyle = document.createElement('style');
        antiSelectStyle.innerHTML = 'body, html, iframe, p, div, span { -webkit-user-select: none !important; -moz-user-select: none !important; -ms-user-select: none !important; user-select: none !important; }';
        document.head.appendChild(antiSelectStyle);

        document.onkeydown = function(e) {
            if (e.keyCode == 123) { return false; }                             // F12
            if (e.ctrlKey && e.shiftKey && e.keyCode == 'I'.charCodeAt(0)) { return false; }  // DevTools
            if (e.ctrlKey && e.shiftKey && e.keyCode == 'C'.charCodeAt(0)) { return false; }  // Inspect
            if (e.ctrlKey && e.shiftKey && e.keyCode == 'J'.charCodeAt(0)) { return false; }  // Console
            if (e.ctrlKey && e.keyCode == 'U'.charCodeAt(0)) { return false; }        // Ver código fuente
            if (e.ctrlKey && e.keyCode == 'C'.charCodeAt(0)) { return false; }        // Copiar
        };
    }

    // Margen de 1,5s para que Moodle pinte los menús asincrónicos de Admin
    setTimeout(evaluarSeguridad, 1500);
});
</script>
Nota técnica importante Este script opera en el lado del cliente (frontend). Un usuario con conocimientos técnicos puede desactivarlo. Su función es disuadir el copiado casual y proteger el contenido de cursos del 95% del alumnado. No reemplaza la protección en servidor ni los derechos de autor.
Artículos relacionados