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

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.