Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.11.2014, 11:27
Аспирант
Отправить личное сообщение для pashin76 Посмотреть профиль Найти все сообщения от pashin76
 
Регистрация: 03.10.2009
Сообщений: 57

Как защитить JS код?
Нравится как это сделано тут: http://qoo.by/counter.js
http://learn.javascript.ru/play/H4pbE
Ответить с цитированием
  #2 (permalink)  
Старый 08.11.2014, 11:36
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

Защитить от чего?
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 08.11.2014, 12:40
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

Aetae,
от позора.
Ответить с цитированием
  #4 (permalink)  
Старый 08.11.2014, 13:23
Профессор
Отправить личное сообщение для Tecvid Посмотреть профиль Найти все сообщения от Tecvid
 
Регистрация: 13.12.2013
Сообщений: 175

Сообщение от pashin76
Как защитить JS код?
никак, вот смотри, я всё смог получить тот код, ссылку на которую вы указали

/*
 * [url]http://qoo.by/[/url]
 */
(function () {
    
    var $$ = function () {
		var obj;
		switch(arguments.length) {
			case 0:
				return document;
			break;
			case 2:
				$$(arguments[0]).innerHTML=arguments[1];
			break;
			case 3:
				$$(arguments[0]).style[arguments[1]]=arguments[2];
			break;
		}
		if(arguments.length>0) {
			if(typeof arguments[0] == 'string') {
				obj=$$().getElementById(arguments[0]);
			}
			else {
				obj=arguments[0];
			}
		}
			if(obj==null) {
				return false;
			}
		obj.$$ = function() {
				switch(arguments.length) {
					case 0:
						this.$$ = function () {
							return $$.apply(null,arguments);
						}
					break;
					case 1:
						obj.innerHTML=arguments[0];
					break;
					case 2:
						obj.style[arguments[0]] = arguments[1];
					break;
				}
				return obj;
		}
			obj.$$after = function(el) {
				var elm=this;
				var th=$$(el);
				do {
					th = th.nextSibling;
				} while(th && th.nodeType != 1);
				if(th!=null) {
					if (th != elm) {
						th.parentNode.insertBefore(elm, th);
					}
				}
				else {
					if (el != elm) {
						el.parentNode.appendChild(elm);
					}
				}
				return $$(elm);
			}
			obj.$$before = function(el) {
				var elm=this;
				var th=$$(el);
				do {
					th = th.previousSibling;
				} while(th && th.nodeType != 1);
				var nth=th;
				if(nth!=null) {
					do {
						nth = nth.nextSibling;
					} while(nth && nth.nodeType != 1);
						if (th != elm) {
							th.parentNode.insertBefore(elm, nth);
						}
				}
				else {
					if (el != elm) {
						el.parentNode.insertBefore(elm, el);
					}
				}
				return $$(elm);
			}
			obj.$$prev = function() {
				var elm=this;
				do {
					elm = elm.previousSibling;
				} while(elm && elm.nodeType != 1);
				if(elm!=null) {
					return $$(elm);
				}
				else {
					return elm;	
				}
			}
			obj.$$next = function() {
				var elm=this;
				do {
					elm = elm.nextSibling;
				} while(elm && elm.nodeType != 1);
				if(elm!=null) {
					return $$(elm);
				}
				else {
					return elm;	
				}
			}
			obj.$$first = function() {
				var elm=this;
				elm = elm.firstChild;
				elm = elm && elm.nodeType != 1 ? elm.nextSibling : elm;
				if(elm!=null) {
					return $$(elm);
				}
				else {
					return elm;	
				}
			}
			obj.$$last = function() {
				var elm=this;
				elm = elm.lastChild;
				elm = elm && elm.nodeType != 1 ? elm.previousSibling : elm;
				if(elm!=null) {
					return $$(elm);
				}
				else {
					return elm;	
				}
			}
			obj.$$parent = function(num) {
				var elm=this;
				num = num || 1;
				for (var i=0; i<num; i++)
				if (elm != null) elm = elm.parentNode;
				if(elm!=null) {
					return $$(elm);
				}
				else {
					return elm;	
				}
			}
			obj.$$html = function() {
				var elm=this;
				return $$(elm).innerHTML;
			}
            return obj;
    }

    var $$i = function (arg) {
		arg = arg || {};
		var default_arg = {
			create:'script',
			attribute: {
				'type':'text/javascript'
			},
			insert:document.body,
			onready:function () {
				
			}
		}
		
		for(var index in default_arg) {
			if(typeof arg[index] == "undefined") arg[index] = default_arg[index];
		}
		
		var create = arg['create'];
		var attribute = arg['attribute'];
		var insert = arg['insert'];
		var onready = arg['onready'];
		
		var s = $$().createElement(create);
		
		for(var key in attribute) {
			s.setAttribute(key,attribute[key]);
		}
		
		if(create=='script' && (typeof attribute.src != "undefined")) {
			if (s.readyState) {
				s.onreadystatechange = function() {
					if(s.readyState == "loaded" || s.readyState == "complete") {
                		s.onreadystatechange = null;
						onready();
					}
				}
			}
			else {
				s.onload = function() {
					onready();
				}
			}
		}
		
		insert.appendChild(s);
		
		if(create=='script' && (typeof attribute.src == "undefined")) {
			s.$$=function () {
				s.text=arguments[0];
			}
		}
		else if(create=='style') {
			s.$$=function () {
				if(s.styleSheet) {
					s.styleSheet.cssText = $$().createTextNode(arguments[0]).nodeValue;
				}
				else {
					s.appendChild($$().createTextNode(arguments[0]));
				}
			}
		}
		else {
			return $$(s);
		}
		
		return s;
	}
        
        var $$s = {};
        $$s.getelbytag = function (t,el) {
			t = t || '*';
			el = el || $$();
			var elms=[], relm=[];
			elms=el.getElementsByTagName(t);
			for(var i=0;i<elms.length;i++) {
				relm.push(elms[i]);
			}
			return relm;
	}
        
/*
 * ----------------------------------
 */
        var color_map = {
                'ffffff':['001','001s','002','002s','003','003s','004','004s','005','005s','006','006s','016','016s'],
                '000000':['007','007s','008','008s','009','009s','010','010s'],
                'f0ad4e':['011','011s'],
                'd9534f':['012','012s'],
                '428bca':['013','013s'],
                '00ff00':['014','014s'],
                'ffff00':['015','015s'],
                '999999':['017','017s'],
                '5cb85c':['018','018s'],
                '5bc0de':['019','019s']
            };
        $$('qoo-counter-visits','14');
        $$('qoo-counter-views','33');
        $$i({
                create:'link',
                attribute: {
                  'rel':'stylesheet',
                  'type':'text/css',
                  'href':'http://qoo.by/counter/counter.css'
                },
                insert:$$s.getelbytag('head')[0]
        });
        $$('qoo-counter').$$first().href='http://qoo.by/counter/?r='+encodeURIComponent(window.location.href);
        
        var img_info = $$('qoo-counter').$$first().$$first().src.match(/.*\/(.*)\.png/i)[1];
        var break_key=false;
        for(var color in color_map) {
            for(var i=0; i<color_map[color].length; i++) {
                if(color_map[color][i]===img_info) {
                    $$('qoo-counter','color','#'+color).$$first().$$('color','#'+color);
                    break_key=true;
                    break;
                }
            }
            if(break_key) { break; }
        }
        
})();


/*
Потребление памяти: 474120 байт - 463.0078125 кб - 0.45215606689453 мб
Потребление памяти real: 524288 байт - 512 кб - 0.5 мб
Потребление памяти: 228016 байт - 222.671875 кб - 0.21745300292969 мб
Потребление памяти real: 524288 байт - 512 кб - 0.5 мб
Лимит памяти: 128M
Время генерации скрипта: 0.014336109161377 секунд
*/
Ответить с цитированием
  #5 (permalink)  
Старый 08.11.2014, 20:07
Аспирант
Отправить личное сообщение для pashin76 Посмотреть профиль Найти все сообщения от pashin76
 
Регистрация: 03.10.2009
Сообщений: 57

Tecvid,
Спасибо большое, помогите разобраться, как это работает?

Что заставляет функцию запуститься? window.onload не нашел
Откуда берутся аргументы, которые обрабатываются в switch в начале кода?
И что значит $$, которое встречается по всему коду?

Последний раз редактировалось pashin76, 08.11.2014 в 20:27.
Ответить с цитированием
  #6 (permalink)  
Старый 08.11.2014, 20:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от pashin76
Что заставляет функцию запуститься?
строка 272
Ответить с цитированием
  #7 (permalink)  
Старый 08.11.2014, 21:22
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от pashin76
И что значит $$, которое встречается по всему коду?
смотри внимательнее
Цитата:
var $$ = function () {
Ответить с цитированием
  #8 (permalink)  
Старый 08.11.2014, 21:29
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

$$ означает JQueryJQuery, а функция запускается по велению святого духа.
Ответить с цитированием
  #9 (permalink)  
Старый 08.11.2014, 22:35
Профессор
Отправить личное сообщение для Tecvid Посмотреть профиль Найти все сообщения от Tecvid
 
Регистрация: 13.12.2013
Сообщений: 175

Сообщение от pashin76
Спасибо большое
да пожалуйста
Ответить с цитированием
  #10 (permalink)  
Старый 09.11.2014, 00:44
Аспирант
Отправить личное сообщение для pashin76 Посмотреть профиль Найти все сообщения от pashin76
 
Регистрация: 03.10.2009
Сообщений: 57

Как я понял, $$ это ф-я, которая находит элемент по ID и присваивает ему некое значение
1) Не понимаю, откуда берется значения 14 и 33 в строках 246 и 247?
2) Защита файла от чтения срабатывает, если функции $$ не передано ни одного аргумента, но откуда в document появляется текст "//Нельзя просто так взять и посмотреть код..."?
3) Т.к. это счетчик, то где-то должен быть код, который вызывает скрипт записывающий данные пользователя в БД. Где он?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как защитить JS от изменения? winston3d Общие вопросы Javascript 5 28.07.2015 14:29
Как сохранить выбор в select списке, сгенерированным JS? Сергей Новиков Общие вопросы Javascript 4 10.12.2014 23:05
Как найти исходный код AS3 внутри FLA файла? Gamestop Flash 7 12.01.2013 13:57
Как можно улучшить такой код? Reiter Общие вопросы Javascript 0 06.11.2012 16:19
запомнить переменную js в одном файле и использовать в другом. как? skalka Общие вопросы Javascript 2 28.09.2010 08:19