Компресор JavaScript

вторник, 18 ноября 2008, Александр Краковецкий

Відомо, що JavaScript код завжди доступний разом з HTML. По цій причині захистити даний код (якщо така необхідність існує) доволі важко. Виходить, що розробивши чудовий AJAX-ефект і виклавши його на сайті, автор свідомо віддає його всім у довічне користування. Що робити?

Дану проблему частково можна вирішити за допомогою JavaScript компресора. За його допомогою "декодування" JavaScript коду стану справжнім випробуванням...

Розглянемо деякий скрипт:

// Navigation - Stop
// Netscapes Clock - Start
// this code was taken from Netscapes JavaScript documentation at
// www.netscape.com on Jan.25.96

var timerID = null;
var timerRunning = false;

function stopclock (){
if(timerRunning)
clearTimeout(timerID);
timerRunning = false;
}

function showtime () {
var now = new Date();
var hours = now.getHours();
var minutes = now.getMinutes();
var seconds = now.getSeconds()
var timeValue = "" + ((hours >12) ? hours -12 :hours)
timeValue += ((minutes < 10) ? ":0" : ":") + minutes
timeValue += ((seconds < 10) ? ":0" : ":") + seconds
timeValue += (hours >= 12) ? " P.M." : " A.M."
window.status = timeValue;
// you could replace the above with this
// and have a clock on the status bar:
//
timerID = setTimeout("showtime()",1000);
timerRunning = true;
}

function startclock () {
// Make sure the clock is stopped
stopclock();
showtime();
}

Ось що з ним буде після "обробки":

var timerID=null;var timerRunning=false;function stopclock(){if(timerRunning)clearTimeout(timerID);timerRunning=false}function showtime(){var now=new Date();var hours=now.getHours();var minutes=now.getMinutes();var seconds=now.getSeconds()var timeValue=""+((hours>12)?hours-12:hours)timeValue+=((minutes<10)?":0":":")+minutes timeValue+=((seconds<10)?":0":":")+seconds timeValue+=(hours>=12)?" P.M.":" A.M."window.status=timeValue;timerID=setTimeout("showtime()",1000);timerRunning=true}function startclock(){stopclock();showtime()}

Трошки складніше...

Тепер відмітимо галочку "змінювати зміні":

var timerID=null;var timerRunning=false;function stopclock(){if(timerRunning)clearTimeout(timerID);timerRunning=false}function showtime(){var a=new Date();var b=a.getHours();var c=a.getMinutes();var d=a.getSeconds()var e=""+((b>12)?b-12:b)e+=((c<10)?":0":":")+c e+=((d<10)?":0":":")+d e+=(b>=12)?" P.M.":" A.M."window.status=e;timerID=setTimeout("showtime()",1000);timerRunning=true}function startclock(){stopclock();showtime()}

Ще цікавіше...

І накінець виберемо "Base62 encode":

eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('1 3=g;1 2=7;4 8(){h(2)i(3);2=7}4 5(){1 a=j k();1 b=a.l();1 c=a.m();1 d=a.n()1 e=""+((b>6)?b-6:b)e+=((c<9)?":0":":")+c e+=((d<9)?":0":":")+d e+=(b>=6)?" o.f.":" p.f."q.r=e;3=s("5()",t);2=u}4 v(){8();5()}',32,32,'|var|timerRunning|timerID|function|showtime|12|false|stopclock|10||||||M|null|if|clearTimeout|new|Date|getHours|getMinutes|getSeconds|P|A|window|status|setTimeout|1000|true|startclock'.split('|'),0,{}))

Особливість даної опції, що наш код перетворився в динамічну створювану функцію, яка виконується за допомогою eval. Прочитати даний код надзвичайно важко. Що нам і треба!


Ищите нас в интернетах!

Комментарии

Свежие вакансии