Inicio Apuntes FPApuntes DAW Deshabilitar combinaciones de teclas y menú contextual del ratón

Deshabilitar combinaciones de teclas y menú contextual del ratón

Publicado por entreunosyceros
Publicado el: Última actualización:

AVISO: Esta entrada tiene más de dos años desde su publicación. Es posible que el contenido esté desactualizado.

Este artículo voy a dejarlo aquí colgado por un comentario que un usuario ha dejado en otra entrada de esta página. En aquel artículo hablaba sobre como reproducir fácilmente archivos m3u8 en tu página web. En el comentario el usuario preguntaba sobre como esconder la url de las emisiones m3u8. El objetivo que buscaría sería que otros usuarios no puedan, o al menos tengan más complicado obtener estas direcciones. Evidentemente esto es complicado. Utilizando programas para ello se va a poder obtener fácilmente. Utilizando el código que voy a dejar aquí colocado, podremos evitar que son un simple navegador los usuarios puedan sacar nuestras URL de streaming utilizando el botón derecho del ratón o algunas combinaciones de teclas.

deshabilitar combinaciones de teclas y ratónProtege tu código fuente deshabilitando combinaciones de teclas y el menú contextual del ratón en tu página web

Como digo, con el código javascript que voy a compartir en este artículo, nos va a proteger (de primeras) el código fuente de nuestra página. Si alguien quiere ver el código funcionando, puede hacerlo en este enlace.

Para empezar, hay que decir que en la página que queremos proteger, solo tendremos que añadir un script para cargar el archivo .js. En este ejemplo, dentro de la página de muestra he cargado el siguiente script:

<script language='JavaScript' src='hotkey.js'></script>

Este script, como todo el mundo sabe (o debería saber) irá dentro del head de nuestra página. Como se puede ver en el código, el archivo en el que vamos a guardar el código para deshabilitar combinaciones de teclas y el menú contextual del ratón, se llama hotkey.js. Este lo guardo en la misma carpeta en la que tengo el archivo en el que cargo el script.

Bueno, pues ahora aquí va el código para bloquear el acceso al código fuente.

Archivo JavaScript para eliminar el acceso al código fuente de la página web

Como he dicho, el archivo en mi caso lo llamo hotkey.js, y el código es el siguiente (tal cual):

document.oncontextmenu = function(){return false;}
shortcut = {
    all_shortcuts: {},
      add: function (e, t, n) {
        var r = {
          type: "keydown",
          propagate: !1,
          disable_in_input: !1,
          target: document,
          keycode: !1
        };
        if (n) for (var i in r) "undefined" == typeof n[i] && (n[i] = r[i]);
        else n = r;
        r = n.target, "string" == typeof n.target && (r = document.getElementById(n.target)), e = e.toLowerCase(), i = function (r) {
          r = r || window.event;
          if (n.disable_in_input) {
            var i;
            r.target ? i = r.target : r.srcElement && (i = r.srcElement), 3 == i.nodeType && (i = i.parentNode);
            if ("INPUT" == i.tagName || "TEXTAREA" == i.tagName) return
          }
          r.keyCode ? code = r.keyCode : r.which && (code = r.which), i = String.fromCharCode(code).toLowerCase(), 188 == code && (i = ","), 190 == code && (i = ".");
          var s = e.split("+"),
            o = 0,
            u = {
              "`": "~",
              1: "!",
              2: "@",
              3: "#",
              4: "$",
              5: "%",
              6: "^",
              7: "&",
              8: "*",
              9: "(",
              0: ")",
              "-": "_",
              "=": "+",
              ";": ":",
              "'": '"',
              ",": "<",
              ".": ">",
              "/": "?",
              "\\": "|"
            }, f = {
              esc: 27,
              escape: 27,
              tab: 9,
              space: 32,
              "return": 13,
              enter: 13,
              backspace: 8,
              scrolllock: 145,
              scroll_lock: 145,
              scroll: 145,
              capslock: 20,
              caps_lock: 20,
              caps: 20,
              numlock: 144,
              num_lock: 144,
              num: 144,
              pause: 19,
              "break": 19,
              insert: 45,
              home: 36,
              "delete": 46,
              end: 35,
              pageup: 33,
              page_up: 33,
              pu: 33,
              pagedown: 34,
              page_down: 34,
              pd: 34,
              left: 37,
              up: 38,
              right: 39,
              down: 40,
              f1: 112,
              f2: 113,
              f3: 114,
              f4: 115,
              f5: 116,
              f6: 117,
              f7: 118,
              f8: 119,
              f9: 120,
              f10: 121,
              f11: 122,
              f12: 123
            }, l = !1,
            c = !1,
            h = !1,
            p = !1,
            d = !1,
            v = !1,
            m = !1,
            y = !1;
          r.ctrlKey && (p = !0), r.shiftKey && (c = !0), r.altKey && (v = !0), r.metaKey && (y = !0);
          for (var b = 0; k = s[b], b < s.length; b++) "ctrl" == k || "control" == k ? (o++, h = !0) : "shift" == k ? (o++, l = !0) : "alt" == k ? (o++, d = !0) : "meta" == k ? (o++, m = !0) : 1 < k.length ? f[k] == code && o++ : n.keycode ? n.keycode == code && o++ : i == k ? o++ : u[i] && r.shiftKey && (i = u[i], i == k && o++);
          if (o == s.length && p == h && c == l && v == d && y == m && (t(r), !n.propagate)) return r.cancelBubble = !0, r.returnValue = !1, r.stopPropagation && (r.stopPropagation(), r.preventDefault()), !1
        }, this.all_shortcuts[e] = {
          callback: i,
          target: r,
          event: n.type
        }, r.addEventListener ? r.addEventListener(n.type, i, !1) : r.attachEvent ? r.attachEvent("on" + n.type, i) : r["on" + n.type] = i
      },
      remove: function (e) {
        var e = e.toLowerCase(),
          t = this.all_shortcuts[e];
        delete this.all_shortcuts[e];
        if (t) {
          var e = t.event,
            n = t.target,
            t = t.callback;
          n.detachEvent ? n.detachEvent("on" + e, t) : n.removeEventListener ? n.removeEventListener(e, t, !1) : n["on" + e] = !1
        }
      }
    },
     shortcut.add("Ctrl+U",function(){
     alert('Se siente\nLa combinación CTRL+U no está disponible. Se creativo!')
    }),
     shortcut.add("Meta+Alt+U",function(){
     alert('Se siente\nCommand+Option+U no disponible. Se creativo!')
    }),
    shortcut.add("Ctrl+C",function(){
     alert('Lo siento\nNunca dupliques este artículo...')
    }),
    shortcut.add("Meta+C",function(){
     alert('Lo siemto\nNunca dupliques este artículo...')
    });

Como digo, esta es solo una opción básica de como proteger «mínimamente» el código fuente de una página web. Con lo que podremos evitar que con un navegador un usuario pueda acceder de primeras a la URL de carga de un streaming. Pero es evidente que utilizando programas a mayores esta protección no será efectiva.

También te puede interesar ...

Deja un comentario

* Al utilizar este formulario, aceptas que este sitio web almacene y maneje tus datos.

2 Comentarios

Jimmy Olano 18 marzo, 2018 - 11:44 PM

¿Cómo desactiva los menús desplegables? En Firefox 59 -> Herramientas -Desarrollador Web -> Código fuente de la página.

Respuesta
sapoclay 19 marzo, 2018 - 12:00 AM

Hola. Los menús desplegables del navegador, no veo factible hacerlo XD. Como creo que escribí en el artículo, esto no es un método infalible. Solo disuade a unos pocos. Salu2 y gracias por el comentario.

Respuesta
Resumen de privacidad
cookies entreunosyceros

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible.

La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudarnos a comprender qué secciones de la web encuentras más interesantes y útiles.

Nunca almacenamos información personal de ningún tipo.

Tienes toda la información sobre privacidad, derechos legales y cookies en nuestra página sobre la política de privacidad o en la página sobre nuestra política de cookies.

Cookies necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Si desactivas esta cookie no podremos guardar tus preferencias. Esto significa que cada vez que visites esta web tendrás que activar o desactivar las cookies de nuevo.

Cookies de terceros

Esta web utiliza las siguientes cookies adicionales:

- Mailchimp: Recordar si ya estás suscrito al boletín de noticias y sino ofrecértelo al salir.

- Accesibilidad: Para saber tus ajustes de accesibilidad en cada visita.

- Comentarios: Saber si has leído y aceptado nuestra política de privacidad a la hora de dejar un comentario en la web.

- Google Analytics: Localización para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

- Goggle Adsense: Anuncios personalizados según tu geolocalización y preferencias.

Dejar estas cookies activadas nos permite mejorar nuestra web.

Adblock Detectado!!

Ayúdanos deshabilitando la extensión AdBlocker de tu navegador para visitar esta web.
Si no sabes hacerlo en Chrome, consulta el siguiente enlace. Si utilizas Firefox, puedes consultar este otro enlace.
Esto mejorará tu experiencia en este sitio web.