Advertisement
Guest User

Tracking code example

a guest
Apr 6th, 2016
319
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <script type="text/javascript">
  2.  
  3. try {
  4.     if (!ns_functions)
  5.         ns_functions = null;
  6. } catch (e) {
  7.     ns_functions = null;
  8. }
  9. if (!ns_functions)
  10.     var ns_functions = (function() {
  11.         var protocol = "http" + ((document.location.protocol == "https:") ? "s" : "") + ":";
  12.         var user_agent = navigator.userAgent.toLowerCase();
  13.         var is_linux = (user_agent.indexOf('linux') > -1);
  14.         var is_opera = (user_agent.indexOf('opera') > -1);
  15.         var is_safari = (user_agent.indexOf('safari') > -1);
  16.         var is_chrome = (user_agent.indexOf('chrome') > -1);
  17.         var is_gecko = (!is_opera && !is_safari && !is_chrome && user_agent.indexOf('gecko') > -1);
  18.         var is_konqueror = (is_gecko && user_agent.indexOf('konqueror') > -1);
  19.         var is_ie = (!is_opera && user_agent.indexOf('msie') > -1);
  20.         return {
  21.             protocol : protocol,
  22.             domain_url : "",
  23.             tracker_url : "",
  24.             set_domain_url : function(url) {
  25.                 this.domain_url = url;
  26.                 this.tracker_url = this.protocol + "//" + this.domain_url;
  27.             },
  28.             is_linux : is_linux,
  29.             is_opera : is_opera,
  30.             is_safari : is_safari,
  31.             is_gecko : is_gecko,
  32.             is_chrome : is_chrome,
  33.             is_konqueror : is_konqueror,
  34.             is_ie : is_ie,
  35.             ping : function() {
  36.                 var hid = null;
  37.                 return {
  38.                     load : function() {
  39.                         var src = ns_functions.tracker_url + "/ping";
  40.                         var script = ns_functions.create_remote_script(src);
  41.                         var body = document.body || document.documentElement || document.getElementsByTagName("BODY")[0];
  42.                         if (body.firstChild) {
  43.                             if (body.firstChild) {
  44.                                 body.insertBefore(script, body.firstChild);
  45.                             } else {
  46.                                 body.appendChild(script);
  47.                             }
  48.                         }
  49.                     },
  50.                     set_hid : function(h) {
  51.                         hid = h;
  52.                     },
  53.                     get_hid : function(defvalue) {
  54.                         return hid || defvalue;
  55.                     }
  56.                 };
  57.             }(),
  58.             image : function() {
  59.                 var hid = null;
  60.                 return {
  61.                     load : function() {
  62.                         try {
  63.                            
  64.                             var canvas = document.createElement("canvas");
  65.                             canvas.width = 1;
  66.                             canvas.height = 16;
  67.                            
  68.                             var ctx = canvas.getContext("2d");
  69.                             var img = new Image();
  70.                            
  71.                             img.onload = function() {
  72.                                 try {
  73.                                    
  74.                                     ctx.drawImage(img, 0, 0);
  75.                                    
  76.                                     try {
  77.                                         var imgd = ctx.getImageData(0, 0, canvas.width, canvas.height);
  78.                                     }
  79.                                     catch (e) {
  80.                                         throw new Error("Unable to access image data: " + e)
  81.                                     }
  82.                                    
  83.                                     var pixs = imgd.data;
  84.                                     hid = "";
  85.                                     for (var i = 0, n = pixs.length; i < n; i += 4) {
  86.                                         hid += String.fromCharCode(pixs[i+1]);
  87.                                         hid += String.fromCharCode(pixs[i+2]);
  88.                                     }
  89.                                    
  90.                                 }
  91.                                 catch (e) {
  92.                                 }
  93.                             }
  94.                            
  95.                             img.src = ns_functions.tracker_url + "/image";
  96.                         }
  97.                         catch (e) {
  98.                         }
  99.                     },
  100.                     get_hid : function(defvalue) {
  101.                         return hid || defvalue;
  102.                     }
  103.                 };
  104.             }(),
  105.             encode : function() {
  106.                 var esc = null;
  107.                 try {
  108.                     esc = encodeURIComponent;
  109.                 } catch(e) {
  110.                     esc = escape;
  111.                 }
  112.                 return esc;
  113.             }(),
  114.             decode : function() {
  115.                 var esc = null;
  116.                 try {
  117.                     esc = function(value) {
  118.                         try {
  119.                             return decodeURIComponent(value);
  120.                         }
  121.                         catch (e) {
  122.                             try {
  123.                                 return decodeURIComponent(unescape(value));
  124.                             }
  125.                             catch (e) {
  126.                                 return unescape(value);
  127.                             }
  128.                         }
  129.                     };
  130.                 } catch(e) {
  131.                     esc = unescape;
  132.                 }
  133.                 return esc;
  134.             }(),
  135.             packer : function() {
  136.                 var delimiter = "&";
  137.                 var process = function(value, fn) {
  138.                     var tmp = [];
  139.                     for (var i = 0; i < value.length; i++) {
  140.                         tmp.push(fn(value[i]));
  141.                     }
  142.                     return tmp;
  143.                 };
  144.                 return {
  145.                     pack : function(value) {
  146.                         return process(value, function(v) {
  147.                             return ns_functions.encode(v);
  148.                         }).join(delimiter);
  149.                     },
  150.                     unpack : function(packed) {
  151.                         return process(packed.split(delimiter), function(v) {
  152.                             return ns_functions.decode(v);
  153.                         });
  154.                     }
  155.                 };
  156.             }(),
  157.             create_remote_script : function(src) {
  158.                 var new_script=document.createElement("SCRIPT");
  159.                 new_script.type="text/javascript";
  160.                 new_script.language="javascript";
  161.                 new_script.src=src;
  162.                 return new_script;
  163.             },
  164.             user : {}
  165.         };
  166.     })();
  167.  
  168. if(!ns_functions.dom)
  169.     ns_functions.dom = {
  170.         create_element:function(element) {
  171.             var elm=document.createElement(element.tag.toUpperCase());
  172.             for(var i in element) {
  173.                 if(i!="tag"&&typeof(element[i]!="function")) {
  174.                     switch(typeof(element[i])) {
  175.                     case"object":
  176.                         for(var j in element[i])
  177.                             elm[i][j]=element[i][j]
  178.                         break;
  179.                     default:
  180.                         elm[i]=element[i];
  181.                     break;
  182.                     }
  183.                 }
  184.             }
  185.             return elm;
  186.         }
  187. };
  188.  
  189. if (!ns_functions.user_data) {
  190.     ns_functions.user_data = function() {
  191.         var user_data_supported = ns_functions.is_ie;
  192.  
  193.         var branch = "NSBranch";
  194.  
  195.         var fingerprint_img = ns_functions.dom.create_element({
  196.             tag : "IMG",
  197.             style : {
  198.                 behavior : "url(#default#userData)",
  199.                 left: "-10000px",
  200.                 position : "absolute",
  201.                 top: "-10000px",
  202.                 visibility : "hidden",
  203.                 zIndex : "-1000"
  204.             }
  205.         });
  206.  
  207.         var body = document.body || document.documentElement || document.getElementsByTagName("BODY")[0];
  208.         if (body.firstChild) {
  209.             body.insertBefore(fingerprint_img, body.firstChild);
  210.         } else {
  211.             body.appendChild(fingerprint_img);
  212.         }
  213.  
  214.         return {
  215.             get:function(key, defvalue){
  216.                 try {
  217.                     if (user_data_supported) {
  218.                         fingerprint_img.load(branch);
  219.  
  220.                         var fingerprint;
  221.                         if (null == (fingerprint = fingerprint_img.getAttribute(key))) {
  222.                             return defvalue;
  223.                         }
  224.                         else {
  225.                             return fingerprint;
  226.                         }
  227.                     }
  228.                     else {
  229.                         return defvalue;
  230.                     }
  231.                 } catch (e){
  232.                     return defvalue;
  233.                 }
  234.  
  235.             },
  236.             set:function(key, value) {
  237.                 try {
  238.                     if (user_data_supported) {
  239.                         fingerprint_img.load(branch);
  240.  
  241.                         fingerprint_img.setAttribute(key, value);
  242.  
  243.                         fingerprint_img.save(branch);
  244.                     }
  245.                 } catch (e){}
  246.             }
  247.         };
  248.     }();
  249. }
  250.  
  251. if (!ns_functions.cookies) {
  252.     ns_functions.cookies = {
  253.         get:function(name,defvalue){
  254.             var result=null;
  255.             var cookies=document.cookie;
  256.             cookies=cookies.split(';');
  257.             for(var i=0;i<cookies.length;i++){
  258.                 var cookie=cookies[i];
  259.                 while(cookie.charAt(0)==" ")
  260.                     cookie=cookie.substring(1,cookie.length);
  261.                 var s=cookie.indexOf(name+"=");
  262.                 if(s!=-1){
  263.                     s+=name.length+1;
  264.                     result=unescape(cookie.substring(s,cookie.length));
  265.                 }
  266.             }
  267.             if(!result)
  268.                 result=defvalue;
  269.             return result;
  270.         },
  271.         set:function(name,value,expires,path,domain,secure){
  272.             var cookie=name+"="+escape(value);
  273.             if(expires)
  274.                 cookie+=";expires="+expires;
  275.             if(path)
  276.                 cookie+=";path="+path;
  277.             if(domain)
  278.                 cookie+=";domain="+domain;
  279.             if(secure)
  280.                 cookie+=";secure="+secure;
  281.             document.cookie=cookie;
  282.         },
  283.         is_enabled:function(){
  284.             var now=new Date();
  285.             var value=now.getTime();
  286.             var name="ns_cookies_test";
  287.             this.set(name,value);
  288.             var enabled = (this.get(name,null)==value);
  289.             this.set(name,value, 0);
  290.             return enabled;
  291.         }
  292.     };
  293. }
  294.  
  295. if (!ns_functions.local_storage) {
  296.     ns_functions.local_storage = function() {
  297.  
  298.         var local_storage_supported = false;
  299.         try { // < FF 3.6 bugfix
  300.             local_storage_supported = (('localStorage' in window) && (window['localStorage'] !== null) && (typeof(localStorage) != 'undefined'));
  301.         }
  302.         catch (e) {}
  303.         return {
  304.             get : function(key, defvalue) {
  305.                 try {
  306.                     if (local_storage_supported) {
  307.                         return localStorage.getItem(key) || defvalue;
  308.                     }
  309.                     else {
  310.                         return defvalue;
  311.                     }
  312.                 } catch (e){
  313.                     return defvalue;
  314.                 }
  315.             },
  316.             set : function(key, value) {
  317.                 if (local_storage_supported) {
  318.                     try {
  319.                         localStorage.setItem(key, value);
  320.                     } catch (e) {
  321.                     }
  322.                 }
  323.             }
  324.         }
  325.     }();
  326. }
  327.  
  328. if (!ns_functions.websql_storage) {
  329.     ns_functions.websql_storage = function() {
  330.         var db = null;
  331.         var db_name = "ns_storage";
  332.         var db_table = "ns_web_storage";
  333.         try {
  334.             if (('openDatabase' in window) && (window['openDatabase'] !== null) && (typeof(openDatabase) != 'undefined')) {
  335.                 db = window.openDatabase(db_name, "", "Store database", 1024);
  336.             }
  337.         }
  338.         catch (e) {}
  339.        
  340.         return {
  341.             create : function() {
  342.                 if (db) {
  343.                     db.transaction(function(tx) {
  344.                         try {
  345.                             tx.executeSql("CREATE TABLE IF NOT EXISTS " + db_table + " (key TEXT, value TEXT)", [], null, null);
  346.                         }
  347.                         catch(e) {}
  348.                     });
  349.                 }
  350.             },
  351.             get : function(key, defvalue, callback) {
  352.                     var db_result = defvalue;
  353.                     if (db) {
  354.                         try {
  355.                             ns_functions.websql_storage.create();
  356.                         }
  357.                         catch(e) {}
  358.                         try {
  359.                             db.transaction(function(tx) {
  360.                                 tx.executeSql("SELECT value FROM " + db_table + " WHERE key = ?",
  361.                                     [key],
  362.                                     function(tx, result) {
  363.                                         for(var i = 0; i < result.rows.length; i++) {
  364.                                             db_result = result.rows.item(i)['value'];
  365.                                         }
  366.                                         callback(db_result);
  367.                                     }),
  368.                                     function() {
  369.                                         callback(db_result);
  370.                                     }
  371.                                 });
  372.                         }
  373.                         catch (e) {
  374.                             callback(db_result);
  375.                         }
  376.                     }
  377.                     else {
  378.                         callback(db_result);
  379.                     }
  380.                 },
  381.             set : function(key, value, callback) {
  382.                 if (db) {
  383.                         try {
  384.                             ns_functions.websql_storage.create();
  385.                         }
  386.                         catch(e) {}
  387.                         if (key != "") {
  388.                             db.transaction(function(tx) {
  389.                                 tx.executeSql("SELECT * FROM " + db_table + " WHERE key = ?",
  390.                                     [key],
  391.                                     function(tx, result) {
  392.                                         if (result.rows.length > 0) {
  393.                                             tx.executeSql("UPDATE " + db_table + " SET value = ? WHERE key = ?", [value, key], function() {
  394.                                                 callback(true);
  395.                                             }, function() {
  396.                                                 callback(false);
  397.                                             });
  398.                                         }
  399.                                         else {
  400.                                             tx.executeSql("INSERT INTO " + db_table + " (key, value) values(?, ?)", [key, value], function() {
  401.                                                 callback(true);
  402.                                             }, function() {
  403.                                                 callback(false);
  404.                                             });
  405.                                         }
  406.                                     },
  407.                                     function() {
  408.                                         ns_functions.websql_storage.create();
  409.                                         ns_functions.websql_storage.set(key, value, callback);
  410.                                     });
  411.                             });
  412.                         }
  413.                     }
  414.                     else {
  415.                         callback(false);
  416.                     }
  417.                 }
  418.         }
  419.     }();
  420. }
  421.  
  422. if (!ns_functions.events) {
  423.     ns_functions.events = {
  424.             add:function(){
  425.                 if(window.addEventListener)
  426.                     return function(o,e,fn,c){o.addEventListener(e,fn,(c));}
  427.                 else if(window.attachEvent)
  428.                     return function(o,e,fn){o.attachEvent("on"+e,fn);}
  429.                 else
  430.                     return function(o,e,fn){var old_fn=o["on"+e];if(old_fn==null)
  431.                         o["on"+e]=fn;else
  432.                             o["on"+e]=function(e){old_fn(e);fn(e);}}}(),
  433.                             add_event:function(o,e,fn,c){
  434.                                 if(typeof(o)=="string")
  435.                                     var elm=document.getElementById(o);
  436.                                 else
  437.                                     var elm=o;
  438.                                 this.add(elm,e,fn,c);
  439.                             },
  440.                             stop_propagation:function(e){
  441.                                 if(e.stopPropagation)
  442.                                     e.stopPropagation();
  443.                                 else
  444.                                     e.cancelBubble=true;
  445.                             },
  446.                             prevent_default:function(e){
  447.                                 if(e.preventDefault)
  448.                                     e.preventDefault();
  449.                                 else
  450.                                     e.returnValue=false;
  451.                             },
  452.                             stop_event:function(e){
  453.                                 this.stop_propagation(e);
  454.                                 this.prevent_default(e);
  455.                             },
  456.                             get_target:function(e){
  457.                                 return e.target||e.srcElement;
  458.                             },
  459.                             get_current_target:function(e){
  460.                                 return e.currentTarget;
  461.                             },
  462.                             get_page_coor:function(e){
  463.                                 var x=e.pageX;
  464.                                 var y=e.pageY;
  465.                                 if(!x&&x!==0)
  466.                                     x=e.clientX;
  467.                                 if(!y&&y!==0)
  468.                                     y=e.clientY;
  469.                                 if(ns_functions.is_ie){
  470.                                     if(document.documentElement){
  471.                                         x+=document.documentElement.scrollLeft;
  472.                                         y+=document.documentElement.scrollTop;
  473.                                     }
  474.                                     else if(document.body){
  475.                                         x+=documentElement.scrollLeft;y+=documentElement.scrollTop;
  476.                                     }
  477.                                 }
  478.                                 return{x:x,y:y}
  479.                             }
  480.     };
  481. }
  482.  
  483. if (!ns_functions.send)
  484.     ns_functions.send = function(message, target_origin){
  485.     if (window.parent.postMessage) {
  486.         try {
  487.             window.parent.postMessage(message, target_origin);
  488.         }
  489.         catch (e) {}
  490.     } else {
  491.         try {
  492.             window.name = message;
  493.             setTimeout(function() {
  494.                 window.location = "about:blank";
  495.             }, 50);
  496.         }
  497.         catch (e) {}
  498.     }
  499. }
  500.  
  501. var runscript = function(){
  502.     var params = window.location.hash;
  503.     params = (params.charAt(0) == "#") ? (params.substring(1, params.length)) : (params);
  504.     params = ns_functions.decode(params);
  505.     params = ns_functions.packer.unpack(params);
  506.    
  507.     if (params) {
  508.         var domain_url = params[0] || "";
  509.         ns_functions.set_domain_url(domain_url);
  510.         var message_id = params[1] || "";
  511.         var target_origin = params[2] || "";
  512.         var command = params[3] || "";
  513.        
  514.         var error = function(target_origin) {
  515.             var message = ns_functions.packer.pack([message_id, ns_functions.packer.pack([])]);
  516.             ns_functions.send(message, target_origin);
  517.         }
  518.        
  519.         switch (command) {
  520.             case "s" :
  521.                 var key = params[4] || null;
  522.                 var value = params[5] || null;
  523.                 if (value !== null && key !== null) {
  524.                     var cse = params[6] || "1";
  525.                     if (cse == "1") {
  526.                         var expires = new Date();
  527.                         expires.setTime(expires.getTime() + (1000 * 60 * 60 * 24 * 365 * 10));
  528.                         expires = expires.toGMTString();
  529.                         var path = "/";
  530.                         ns_functions.cookies.set(key, value, expires, path);
  531.                     }
  532.                     ns_functions.local_storage.set(key, value);
  533.                     ns_functions.user_data.set(key, value);
  534.                     ns_functions.websql_storage.set(key, value, function(result) {
  535.                         var message = ns_functions.packer.pack([message_id, ns_functions.packer.pack([true])]);
  536.                         ns_functions.send(message, target_origin);
  537.                     });
  538.                 } else {
  539.                     error(target_origin);
  540.                 }
  541.                 break;
  542.             case "g" :
  543.                 var key = params[4] || null;
  544.                 var defvalue = params[5] || null;
  545.                 if (key !== null && defvalue !== null) {
  546.                     ns_functions.ping.load();
  547.                     ns_functions.image.load();
  548.                     var c = ns_functions.cookies.get(key, defvalue);
  549.                     var l = ns_functions.local_storage.get(key, defvalue);
  550.                     var u = ns_functions.user_data.get(key, defvalue);
  551.                     ns_functions.websql_storage.get(key, defvalue, function(w) {
  552.                         var counter = 0;
  553.                         var wait = function() {
  554.                             var p = ns_functions.ping.get_hid(defvalue);
  555.                             var i = ns_functions.image.get_hid(defvalue);
  556.                             if ((p == defvalue || i == defvalue) && counter < 5) {
  557.                                 counter++;
  558.                                 setTimeout(wait, 100);
  559.                             }
  560.                             else {
  561.                                 var message = ns_functions.packer.pack([
  562.                                     message_id,
  563.                                     ns_functions.packer.pack([
  564.                                         c,
  565.                                         l,
  566.                                         u,
  567.                                         i,
  568.                                         w,
  569.                                         p
  570.                                     ])
  571.                                 ]);
  572.                                 ns_functions.send(message, target_origin);
  573.                             }
  574.                         };
  575.                         wait();
  576.                     });
  577.                 } else {
  578.                     error(target_origin);
  579.                 }
  580.                 break;
  581.             default :
  582.                 error(target_origin);
  583.                 break;
  584.         }
  585.     }
  586. }
  587. if (window.parent.postMessage) {
  588.     runscript();
  589. }
  590. else {
  591.     ns_functions.events.add_event(window, "load", function () {
  592.         runscript();
  593.     });
  594. }
  595. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement