Как строится защита плагина?

Добрый день
В целях самообразования - как строится защита плагина?
Например, есть такой плагин https://jsfiddle.net/aqr2k5y6/

Как я понял вся суть в этом коде

function u() {
        return String.fromCharCode.apply(null, arguments)
    }
    var A, O, z, B, F, L, N, K, U, W, J, j, D, i = "ScrollSmoother",
        a = u(103, 114, 101, 101, 110, 115, 111, 99, 107, 46, 99, 111, 109),
        t = (function (e) {
            var t = "undefined" != typeof window,
                r = 0 === (t ? window.location.href : "").indexOf(u(102, 105, 108, 101, 58, 47, 47)) || -1 !== e.indexOf(u(108, 111, 99, 97, 108, 104, 111, 115, 116)) || -1 !== e.indexOf(u(49, 50, 55, 46, 48, 32, 48, 46, 49)),
                n = [a, u(99, 111, 100, 101, 112, 101, 110, 46, 105, 111), u(99, 111, 100, 101, 112, 101, 110, 46, 112, 108, 117, 109, 98, 105, 110, 103), u(99, 111, 100, 101, 112, 101, 110, 46, 100, 101, 118), u(99, 111, 100, 101, 112, 101, 110, 46, 97, 112, 112), u(99, 111, 100, 101, 112, 101, 110, 46, 119, 101, 98, 115, 105, 116, 101), u(112, 101, 110, 115, 46, 99, 108, 111, 117, 100), u(99, 115, 115, 45, 116, 114, 105, 99, 107, 115, 46, 99, 111, 109), u(99, 100, 112, 110, 46, 105, 111), u(112, 101, 110, 115, 46, 105, 111), u(103, 97, 110, 110, 111, 110, 46, 116, 118), u(99, 111, 100, 101, 99, 97, 110, 121, 111, 110, 46, 110, 101, 116), u(116, 104, 101, 109, 101, 102, 111, 114, 101, 115, 116, 46, 110, 101, 116), u(99, 101, 114, 101, 98, 114, 97, 120, 46, 99, 111, 46, 117, 107), u(116, 121, 109, 112, 97, 110, 117, 115, 46, 110, 101, 116), u(116, 119, 101, 101, 110, 109, 97, 120, 46, 99, 111, 109), u(116, 119, 101, 101, 110, 108, 105, 116, 101, 46, 99, 111, 109), u(112, 108, 110, 107, 114, 46, 99, 111), u(104, 111, 116, 106, 97, 114, 46, 99, 111, 109), u(119, 101, 98, 112, 97, 99, 107, 98, 105, 110, 46, 99, 111, 109), u(97, 114, 99, 104, 105, 118, 101, 46, 111, 114, 103), u(99, 111, 100, 101, 115, 97, 110, 100, 98, 111, 120, 46, 105, 111), u(99, 115, 98, 46, 97, 112, 112), u(115, 116, 97, 99, 107, 98, 108, 105, 116, 122, 46, 99, 111, 109), u(115, 116, 97, 99, 107, 98, 108, 105, 116, 122, 46, 105, 111), u(99, 111, 100, 105, 101, 114, 46, 105, 111), u(109, 111, 116, 105, 111, 110, 116, 114, 105, 99, 107, 115, 46, 99, 111, 109), u(115, 116, 97, 99, 107, 111, 118, 101, 114, 102, 108, 111, 119, 46, 99, 111, 109), u(115, 116, 97, 99, 107, 101, 120, 99, 104, 97, 110, 103, 101, 46, 99, 111, 109), u(106, 115, 102, 105, 100, 100, 108, 101, 46, 110, 101, 116)],
                o = n.length;
            for (setTimeout(function checkWarn() {
                    t && ("loading" === document.readyState || "interactive" === document.readyState ? document.addEventListener("readystatechange", checkWarn) : (document.removeEventListener("readystatechange", checkWarn), t && window.console && !window._gsapWarned && "object" == typeof window.gsap && !1 !== window.gsap.config().trialWarn && (console.log(u(37, 99, 87, 97, 114, 110, 105, 110, 103), u(102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 51, 48, 112, 120, 59, 99, 111, 108, 111, 114, 58, 114, 101, 100, 59)), console.log(u(65, 32, 116, 114, 105, 97, 108, 32, 118, 101, 114, 115, 105, 111, 110, 32, 111, 102, 32) + i + u(32, 105, 115, 32, 108, 111, 97, 100, 101, 100, 32, 116, 104, 97, 116, 32, 111, 110, 108, 121, 32, 119, 111, 114, 107, 115, 32, 108, 111, 99, 97, 108, 108, 121, 32, 97, 110, 100, 32, 111, 110, 32, 100, 111, 109, 97, 105, 110, 115, 32, 108, 105, 107, 101, 32, 99, 111, 100, 101, 112, 101, 110, 46, 105, 111, 32, 97, 110, 100, 32, 99, 111, 100, 101, 115, 97, 110, 100, 98, 111, 120, 46, 105, 111, 46, 32, 42, 42, 42, 32, 68, 79, 32, 78, 79, 84, 32, 68, 69, 80, 76, 79, 89, 32, 84, 72, 73, 83, 32, 70, 73, 76, 69, 32, 42, 42, 42, 32, 76, 111, 97, 100, 105, 110, 103, 32, 105, 116, 32, 111, 110, 32, 97, 110, 32, 117, 110, 97, 117, 116, 104, 111, 114, 105, 122, 101, 100, 32, 115, 105, 116, 101, 32, 118, 105, 111, 108, 97, 116, 101, 115, 32, 116, 104, 101, 32, 108, 105, 99, 101, 110, 115, 101, 32, 97, 110, 100, 32, 119, 105, 108, 108, 32, 99, 97, 117, 115, 101, 32, 97, 32, 114, 101, 100, 105, 114, 101, 99, 116, 46, 32, 80, 108, 101, 97, 115, 101, 32, 106, 111, 105, 110, 32, 67, 108, 117, 98, 32, 71, 114, 101, 101, 110, 83, 111, 99, 107, 32, 116, 111, 32, 103, 101, 116, 32, 102, 117, 108, 108, 32, 97, 99, 99, 101, 115, 115, 32, 116, 111, 32, 116, 104, 101, 32, 98, 111, 110, 117, 115, 32, 112, 108, 117, 103, 105, 110, 115, 32, 116, 104, 97, 116, 32, 98, 111, 111, 115, 116, 32, 121, 111, 117, 114, 32, 97, 110, 105, 109, 97, 116, 105, 111, 110, 32, 115, 117, 112, 101, 114, 112, 111, 119, 101, 114, 115, 46, 32, 68, 105, 115, 97, 98, 108, 101, 32, 116, 104, 105, 115, 32, 119, 97, 114, 110, 105, 110, 103, 32, 119, 105, 116, 104, 32, 103, 115, 97, 112, 46, 99, 111, 110, 102, 105, 103, 40, 123, 116, 114, 105, 97, 108, 87, 97, 114, 110, 58, 32, 102, 97, 108, 115, 101, 125, 41, 59)), console.log(u(37, 99, 71, 101, 116, 32, 117, 110, 114, 101, 115, 116, 114, 105, 99, 116, 101, 100, 32, 102, 105, 108, 101, 115, 32, 97, 116, 32, 104, 116, 116, 112, 115, 58, 47, 47, 103, 114, 101, 101, 110, 115, 111, 99, 107, 46, 99, 111, 109, 47, 99, 108, 117, 98), u(102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 49, 54, 112, 120, 59, 99, 111, 108, 111, 114, 58, 35, 52, 101, 57, 56, 49, 53)), window._gsapWarned = 1)))
                }, 50); - 1 < --o;)
                if (-1 !== e.indexOf(n[o])) return;
            r || setTimeout(function () {
                t && (window.location.href = u(104, 116, 116, 112, 115, 58, 47, 47) + a + u(47, 114, 101, 113, 117, 105, 114, 101, 115, 45, 109, 101, 109, 98, 101, 114, 115, 104, 105, 112, 47) + "?plugin=" + i + "&source=trial")
            }, 3e3)
        }("undefined" != typeof window ? window.location.host : ""), ScrollSmoother.register = function register(e) {
            return O || (A = e || r(), q() && window.document && (z = window, B = document, F = B.documentElement, L = B.body), A && (N = A.utils.toArray, K = A.utils.clamp, J = A.parseEase("expo"), U = A.core.globals().ScrollTrigger, A.core.globals("ScrollSmoother", ScrollSmoother), L && U && (j = U.core._getVelocityProp, D = U.core._inputObserver, ScrollSmoother.refresh = U.refresh, O = 1))), O
        }, function _createClass(e, t, r) {
            return t && _defineProperties(e.prototype, t), r && _defineProperties(e, r), e
        }(ScrollSmoother, [{
            key: "progress",
            get: function get() {
                return this.scrollTrigger ? this.scrollTrigger.animation._time / 100 : 0
            }
        }]), ScrollSmoother);


Подскажите, как здесь строиться защита, и где об этом почитать?
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
Negezor
@Negezor
Senior Shaurma Developer
Невозможно защитить то —что является публичным. Максимум усложнить процесс реверс инжиниринга. Для "защиты" можно использовать обфускацию.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 08:04
1 руб./за проект
22 нояб. 2024, в 06:06
1500 руб./в час
22 нояб. 2024, в 06:04
1 руб./за проект