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

Добрый день
В целях самообразования - как строится защита плагина?
Например, есть такой плагин 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);


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

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 18:38
1500 руб./в час
19 апр. 2024, в 18:36
1500 руб./за проект
19 апр. 2024, в 18:36
30000 руб./за проект