ibp-tms 1.0.44 → 1.0.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.html CHANGED
@@ -1 +1 @@
1
- <!doctype html><html><head><meta name="viewport" content="width=device-width,initial-scale=1"><script defer="defer" src="tms.js"></script></head><body data-pcode="TES"></body></html>
1
+ <!doctype html><html><head><meta name="viewport" content="width=device-width,initial-scale=1"><script defer="defer" src="tms.js"></script><script defer="defer" src="tmsverify.js"></script></head><body data-pcode="TES"></body></html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ibp-tms",
3
- "version": "1.0.44",
3
+ "version": "1.0.46",
4
4
  "description": "Style & JS optimized",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/tms.js CHANGED
@@ -1 +1 @@
1
- !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n=e();for(var o in n)("object"==typeof exports?exports:t)[o]=n[o]}}(self,(()=>(function(){let t,e,n=[],o=null,i=0,a=0,l=20,r=null,d=null,u=null,c=!1;function s(o,i){const a=Date.now();if(t&&e){const l=o-t.x,r=i-t.y,d=a-e,u=Math.sqrt(l*l+r*r)/d;n.push({dx:l,dy:r,dt:d,velocity:u}),n.length>100&&n.shift()}t={x:o,y:i},e=a}function h(){if(navigator.webdriver||window.chrome?.runtime?.sendMessage||/HeadlessChrome|Chrome-Lighthouse/i.test(navigator.userAgent))return 1e3;if(0==navigator.languages?.length)return 500;try{const t=document.createElement("canvas"),e=t.getContext("webgl")||t.getContext("experimental-webgl"),n=["SwiftShader","llvmpipe","softpipe","swrast","Basic Render Driver"];if(e){const t=e.getExtension("WEBGL_debug_renderer_info"),o=t?e.getParameter(t.UNMASKED_RENDERER_WEBGL):e.getParameter(e.RENDERER);if(n.some((t=>o.toLowerCase().includes(t.toLowerCase()))))return 700}}catch(e){}let t=!1;const e=new Error;if(Object.defineProperty(e,"stack",{get(){t=!0}}),t)return 500;try{const t="__ls_test__",e=window.localStorage;e.setItem(t,"1"),e.removeItem(t)}catch(e){return 300}let n=document.cookie.match("AGIDs?=s?(?<MM>\\d{2})(?<dd>\\d{2})(?<yyyy>\\d{4})(?<HH>\\d{2})(?<mm>\\d{2})(?<ss>\\d{2})(?<fffff>\\d{5})");if(!n||null==n||!n.groups)return 300;let o=new Date(Date.parse(`${n.groups.yyyy}-${n.groups.MM}-${n.groups.dd}T${n.groups.HH}:${n.groups.mm}:${n.groups.ss}.${n.groups.fffff}Z`)),i=new Date,a=Math.abs(i.getTime()-o.getTime()),l=v();return a>1e4&&(null==l||!l.count)?300:!("ontouchstart"in window)&&navigator.maxTouchPoints>0?400:null!=l&&l.domain&&-1==window.location.indexOf(l.domain)||null!=u&&-1==window.location.indexOf(u)?101:function(){let t=v(),e=null==window.localStorage.getItem("AGSTREAM")?null:atob(window.localStorage.getItem("AGSTREAM"));return!(null==t||null==e||!t.uid||btoa("U-"+atob(t.uid))==e)||null!=d&&null!=r&&btoa("U-"+atob(r))!=atob(d)}()?100:0}function m(t){if(i>0&&(t=i),n.length-a<(t||l))return!1;a=n.length-1;let e=n.some(((t,e,n)=>e>0&&Math.abs(t.velocity-n[e-1].velocity)>.05)),o=n.some(((t,e,n)=>e>1&&(Math.abs(t.dx-n[e-1].dx)>.1||Math.abs(t.dy-n[e-1].dy)>.1))),r=n.some((t=>t.dt>50&&t.dt<500));return e&&o&&r}function f(t,e){let n=m();if(n||t||e||i>0){var o=t&&!n?function(){let t=v(),e=null;return null!=t&&t.hash&&(e=t.hash,delete t.hash,y(t)),e}():w(e||i);if(null==o)return;let l="/tfp/"+o+".png";var a=new Image;a.onload=function(){if(function(t,e={}){const n=e.threshold??20,o=e.ratio??.95,i=t.naturalWidth,a=t.naturalHeight,l=200,r=Math.min(1,l/Math.max(i,a)),d=document.createElement("canvas");d.width=Math.max(1,Math.floor(i*r)),d.height=Math.max(1,Math.floor(a*r));const u=d.getContext("2d");u.drawImage(t,0,0,d.width,d.height);const{data:c,width:s,height:h}=u.getImageData(0,0,d.width,d.height),m=s*h;let f=0;for(let t=0;t<c.length;t+=4){const e=c[t],o=c[t+1],i=c[t+2];0!==c[t+3]&&(Math.max(e,o,i)<=n&&f++)}return f/m>=o}(a)){if(!c){let t=v();null!=t&&t.id&&(new Promise(((t,e)=>{try{fetch("/traffic/id",{method:"GET"}).then((t=>t.json())).then((n=>{if(n&&n.id){let e=v();null==e&&(e={}),e.id=n.id,e.uid=n.id,r=n.id,y(e),t(n.id)}else e()})).catch((t=>{e()}))}catch(t){e()}})).then((t=>{let e=i;i=h(),0!=i&&e!=i&&f(!1)})),setTimeout((()=>{c=!1}),6e4))}c=!0}},a.onerror=function(){let t=(document.querySelector('meta[property="og:url"]')?document.querySelector('meta[property="og:url"]').getAttribute("content"):window.location.href).match(/^(?:https?:\/\/)?(?:www\.)?([^\/]+)/i),e=t?t[0]:null;null!=e&&(a.src=e+l)},a.src=l}}function g(){if(m()){let t=v();null==t&&(t={}),t.hash=w(i),y(t)}}function w(t){let e=0==t?function(t){let e=0,n=0,o=0,i=0,a=[];t.forEach((t=>{e+=t.dx,n+=t.dy,o+=t.dt;let l=Math.sqrt(t.dx*t.dx+t.dy*t.dy);i+=l,a.push(l/(t.dt||1e-5))}));let l=a.length?a.reduce(((t,e)=>t+e),0)/a.length:0,r=Math.atan2(n,e);return[Math.round(255*Math.min(1,l/5)),Math.round(255*(r+Math.PI)/(2*Math.PI)),Math.round(255*Math.min(1,i/100))]}(n):[0,0,0],i=0==t?function(t,e,n){const o=.299*t+.587*e+.114*n;return Math.round(o/255*100)}(e[0],e[1],e[2]):1==t?1:-1,a=o&&o.id?"U-"+o.id:"UN";return btoa(`${a}|${i}|${e[0]}|${e[1]}|${e[2]}|${t??0}`).replace(/[^A-z0-9\.]/gi,"-e")}function v(){return null==window.localStorage.getItem("TSM")?null:JSON.parse(window.localStorage.getItem("TSM"))}function y(t){return window.localStorage.setItem("TSM",JSON.stringify(t)),!0}let p=0;function M(t){f(t),p++,p<10&&setTimeout((()=>{M(!1)}),5e3*p)}function E(){M(!0),document.addEventListener("click",(()=>{f(!1)})),document.addEventListener("touchend",(()=>{f(!1)})),window.addEventListener("beforeunload",(()=>{g()})),document.addEventListener("visibilitychange",(()=>{"hidden"===document.visibilityState&&g()}))}!function(){if(o=v(),document&&document.body&&null!=document.body&&document.body.hasAttribute("r-id"))document.body.addEventListener("ag.tsm.valid",(t=>{let e=v();null==e&&(e={}),e.token=t.detail.token,e.id=t.detail.id,y(e)}));else{i=h(),l="ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0?2:20,null!=o&&o.valid||(document.addEventListener("mousemove",(t=>s(t.clientX,t.clientY))),document.addEventListener("mousedown",(t=>s(t.clientX,t.clientY))),document.addEventListener("touchstart",(t=>{const e=t.touches[0];e&&e.clientX&&s(e.clientX,e.clientY)})),document.addEventListener("touchend",(t=>{const e=t.touches[0];e&&e.clientX&&s(e.clientX,e.clientY)})),document.addEventListener("touchmove",(t=>{const e=t.touches[0];e&&e.clientX&&s(e.clientX,e.clientY)})),document.addEventListener("scroll",(t=>{s(window.scrollX,window.scrollY)})),E());let t=v();null==t&&(t={}),t.count?t.count++:t.count=1,t.count<10&&y(t),window.addEventListener("ag.event.stream",(t=>{d=t.detail.streamKey;let e=v();null==e&&(e={})})),window.agEvent&&window.dispatchEvent(new CustomEvent("ag.event.stream.update"))}}()}(),{})));
1
+ !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n=e();for(var o in n)("object"==typeof exports?exports:t)[o]=n[o]}}(self,(()=>(function(){let t,e,n=[],o=null,i=0,a=0,l=20,d=null,r=null,u=null,c=2;function s(o,i){const a=Date.now();if(t&&e){const l=o-t.x,d=i-t.y,r=a-e,u=Math.sqrt(l*l+d*d)/r;n.push({dx:l,dy:d,dt:r,velocity:u}),n.length>100&&n.shift()}t={x:o,y:i},e=a}function h(t){if(i>0&&(t=i),n.length-a<(t||l))return!1;a=n.length-1;let e=n.some(((t,e,n)=>e>0&&Math.abs(t.velocity-n[e-1].velocity)>.05)),o=n.some(((t,e,n)=>e>1&&(Math.abs(t.dx-n[e-1].dx)>.1||Math.abs(t.dy-n[e-1].dy)>.1))),d=n.some((t=>t.dt>50&&t.dt<500));return e&&o&&d}function m(t,e){let n=h();if(n||t||e||i>0){var o=t&&!n?function(){let t=w(),e=null;return null!=t&&t.hash&&(e=t.hash,delete t.hash,y(t)),e}():g(e||i);if(null==o||c<=0)return;let l="/tfp/"+o+".png";var a=new Image;a.onload=function(){if(function(t,e={}){const n=e.threshold??20,o=e.ratio??.95,i=t.naturalWidth,a=t.naturalHeight,l=200,d=Math.min(1,l/Math.max(i,a)),r=document.createElement("canvas");r.width=Math.max(1,Math.floor(i*d)),r.height=Math.max(1,Math.floor(a*d));const u=r.getContext("2d");u.drawImage(t,0,0,r.width,r.height);const{data:c,width:s,height:h}=u.getImageData(0,0,r.width,r.height),m=s*h;let f=0;for(let t=0;t<c.length;t+=4){const e=c[t],o=c[t+1],i=c[t+2];0!==c[t+3]&&(Math.max(e,o,i)<=n&&f++)}return f/m>=o}(a)){let t=w();(!t.token||t.token&&"UN"!=t.token)&&new Promise(((t,e)=>{try{fetch("/traffic/id",{method:"GET"}).then((t=>t.json())).then((n=>{if(n&&n.id){let e=w();null==e&&(e={}),e.id=n.id,e.uid=n.id,d=n.id,y(e),t(n.id)}else e()})).catch((t=>{e()}))}catch(t){e()}})).then((e=>{t.token||(t.token="NA",y(t))})).catch((e=>{t.token="UN",y(t)}))}},a.onerror=function(){c--;let t=(document.querySelector('meta[property="og:url"]')?document.querySelector('meta[property="og:url"]').getAttribute("content"):window.location.href).match(/^(?:https?:\/\/)?(?:www\.)?([^\/]+)/i),e=t?t[0]:null;null!=e&&(a.src=e+l)},a.src=l}}function f(){if(h()){let t=w();null==t&&(t={}),t.hash=g(i),y(t)}}function g(t){let e=0==t?function(t){let e=0,n=0,o=0,i=0,a=[];t.forEach((t=>{e+=t.dx,n+=t.dy,o+=t.dt;let l=Math.sqrt(t.dx*t.dx+t.dy*t.dy);i+=l,a.push(l/(t.dt||1e-5))}));let l=a.length?a.reduce(((t,e)=>t+e),0)/a.length:0,d=Math.atan2(n,e);return[Math.round(255*Math.min(1,l/5)),Math.round(255*(d+Math.PI)/(2*Math.PI)),Math.round(255*Math.min(1,i/100))]}(n):[0,0,0],i=0==t?function(t,e,n){const o=.299*t+.587*e+.114*n;return Math.round(o/255*100)}(e[0],e[1],e[2]):1==t?1:-1,a=o&&o.id?"U-"+o.id:"UN";return btoa(`${a}|${i}|${e[0]}|${e[1]}|${e[2]}|${t??0}`).replace(/[^A-z0-9\.]/gi,"-e")}function w(){return null==window.localStorage.getItem("TSM")?null:JSON.parse(window.localStorage.getItem("TSM"))}function v(){let t=w(),e=null==window.localStorage.getItem("AGSTREAM")?null:atob(window.localStorage.getItem("AGSTREAM"));return!(null==t||null==e||!t.uid||btoa("U-"+atob(t.uid))==e)||null!=r&&null!=d&&btoa("U-"+atob(d))!=atob(r)}function y(t){return window.localStorage.setItem("TSM",JSON.stringify(t)),!0}let p=0;function M(t){m(t),p++,p<10&&setTimeout((()=>{M(!1)}),5e3*p)}function E(){M(!0),document.addEventListener("click",(()=>{m(!1)})),document.addEventListener("touchend",(()=>{m(!1)})),window.addEventListener("beforeunload",(()=>{f()})),document.addEventListener("visibilitychange",(()=>{"hidden"===document.visibilityState&&f()}))}!function(){o=w();let t=document.getElementById("agTSM");if(null!=t){let e=JSON.parse(t.textContent);null!=e&&(null!=o&&o.id||(d=o.id=e.id,y(o)))}if(document&&document.body&&null!=document.body&&document.body.hasAttribute("r-id"))document.body.addEventListener("ag.tsm.valid",(t=>{let e=w();null==e&&(e={}),e.token=t.detail.token,e.id=t.detail.id,y(e)}));else{i=function(){if(navigator.webdriver||window.chrome?.runtime?.sendMessage||/HeadlessChrome|Chrome-Lighthouse/i.test(navigator.userAgent))return 1e3;if(0==navigator.languages?.length)return 500;try{const t=document.createElement("canvas"),e=t.getContext("webgl")||t.getContext("experimental-webgl"),n=["SwiftShader","llvmpipe","softpipe","swrast","Basic Render Driver"];if(e){const t=e.getExtension("WEBGL_debug_renderer_info"),o=t?e.getParameter(t.UNMASKED_RENDERER_WEBGL):e.getParameter(e.RENDERER);if(n.some((t=>o.toLowerCase().includes(t.toLowerCase()))))return 700}}catch(e){}let t=!1;const e=new Error;if(Object.defineProperty(e,"stack",{get(){t=!0}}),t)return 500;try{const t="__ls_test__",e=window.localStorage;e.setItem(t,"1"),e.removeItem(t)}catch(e){return 300}let n=document.cookie.match("AGIDs?=s?(?<MM>\\d{2})(?<dd>\\d{2})(?<yyyy>\\d{4})(?<HH>\\d{2})(?<mm>\\d{2})(?<ss>\\d{2})(?<fffff>\\d{5})");if(!n||null==n||!n.groups)return 300;let o=new Date(Date.parse(`${n.groups.yyyy}-${n.groups.MM}-${n.groups.dd}T${n.groups.HH}:${n.groups.mm}:${n.groups.ss}.${n.groups.fffff}Z`)),i=new Date,a=Math.abs(i.getTime()-o.getTime()),l=w();return a>1e4&&(null==l||!l.count)?300:!("ontouchstart"in window)&&navigator.maxTouchPoints>0?400:null!=l&&l.domain&&-1==window.location.indexOf(l.domain)||null!=u&&-1==window.location.indexOf(u)?101:v()?100:0}(),l="ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0?2:20,null!=o&&o.valid||(document.addEventListener("mousemove",(t=>s(t.clientX,t.clientY))),document.addEventListener("mousedown",(t=>s(t.clientX,t.clientY))),document.addEventListener("touchstart",(t=>{const e=t.touches[0];e&&e.clientX&&s(e.clientX,e.clientY)})),document.addEventListener("touchend",(t=>{const e=t.touches[0];e&&e.clientX&&s(e.clientX,e.clientY)})),document.addEventListener("touchmove",(t=>{const e=t.touches[0];e&&e.clientX&&s(e.clientX,e.clientY)})),document.addEventListener("scroll",(t=>{s(window.scrollX,window.scrollY)})),E());let t=w();null==t&&(t={}),t.count?t.count++:t.count=1,t.count<10&&y(t),window.addEventListener("ag.event.stream",(t=>{r=t.detail.streamKey,v()&&m(!1,1)})),window.agEvent&&window.dispatchEvent(new CustomEvent("ag.event.stream.update"))}}()}(),{})));
package/tms.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tms.js","mappings":"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","sources":["webpack:///webpack/universalModuleDefinition","webpack:///./src/tms.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, () => {\nreturn ","(function(){\r\n \r\n \r\n let movements = [];\r\n\r\n let tsm = null;\r\n\r\n let lastPos;\r\n\r\n let lastTime;\r\n\r\n let suspectScore = 0;\r\n\r\n let lastLength = 0;\r\n\r\n let defaultLimit = 20;\r\n\r\n let tmsUserID = null;\r\n\r\n let streamUserID = null;\r\n\r\n let currentDomain = null;\r\n\r\n let isUserIDUpdated = false;\r\n\r\n const isTouchCapable = () => {\r\n return (\r\n 'ontouchstart' in window ||\r\n navigator.maxTouchPoints > 0 ||\r\n navigator.msMaxTouchPoints > 0 // For older IE\r\n );\r\n };\r\n \r\n function getSignature() {\r\n\r\n var singnatureSamples = movements.filter((x, i) => { return i < 16 });\r\n var signatureValue = singnatureSamples.reduce((x, y, i) => {\r\n return x + '|' + Math.round(y.dx + y.dy + y.dt + y.velocity);\r\n }, '');\r\n return btoa(signatureValue);\r\n }\r\n\r\n function recordMovement(x, y) {\r\n const now = Date.now();\r\n if (lastPos && lastTime) {\r\n const dx = x - lastPos.x;\r\n const dy = y - lastPos.y;\r\n const dt = now - lastTime;\r\n const distance = Math.sqrt(dx * dx + dy * dy);\r\n const velocity = distance / dt;\r\n movements.push({ dx, dy, dt, velocity });\r\n if(movements.length>100)movements.shift();\r\n }\r\n lastPos = { x, y };\r\n lastTime = now;\r\n }\r\n\r\n function huristicAdaption(points) {\r\n let totalDx = 0, totalDy = 0, totalDt = 0;\r\n let totalDist = 0;\r\n let velocities = [];\r\n points.forEach(p => {\r\n totalDx += p.dx;\r\n totalDy += p.dy;\r\n totalDt += p.dt;\r\n let dist = Math.sqrt(p.dx * p.dx + p.dy * p.dy);\r\n totalDist += dist;\r\n velocities.push(dist / (p.dt || 1e-5)); // avoid divide by zero\r\n });\r\n // Feature extraction\r\n let avgVel = velocities.length ? velocities.reduce((a, b) => a + b, 0) / velocities.length : 0;\r\n let direction = Math.atan2(totalDy, totalDx); // angle in radians, -π to π\r\n\r\n // Non-linear scaling and normalization\r\n // velocity: [0, max], direction: [-π, π], totalDist: scale as you wish\r\n let r = Math.round(255 * Math.min(1, avgVel / 5)); // scale velocity, or use other non-linear (logistic, sqrt, etc)\r\n let g = Math.round(255 * (direction + Math.PI) / (2 * Math.PI)); // normalize angle to [0,1]\r\n let b = Math.round(255 * Math.min(1, totalDist / 100)); // scale total distance, or another feature\r\n\r\n return [r, g, b];\r\n }\r\n\r\n\r\n function rgbToGrayWight(r, g, b) {\r\n const gray = 0.299 * r + 0.587 * g + 0.114 * b; // Accurate grayscale\r\n return Math.round(gray / 255 * 100); // Scale to 0-100\r\n }\r\n\r\n\r\n\r\n\r\n function onRecord()\r\n {\r\n document.addEventListener(\"mousemove\", e => recordMovement(e.clientX, e.clientY));\r\n document.addEventListener(\"mousedown\", e => recordMovement(e.clientX, e.clientY));\r\n document.addEventListener(\"touchstart\", e => {\r\n const t = e.touches[0];\r\n if(t && t.clientX)\r\n recordMovement(t.clientX, t.clientY);\r\n });\r\n\r\n document.addEventListener(\"touchend\", e => {\r\n const t = e.touches[0];\r\n if(t && t.clientX)\r\n recordMovement(t.clientX, t.clientY);\r\n });\r\n\r\n document.addEventListener(\"touchmove\", e => {\r\n const t = e.touches[0];\r\n if(t && t.clientX)\r\n recordMovement(t.clientX, t.clientY);\r\n });\r\n\r\n document.addEventListener(\"scroll\", e=>{ \r\n recordMovement(window.scrollX, window.scrollY);\r\n });\r\n }\r\n\r\n function getSuspectAutomationScore(){\r\n if(navigator.webdriver|| window.chrome?.runtime?.sendMessage ||/HeadlessChrome|Chrome-Lighthouse/i.test(navigator.userAgent))return 1000;\r\n if(navigator.languages?.length==0)return 500;\r\n try {\r\n const canvas = document.createElement('canvas');\r\n const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\r\n const softwareRenderers = ['SwiftShader', 'llvmpipe', 'softpipe', 'swrast', 'Basic Render Driver'];\r\n if (gl) {\r\n const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');\r\n const renderer = debugInfo ? gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) : gl.getParameter(gl.RENDERER); \r\n if (softwareRenderers.some(r=>renderer.toLowerCase().includes(r.toLowerCase()))) {\r\n return 700;\r\n }\r\n }\r\n } catch (e) { \r\n }\r\n let cdpDetected = false;\r\n const e = new Error();\r\n Object.defineProperty(e, 'stack', {\r\n get() {\r\n cdpDetected = true;\r\n }\r\n });\r\n if(cdpDetected)\r\n return 500;\r\n\r\n \r\n try {\r\n const key = '__ls_test__';\r\n const storage = window.localStorage;\r\n storage.setItem(key, '1');\r\n storage.removeItem(key);\r\n } catch (e) { \r\n return 300;\r\n }\r\n\r\n let primaryCookie = document.cookie.match(('AGID\\s?\\=\\s?(?<MM>\\\\d{2})(?<dd>\\\\d{2})(?<yyyy>\\\\d{4})(?<HH>\\\\d{2})(?<mm>\\\\d{2})(?<ss>\\\\d{2})(?<fffff>\\\\d{5})'));\r\n if(!primaryCookie || primaryCookie==null || !primaryCookie.groups) return 300;\r\n let cookieDate = new Date(Date.parse(`${primaryCookie.groups.yyyy}-${primaryCookie.groups.MM}-${primaryCookie.groups.dd}T${primaryCookie.groups.HH}:${primaryCookie.groups.mm}:${primaryCookie.groups.ss}.${primaryCookie.groups.fffff}Z`));\r\n let currentDate = new Date();\r\n let timeDiff = Math.abs(currentDate.getTime() - cookieDate.getTime()); \r\n let currentValue = getCurrentValue();\r\n if(timeDiff>10*1000&&(currentValue==null||!currentValue.count))return 300; \r\n //if(!(window.innerWidth==window.outerWidth&&window.innerHeight==window.outerHeight))return 400;\r\n if(!('ontouchstart' in window)&&navigator.maxTouchPoints>0)return 400; \r\n if((currentValue!=null&&currentValue.domain&&window.location.indexOf(currentValue.domain)==-1)||(currentDomain!=null&&window.location.indexOf(currentDomain)==-1))return 101;\r\n if(suspectVPN())return 100; \r\n return 0;\r\n }\r\n\r\n function isHuman(limit) {\r\n if(suspectScore>0)limit = suspectScore;\r\n if (movements.length - lastLength < (limit?limit:defaultLimit)) return false;\r\n lastLength = movements.length - 1;\r\n let varying = movements.some((m, i, arr) => i > 0 && (Math.abs(m.velocity - arr[i - 1].velocity) > 0.05));\r\n let nonLinear = movements.some((m, i, arr) => i > 1 && (Math.abs(m.dx - arr[i - 1].dx) > 0.1 || Math.abs(m.dy - arr[i - 1].dy) > 0.1));\r\n let irregular = movements.some(m => m.dt > 50 && m.dt < 500); \r\n return varying && nonLinear && irregular;\r\n }\r\n\r\n function halucinateClient(){\r\n //updateScore(false,-1);\r\n }\r\n\r\n function updateId(){\r\n return new Promise((idresolve,idreject)=>{\r\n try{\r\n fetch('/traffic/id',{method:'GET'}).then(res=>res.json()).then(data=>{\r\n if(data && data.id){\r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n currentValue.id = data.id;\r\n currentValue.uid = data.id;\r\n tmsUserID = data.id;\r\n setCurrentValue(currentValue);\r\n idresolve(data.id);\r\n }else{\r\n halucinateClient();\r\n idreject();\r\n }\r\n }).catch(ex=>{ halucinateClient();idreject();});\r\n }catch(ex){ halucinateClient();idreject(); }\r\n });\r\n }\r\n\r\n function getUId(){\r\n return new Promise((idresolve,idreject)=>{\r\n try{\r\n fetch('/traffic/uid',{method:'GET'}).then(res=>res.json()).then(data=>{\r\n if(data && data.id){\r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n currentValue.uid = data.id;\r\n currentValue.domain = data.domain;\r\n tmsUserID = data.id;\r\n currentDomain = data.domain;\r\n setCurrentValue(currentValue);\r\n idresolve(tmsUserID);\r\n }else{\r\n idresolve('MC4wLjAuMA==');\r\n }\r\n }).catch(ex=>{ idresolve('MC4wLjAuMA=='); });\r\n }catch(ex){ idresolve('MC4wLjAuMA=='); }\r\n });\r\n }\r\n\r\n function updateScore(isInit,forcedScoreToUpdate){\r\n let isHumanResult = isHuman();\r\n if(isHumanResult||isInit||forcedScoreToUpdate||suspectScore>0){ \r\n var hashValue = isInit&&!isHumanResult?getScoreFromLocal():getHash(forcedScoreToUpdate?forcedScoreToUpdate:suspectScore); \r\n if(hashValue==null)return;\r\n let src = \"/tfp/\"+hashValue+'.png';\r\n var image = new Image();\r\n image.onload = function() {\r\n if(isImageMostlyBlack(image)){\r\n if(!isUserIDUpdated){\r\n let currentValue = getCurrentValue();\r\n if(currentValue!=null&&currentValue.id){\r\n updateId().then(id=>{\r\n let oldSuspectScore = suspectScore;\r\n suspectScore = getSuspectAutomationScore();\r\n if(suspectScore!=0&&oldSuspectScore!=suspectScore){\r\n updateScore(false);\r\n }\r\n \r\n });\r\n setTimeout(()=>{ isUserIDUpdated = false;},60*1000);\r\n }\r\n }\r\n isUserIDUpdated = true;\r\n }else{\r\n\r\n }\r\n };\r\n image.onerror = function() {\r\n let shareUrl = document.querySelector('meta[property=\"og:url\"]') ? document.querySelector('meta[property=\"og:url\"]').getAttribute(\"content\") : window.location.href;\r\n let domainExtractedMatch = shareUrl.match(/^(?:https?:\\/\\/)?(?:www\\.)?([^\\/]+)/i);\r\n let domainExtracted = domainExtractedMatch ? domainExtractedMatch[0] : null;\r\n if(domainExtracted!=null){\r\n image.src = domainExtracted+src;\r\n }\r\n }\r\n image.src = src;\r\n } \r\n }\r\n\r\n function updateScoreToLocal(){\r\n if(isHuman()){ \r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n currentValue.hash = getHash(suspectScore);\r\n setCurrentValue(currentValue);\r\n }\r\n }\r\n\r\n function getScoreFromLocal(){\r\n let currentValue = getCurrentValue();\r\n let valueToSend = null;\r\n if(currentValue!=null&&currentValue.hash)\r\n {\r\n valueToSend = currentValue.hash;\r\n delete currentValue.hash;\r\n setCurrentValue(currentValue);\r\n }\r\n return valueToSend;\r\n }\r\n\r\n function getHash(suspectScoreDetected){\r\n let rgb = suspectScoreDetected==0?huristicAdaption(movements):[0,0,0];\r\n let score = suspectScoreDetected==0?rgbToGrayWight(rgb[0],rgb[1],rgb[2]):(suspectScoreDetected==1?1:-1); \r\n let id = tsm && tsm.id ?'U-'+ tsm.id : 'UN';\r\n return btoa(`${id}|${score}|${rgb[0]}|${rgb[1]}|${rgb[2]}|${suspectScoreDetected??0}`).replace(/[^A-z0-9\\.]/gi,'-e');\r\n }\r\n\r\n function getCurrentValue()\r\n {\r\n if(window.localStorage.getItem(\"TSM\")==null)return null;\r\n return JSON.parse(window.localStorage.getItem(\"TSM\"));\r\n }\r\n\r\n function suspectVPN(){\r\n let currentValue = getCurrentValue();\r\n let currentEventStreamID = getCurrentEventStreamID(); \r\n if(currentValue!=null&&currentEventStreamID!=null&&currentValue.uid&&btoa('U-'+atob(currentValue.uid))!=currentEventStreamID)return true;\r\n if(streamUserID!=null&&tmsUserID!=null&&btoa('U-'+atob(tmsUserID))!=atob(streamUserID))return true;\r\n return false;\r\n }\r\n\r\n function getCurrentEventStreamID(){\r\n if(window.localStorage.getItem(\"AGSTREAM\")==null)return null;\r\n return atob(window.localStorage.getItem(\"AGSTREAM\"))\r\n }\r\n\r\n function setCurrentValue(value)\r\n {\r\n window.localStorage.setItem(\"TSM\", JSON.stringify(value));\r\n return true;\r\n }\r\n\r\n function isImageMostlyBlack(image, opts = {}) {\r\n const threshold = opts.threshold ?? 20; // 0–255, max brightness to count as black\r\n const ratio = opts.ratio ?? 0.95; // fraction of pixels that must be black\r\n\r\n const w = image.naturalWidth;\r\n const h = image.naturalHeight;\r\n\r\n // Downscale to speed up: sample at most 200x200\r\n const maxSize = 200;\r\n const scale = Math.min(1, maxSize / Math.max(w, h));\r\n\r\n const canvas = document.createElement('canvas');\r\n canvas.width = Math.max(1, Math.floor(w * scale));\r\n canvas.height = Math.max(1, Math.floor(h * scale));\r\n const ctx = canvas.getContext('2d');\r\n\r\n ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\r\n\r\n const { data, width, height } = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n const totalPixels = width * height;\r\n\r\n let blackPixels = 0;\r\n for (let i = 0; i < data.length; i += 4) {\r\n const r = data[i];\r\n const g = data[i + 1];\r\n const b = data[i + 2];\r\n const a = data[i + 3];\r\n\r\n // Treat transparent pixels as non‑black (optional)\r\n if (a === 0) continue;\r\n\r\n // brightness via simple max channel\r\n const brightness = Math.max(r, g, b);\r\n\r\n if (brightness <= threshold) {\r\n blackPixels++;\r\n }\r\n }\r\n\r\n return blackPixels / totalPixels >= ratio;\r\n }\r\n\r\n let startPeriod = 5000;\r\n let startIndex = 10;\r\n let currentIndex = 0;\r\n\r\n function autoUpdate(isInit){\r\n updateScore(isInit);\r\n currentIndex++;\r\n if(currentIndex<startIndex)\r\n setTimeout(() => {\r\n autoUpdate(false); \r\n }, startPeriod*currentIndex);\r\n }\r\n\r\n function start(){\r\n autoUpdate(true);\r\n document.addEventListener('click',()=>{updateScore(false);});\r\n document.addEventListener('touchend',()=>{updateScore(false);}); \r\n window.addEventListener('beforeunload',()=>{updateScoreToLocal();});\r\n document.addEventListener(\"visibilitychange\", () => {\r\n if (document.visibilityState === \"hidden\") {\r\n updateScoreToLocal();\r\n }\r\n }); \r\n }\r\n\r\n function attachListener(){\r\n document.body.addEventListener('ag.tsm.valid',(e)=>{\r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n currentValue.token = e.detail.token;\r\n currentValue.id = e.detail.id;\r\n setCurrentValue(currentValue);\r\n });\r\n }\r\n\r\n function init(){\r\n tsm = getCurrentValue();\r\n if(document && document.body && document.body!=null && document.body.hasAttribute('r-id')){\r\n attachListener();\r\n }\r\n else{\r\n suspectScore = getSuspectAutomationScore();\r\n defaultLimit = isTouchCapable()?2:20;\r\n if(tsm==null||!tsm.valid){\r\n onRecord();\r\n start();\r\n }\r\n\r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n if(currentValue.count)currentValue.count++;\r\n else currentValue.count=1;\r\n if(currentValue.count<10)\r\n setCurrentValue(currentValue);\r\n\r\n window.addEventListener('ag.event.stream',(e)=>{\r\n streamUserID = e.detail.streamKey;\r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n //if(!currentValue.id){\r\n // updateScore(false,1);\r\n //} \r\n }); \r\n if(window.agEvent){\r\n window.dispatchEvent(new CustomEvent('ag.event.stream.update'));\r\n }\r\n }\r\n }\r\n \r\n init();\r\n\r\n})();\r\n\r\n\r\n"],"names":["root","factory","exports","module","define","amd","a","i","self","lastPos","lastTime","movements","tsm","suspectScore","lastLength","defaultLimit","tmsUserID","streamUserID","currentDomain","isUserIDUpdated","recordMovement","x","y","now","Date","dx","dy","dt","velocity","Math","sqrt","push","length","shift","getSuspectAutomationScore","navigator","webdriver","window","chrome","runtime","sendMessage","test","userAgent","languages","canvas","document","createElement","gl","getContext","softwareRenderers","debugInfo","getExtension","renderer","getParameter","UNMASKED_RENDERER_WEBGL","RENDERER","some","r","toLowerCase","includes","e","cdpDetected","Error","Object","defineProperty","get","key","storage","localStorage","setItem","removeItem","primaryCookie","cookie","match","groups","cookieDate","parse","yyyy","MM","dd","HH","mm","ss","fffff","currentDate","timeDiff","abs","getTime","currentValue","getCurrentValue","count","maxTouchPoints","domain","location","indexOf","currentEventStreamID","getItem","atob","uid","btoa","suspectVPN","isHuman","limit","varying","m","arr","nonLinear","irregular","updateScore","isInit","forcedScoreToUpdate","isHumanResult","hashValue","valueToSend","hash","setCurrentValue","getScoreFromLocal","getHash","src","image","Image","onload","opts","threshold","ratio","w","naturalWidth","h","naturalHeight","maxSize","scale","min","max","width","floor","height","ctx","drawImage","data","getImageData","totalPixels","blackPixels","g","b","isImageMostlyBlack","id","Promise","idresolve","idreject","fetch","method","then","res","json","catch","ex","oldSuspectScore","setTimeout","onerror","domainExtractedMatch","querySelector","getAttribute","href","domainExtracted","updateScoreToLocal","suspectScoreDetected","rgb","points","totalDx","totalDy","totalDt","totalDist","velocities","forEach","p","dist","avgVel","reduce","direction","atan2","round","PI","huristicAdaption","score","gray","rgbToGrayWight","replace","JSON","value","stringify","currentIndex","autoUpdate","start","addEventListener","visibilityState","body","hasAttribute","token","detail","msMaxTouchPoints","valid","clientX","clientY","t","touches","scrollX","scrollY","streamKey","agEvent","dispatchEvent","CustomEvent","init"],"sourceRoot":""}
1
+ {"version":3,"file":"tms.js","mappings":"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","sources":["webpack:///webpack/universalModuleDefinition","webpack:///./src/tms.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, () => {\nreturn ","(function(){\r\n \r\n \r\n let movements = [];\r\n\r\n let tsm = null;\r\n\r\n let lastPos;\r\n\r\n let lastTime;\r\n\r\n let suspectScore = 0;\r\n\r\n let lastLength = 0;\r\n\r\n let defaultLimit = 20;\r\n\r\n let tmsUserID = null;\r\n\r\n let streamUserID = null;\r\n\r\n let currentDomain = null;\r\n\r\n let isUserIDUpdated = false;\r\n\r\n let updateError = 2;\r\n\r\n const isTouchCapable = () => {\r\n return (\r\n 'ontouchstart' in window ||\r\n navigator.maxTouchPoints > 0 ||\r\n navigator.msMaxTouchPoints > 0 // For older IE\r\n );\r\n };\r\n \r\n function getSignature() {\r\n\r\n var singnatureSamples = movements.filter((x, i) => { return i < 16 });\r\n var signatureValue = singnatureSamples.reduce((x, y, i) => {\r\n return x + '|' + Math.round(y.dx + y.dy + y.dt + y.velocity);\r\n }, '');\r\n return btoa(signatureValue);\r\n }\r\n\r\n function recordMovement(x, y) {\r\n const now = Date.now();\r\n if (lastPos && lastTime) {\r\n const dx = x - lastPos.x;\r\n const dy = y - lastPos.y;\r\n const dt = now - lastTime;\r\n const distance = Math.sqrt(dx * dx + dy * dy);\r\n const velocity = distance / dt;\r\n movements.push({ dx, dy, dt, velocity });\r\n if(movements.length>100)movements.shift();\r\n }\r\n lastPos = { x, y };\r\n lastTime = now;\r\n }\r\n\r\n function huristicAdaption(points) {\r\n let totalDx = 0, totalDy = 0, totalDt = 0;\r\n let totalDist = 0;\r\n let velocities = [];\r\n points.forEach(p => {\r\n totalDx += p.dx;\r\n totalDy += p.dy;\r\n totalDt += p.dt;\r\n let dist = Math.sqrt(p.dx * p.dx + p.dy * p.dy);\r\n totalDist += dist;\r\n velocities.push(dist / (p.dt || 1e-5)); // avoid divide by zero\r\n });\r\n // Feature extraction\r\n let avgVel = velocities.length ? velocities.reduce((a, b) => a + b, 0) / velocities.length : 0;\r\n let direction = Math.atan2(totalDy, totalDx); // angle in radians, -π to π\r\n\r\n // Non-linear scaling and normalization\r\n // velocity: [0, max], direction: [-π, π], totalDist: scale as you wish\r\n let r = Math.round(255 * Math.min(1, avgVel / 5)); // scale velocity, or use other non-linear (logistic, sqrt, etc)\r\n let g = Math.round(255 * (direction + Math.PI) / (2 * Math.PI)); // normalize angle to [0,1]\r\n let b = Math.round(255 * Math.min(1, totalDist / 100)); // scale total distance, or another feature\r\n\r\n return [r, g, b];\r\n }\r\n\r\n\r\n function rgbToGrayWight(r, g, b) {\r\n const gray = 0.299 * r + 0.587 * g + 0.114 * b; // Accurate grayscale\r\n return Math.round(gray / 255 * 100); // Scale to 0-100\r\n }\r\n\r\n\r\n\r\n\r\n function onRecord()\r\n {\r\n document.addEventListener(\"mousemove\", e => recordMovement(e.clientX, e.clientY));\r\n document.addEventListener(\"mousedown\", e => recordMovement(e.clientX, e.clientY));\r\n document.addEventListener(\"touchstart\", e => {\r\n const t = e.touches[0];\r\n if(t && t.clientX)\r\n recordMovement(t.clientX, t.clientY);\r\n });\r\n\r\n document.addEventListener(\"touchend\", e => {\r\n const t = e.touches[0];\r\n if(t && t.clientX)\r\n recordMovement(t.clientX, t.clientY);\r\n });\r\n\r\n document.addEventListener(\"touchmove\", e => {\r\n const t = e.touches[0];\r\n if(t && t.clientX)\r\n recordMovement(t.clientX, t.clientY);\r\n });\r\n\r\n document.addEventListener(\"scroll\", e=>{ \r\n recordMovement(window.scrollX, window.scrollY);\r\n });\r\n }\r\n\r\n function getSuspectAutomationScore(){\r\n if(navigator.webdriver|| window.chrome?.runtime?.sendMessage ||/HeadlessChrome|Chrome-Lighthouse/i.test(navigator.userAgent))return 1000;\r\n if(navigator.languages?.length==0)return 500;\r\n try {\r\n const canvas = document.createElement('canvas');\r\n const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\r\n const softwareRenderers = ['SwiftShader', 'llvmpipe', 'softpipe', 'swrast', 'Basic Render Driver'];\r\n if (gl) {\r\n const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');\r\n const renderer = debugInfo ? gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) : gl.getParameter(gl.RENDERER); \r\n if (softwareRenderers.some(r=>renderer.toLowerCase().includes(r.toLowerCase()))) {\r\n return 700;\r\n }\r\n }\r\n } catch (e) { \r\n }\r\n let cdpDetected = false;\r\n const e = new Error();\r\n Object.defineProperty(e, 'stack', {\r\n get() {\r\n cdpDetected = true;\r\n }\r\n });\r\n if(cdpDetected)\r\n return 500;\r\n\r\n \r\n try {\r\n const key = '__ls_test__';\r\n const storage = window.localStorage;\r\n storage.setItem(key, '1');\r\n storage.removeItem(key);\r\n } catch (e) { \r\n return 300;\r\n }\r\n\r\n let primaryCookie = document.cookie.match(('AGID\\s?\\=\\s?(?<MM>\\\\d{2})(?<dd>\\\\d{2})(?<yyyy>\\\\d{4})(?<HH>\\\\d{2})(?<mm>\\\\d{2})(?<ss>\\\\d{2})(?<fffff>\\\\d{5})'));\r\n if(!primaryCookie || primaryCookie==null || !primaryCookie.groups) return 300;\r\n let cookieDate = new Date(Date.parse(`${primaryCookie.groups.yyyy}-${primaryCookie.groups.MM}-${primaryCookie.groups.dd}T${primaryCookie.groups.HH}:${primaryCookie.groups.mm}:${primaryCookie.groups.ss}.${primaryCookie.groups.fffff}Z`));\r\n let currentDate = new Date();\r\n let timeDiff = Math.abs(currentDate.getTime() - cookieDate.getTime()); \r\n let currentValue = getCurrentValue();\r\n if(timeDiff>10*1000&&(currentValue==null||!currentValue.count))return 300; \r\n //if(!(window.innerWidth==window.outerWidth&&window.innerHeight==window.outerHeight))return 400;\r\n if(!('ontouchstart' in window)&&navigator.maxTouchPoints>0)return 400; \r\n if((currentValue!=null&&currentValue.domain&&window.location.indexOf(currentValue.domain)==-1)||(currentDomain!=null&&window.location.indexOf(currentDomain)==-1))return 101;\r\n if(suspectVPN())return 100; \r\n return 0;\r\n }\r\n\r\n function isHuman(limit) {\r\n if(suspectScore>0)limit = suspectScore;\r\n if (movements.length - lastLength < (limit?limit:defaultLimit)) return false;\r\n lastLength = movements.length - 1;\r\n let varying = movements.some((m, i, arr) => i > 0 && (Math.abs(m.velocity - arr[i - 1].velocity) > 0.05));\r\n let nonLinear = movements.some((m, i, arr) => i > 1 && (Math.abs(m.dx - arr[i - 1].dx) > 0.1 || Math.abs(m.dy - arr[i - 1].dy) > 0.1));\r\n let irregular = movements.some(m => m.dt > 50 && m.dt < 500); \r\n return varying && nonLinear && irregular;\r\n }\r\n\r\n function halucinateClient(){\r\n //updateScore(false,-1);\r\n }\r\n\r\n function updateId(){\r\n return new Promise((idresolve,idreject)=>{\r\n try{\r\n fetch('/traffic/id',{method:'GET'}).then(res=>res.json()).then(data=>{\r\n if(data && data.id){\r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n currentValue.id = data.id;\r\n currentValue.uid = data.id;\r\n tmsUserID = data.id;\r\n setCurrentValue(currentValue);\r\n idresolve(data.id);\r\n }else{\r\n halucinateClient();\r\n idreject();\r\n }\r\n }).catch(ex=>{ halucinateClient();idreject();});\r\n }catch(ex){ halucinateClient();idreject(); }\r\n });\r\n }\r\n\r\n function getUId(){\r\n return new Promise((idresolve,idreject)=>{\r\n try{\r\n fetch('/traffic/uid',{method:'GET'}).then(res=>res.json()).then(data=>{\r\n if(data && data.id){\r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n currentValue.uid = data.id;\r\n currentValue.domain = data.domain;\r\n tmsUserID = data.id;\r\n currentDomain = data.domain;\r\n setCurrentValue(currentValue);\r\n idresolve(tmsUserID);\r\n }else{\r\n idresolve('MC4wLjAuMA==');\r\n }\r\n }).catch(ex=>{ idresolve('MC4wLjAuMA=='); });\r\n }catch(ex){ idresolve('MC4wLjAuMA=='); }\r\n });\r\n }\r\n\r\n function updateScore(isInit,forcedScoreToUpdate){\r\n let isHumanResult = isHuman();\r\n if(isHumanResult||isInit||forcedScoreToUpdate||suspectScore>0){ \r\n var hashValue = isInit&&!isHumanResult?getScoreFromLocal():getHash(forcedScoreToUpdate?forcedScoreToUpdate:suspectScore); \r\n if(hashValue==null||updateError<=0)return;\r\n let src = \"/tfp/\"+hashValue+'.png';\r\n var image = new Image();\r\n image.onload = function() {\r\n if(isImageMostlyBlack(image)){\r\n let curretValue = getCurrentValue();\r\n if(!curretValue.token||(curretValue.token&&curretValue.token!='UN')){\r\n {\r\n updateId().then(data=>{\r\n if(!curretValue.token)\r\n {\r\n curretValue.token='NA';\r\n setCurrentValue(curretValue);\r\n }\r\n }).catch(e=>{\r\n curretValue.token='UN';\r\n setCurrentValue(curretValue);\r\n });\r\n }\r\n }\r\n }else{\r\n\r\n }\r\n };\r\n image.onerror = function() {\r\n updateError--;\r\n let shareUrl = document.querySelector('meta[property=\"og:url\"]') ? document.querySelector('meta[property=\"og:url\"]').getAttribute(\"content\") : window.location.href;\r\n let domainExtractedMatch = shareUrl.match(/^(?:https?:\\/\\/)?(?:www\\.)?([^\\/]+)/i);\r\n let domainExtracted = domainExtractedMatch ? domainExtractedMatch[0] : null;\r\n if(domainExtracted!=null){\r\n image.src = domainExtracted+src;\r\n }\r\n };\r\n image.src = src;\r\n } \r\n }\r\n\r\n function updateScoreToLocal(){\r\n if(isHuman()){ \r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n currentValue.hash = getHash(suspectScore);\r\n setCurrentValue(currentValue);\r\n }\r\n }\r\n\r\n function getScoreFromLocal(){\r\n let currentValue = getCurrentValue();\r\n let valueToSend = null;\r\n if(currentValue!=null&&currentValue.hash)\r\n {\r\n valueToSend = currentValue.hash;\r\n delete currentValue.hash;\r\n setCurrentValue(currentValue);\r\n }\r\n return valueToSend;\r\n }\r\n\r\n function getHash(suspectScoreDetected){\r\n let rgb = suspectScoreDetected==0?huristicAdaption(movements):[0,0,0];\r\n let score = suspectScoreDetected==0?rgbToGrayWight(rgb[0],rgb[1],rgb[2]):(suspectScoreDetected==1?1:-1); \r\n let id = tsm && tsm.id ?'U-'+ tsm.id : 'UN';\r\n return btoa(`${id}|${score}|${rgb[0]}|${rgb[1]}|${rgb[2]}|${suspectScoreDetected??0}`).replace(/[^A-z0-9\\.]/gi,'-e');\r\n }\r\n\r\n function getCurrentValue()\r\n {\r\n if(window.localStorage.getItem(\"TSM\")==null)return null;\r\n return JSON.parse(window.localStorage.getItem(\"TSM\"));\r\n }\r\n\r\n function suspectVPN(){\r\n let currentValue = getCurrentValue();\r\n let currentEventStreamID = getCurrentEventStreamID(); \r\n if(currentValue!=null&&currentEventStreamID!=null&&currentValue.uid&&btoa('U-'+atob(currentValue.uid))!=currentEventStreamID)return true;\r\n if(streamUserID!=null&&tmsUserID!=null&&btoa('U-'+atob(tmsUserID))!=atob(streamUserID))return true;\r\n return false;\r\n }\r\n\r\n function getCurrentEventStreamID(){\r\n if(window.localStorage.getItem(\"AGSTREAM\")==null)return null;\r\n return atob(window.localStorage.getItem(\"AGSTREAM\"))\r\n }\r\n\r\n function setCurrentValue(value)\r\n {\r\n window.localStorage.setItem(\"TSM\", JSON.stringify(value));\r\n return true;\r\n }\r\n\r\n function isImageMostlyBlack(image, opts = {}) {\r\n const threshold = opts.threshold ?? 20; // 0–255, max brightness to count as black\r\n const ratio = opts.ratio ?? 0.95; // fraction of pixels that must be black\r\n\r\n const w = image.naturalWidth;\r\n const h = image.naturalHeight;\r\n\r\n // Downscale to speed up: sample at most 200x200\r\n const maxSize = 200;\r\n const scale = Math.min(1, maxSize / Math.max(w, h));\r\n\r\n const canvas = document.createElement('canvas');\r\n canvas.width = Math.max(1, Math.floor(w * scale));\r\n canvas.height = Math.max(1, Math.floor(h * scale));\r\n const ctx = canvas.getContext('2d');\r\n\r\n ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\r\n\r\n const { data, width, height } = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n const totalPixels = width * height;\r\n\r\n let blackPixels = 0;\r\n for (let i = 0; i < data.length; i += 4) {\r\n const r = data[i];\r\n const g = data[i + 1];\r\n const b = data[i + 2];\r\n const a = data[i + 3];\r\n\r\n // Treat transparent pixels as non‑black (optional)\r\n if (a === 0) continue;\r\n\r\n // brightness via simple max channel\r\n const brightness = Math.max(r, g, b);\r\n\r\n if (brightness <= threshold) {\r\n blackPixels++;\r\n }\r\n }\r\n\r\n return blackPixels / totalPixels >= ratio;\r\n }\r\n\r\n let startPeriod = 5000;\r\n let startIndex = 10;\r\n let currentIndex = 0;\r\n\r\n function autoUpdate(isInit){\r\n updateScore(isInit);\r\n currentIndex++;\r\n if(currentIndex<startIndex)\r\n setTimeout(() => {\r\n autoUpdate(false); \r\n }, startPeriod*currentIndex);\r\n }\r\n\r\n function start(){\r\n autoUpdate(true);\r\n document.addEventListener('click',()=>{updateScore(false);});\r\n document.addEventListener('touchend',()=>{updateScore(false);}); \r\n window.addEventListener('beforeunload',()=>{updateScoreToLocal();});\r\n document.addEventListener(\"visibilitychange\", () => {\r\n if (document.visibilityState === \"hidden\") {\r\n updateScoreToLocal();\r\n }\r\n }); \r\n }\r\n\r\n function attachListener(){\r\n document.body.addEventListener('ag.tsm.valid',(e)=>{\r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n currentValue.token = e.detail.token;\r\n currentValue.id = e.detail.id;\r\n setCurrentValue(currentValue);\r\n });\r\n }\r\n\r\n function init(){\r\n tsm = getCurrentValue(); \r\n let tsmElement = document.getElementById('agTSM');\r\n if(tsmElement!=null){\r\n let tsmValue = JSON.parse(tsmElement.textContent);\r\n if(tsmValue!=null){\r\n if(tsm == null || !tsm.id){\r\n tmsUserID = tsm.id = tsmValue.id;\r\n setCurrentValue(tsm);\r\n }\r\n }\r\n }\r\n if(document && document.body && document.body!=null && document.body.hasAttribute('r-id')){\r\n attachListener();\r\n }\r\n else{\r\n suspectScore = getSuspectAutomationScore();\r\n defaultLimit = isTouchCapable()?2:20;\r\n if(tsm==null||!tsm.valid){\r\n onRecord();\r\n start();\r\n }\r\n\r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n if(currentValue.count)currentValue.count++;\r\n else currentValue.count=1;\r\n if(currentValue.count<10)\r\n setCurrentValue(currentValue);\r\n\r\n window.addEventListener('ag.event.stream',(e)=>{\r\n streamUserID = e.detail.streamKey;\r\n if(suspectVPN()){\r\n updateScore(false,1);\r\n } \r\n }); \r\n if(window.agEvent){\r\n window.dispatchEvent(new CustomEvent('ag.event.stream.update'));\r\n }\r\n }\r\n }\r\n \r\n init();\r\n\r\n})();\r\n\r\n\r\n"],"names":["root","factory","exports","module","define","amd","a","i","self","lastPos","lastTime","movements","tsm","suspectScore","lastLength","defaultLimit","tmsUserID","streamUserID","currentDomain","updateError","recordMovement","x","y","now","Date","dx","dy","dt","velocity","Math","sqrt","push","length","shift","isHuman","limit","varying","some","m","arr","abs","nonLinear","irregular","updateScore","isInit","forcedScoreToUpdate","isHumanResult","hashValue","currentValue","getCurrentValue","valueToSend","hash","setCurrentValue","getScoreFromLocal","getHash","src","image","Image","onload","opts","threshold","ratio","w","naturalWidth","h","naturalHeight","maxSize","scale","min","max","canvas","document","createElement","width","floor","height","ctx","getContext","drawImage","data","getImageData","totalPixels","blackPixels","r","g","b","isImageMostlyBlack","curretValue","token","Promise","idresolve","idreject","fetch","method","then","res","json","id","uid","catch","ex","e","onerror","domainExtractedMatch","querySelector","getAttribute","window","location","href","match","domainExtracted","updateScoreToLocal","suspectScoreDetected","rgb","points","totalDx","totalDy","totalDt","totalDist","velocities","forEach","p","dist","avgVel","reduce","direction","atan2","round","PI","huristicAdaption","score","gray","rgbToGrayWight","btoa","replace","localStorage","getItem","JSON","parse","suspectVPN","currentEventStreamID","atob","value","setItem","stringify","currentIndex","autoUpdate","setTimeout","start","addEventListener","visibilityState","tsmElement","getElementById","tsmValue","textContent","body","hasAttribute","detail","navigator","webdriver","chrome","runtime","sendMessage","test","userAgent","languages","gl","softwareRenderers","debugInfo","getExtension","renderer","getParameter","UNMASKED_RENDERER_WEBGL","RENDERER","toLowerCase","includes","cdpDetected","Error","Object","defineProperty","get","key","storage","removeItem","primaryCookie","cookie","groups","cookieDate","yyyy","MM","dd","HH","mm","ss","fffff","currentDate","timeDiff","getTime","count","maxTouchPoints","domain","indexOf","getSuspectAutomationScore","msMaxTouchPoints","valid","clientX","clientY","t","touches","scrollX","scrollY","streamKey","agEvent","dispatchEvent","CustomEvent","init"],"sourceRoot":""}
package/tmsverify.js ADDED
@@ -0,0 +1 @@
1
+ !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var o=e();for(var n in o)("object"==typeof exports?exports:t)[n]=o[n]}}(self,(()=>((()=>{let t=null,e=null,o=[];function n(){var t=document.body.getAttribute("r-id"),e=new FormData;e.append("id",c());try{fetch("/traffic/"+t,{method:"POST",body:e}).then((t=>{try{t.json().then((t=>{document.body.dispatchEvent(new CustomEvent("ag.tsm.valid",{detail:t}))}))}catch(t){}window.location.reload()})).catch((t=>{window.location.reload()}))}catch(t){window.location.reload()}}function d(){return null!=window.localStorage.getItem("TSM")?JSON.parse(window.localStorage.getItem("TSM")):null}function c(){var t=o.filter(((t,e)=>e<16)).reduce(((t,e,o)=>t+"|"+Math.round(e.dx+e.dy+e.dt+e.velocity)),"");return btoa(t)}function a(n,d){const c=Date.now();if(e&&t){const a=n-e.x,i=d-e.y,l=c-t,r=Math.sqrt(a*a+i*i)/l;o.push({dx:a,dy:i,dt:l,velocity:r})}e={x:n,y:d},t=c}function i(){document.addEventListener("mousemove",(t=>a(t.clientX,t.clientY))),document.addEventListener("touchstart",(t=>{const e=t.touches[0];a(e.clientX,e.clientY)})),document.addEventListener("touchend",(t=>{const e=t.touches[0];a(e.clientX,e.clientY)})),document.addEventListener("touchmove",(t=>{const e=t.touches[0];a(e.clientX,e.clientY)}));var t=0,e=setInterval((()=>{if(t++,function(t){if(o.length<(t||20))return!1;let e=o.some(((t,e,o)=>e>0&&Math.abs(t.velocity-o[e-1].velocity)>.05)),n=o.some(((t,e,o)=>e>1&&(Math.abs(t.dx-o[e-1].dx)>.1||Math.abs(t.dy-o[e-1].dy)>.1))),d=o.some((t=>t.dt>50&&t.dt<500));return e&&n&&d}()&&window.location.href.indexOf(".html")<0&&(clearInterval(e),n()),t>2){clearInterval(e),document.body.classList.remove("auto");var d=document.querySelector("p"),c=d.getBoundingClientRect(),a=getComputedStyle(d),i=parseInt(a.paddingTop.replace(/[^0-9\.]/gi,"")),l=c.left+i,r=l+3.6*i,u=c.top+i,s=u+3.6*i;d.onclick=t=>{l<t.x&&t.x<r&&u<t.y&&t.y<s&&(document.body.classList.add("verified"),n())},d.ontouchend=t=>{var e=t.touches[0].pageX,o=t.touches[0].pageY;l<e&&e<r&&u<o&&o<s&&(document.body.classList.add("verified"),n())}}}),1e3)}window.onfocus=function(){null!=window.localStorage.getItem("TSM")&&window.location.reload()};var l=d();null!=l&&l.id&&l.token?function(t){var e=document.body.getAttribute("r-id"),o=d(),n=new FormData;n.append("id",c()),n.append("oldId",o.id),n.append("token",o.token),function(){if(null!=window.localStorage.getItem("TSM")){var t=JSON.parse(window.localStorage.getItem("TSM"));delete t.id,delete t.token,t?window.localStorage.setItem("TSM",JSON.stringify(t)):window.localStorage.remove("TSM")}}();try{fetch("/traffic/"+e,{method:"POST",body:n}).then((e=>{try{e.json().then((t=>{document.body.dispatchEvent(new CustomEvent("ag.tsm.valid",{detail:t})),window.location.reload()}))}catch(e){t()}})).catch((e=>{t()}))}catch(e){t()}}(i):(i(),document.addEventListener("DOMContentLoaded",(t=>{try{document.querySelector(".bot-issue label").addEventListener("click",(t=>{null!=window.localStorage.getItem("TSM")&&window.localStorage.removeItem("TSM"),t.target.remove(),function(){document.body.getAttribute("r-id");var t=new FormData;t.append("id",c());try{fetch("/traffic/report",{method:"POST",body:t}).then((t=>{try{t.json().then((t=>{window.location.reload()}))}catch(t){}})).catch((t=>{}))}catch(t){}}()}))}catch(t){}})))})(),{})));
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tmsverify.js","mappings":"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","sources":["webpack:///webpack/universalModuleDefinition","webpack:///./src/tmsverify.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, () => {\nreturn ","(() => {\r\n let lastTime = null;\r\n let lastPos = null;\r\n let movements = [];\r\n\r\n function verify() {\r\n var rid = document.body.getAttribute('r-id');\r\n var data = new FormData();\r\n data.append(\"id\", getSignature());\r\n try {\r\n fetch('/traffic/' + rid, {\r\n method: 'POST',\r\n body: data\r\n }).then(response => {\r\n try {\r\n response.json().then((responseData) => { \r\n document.body.dispatchEvent(new CustomEvent('ag.tsm.valid', { detail: responseData }));\r\n });\r\n } catch (e) {}\r\n window.location.reload();\r\n }).catch(e => { window.location.reload(); })\r\n } catch (error) {\r\n window.location.reload();\r\n }\r\n }\r\n\r\n function report() {\r\n var rid = document.body.getAttribute('r-id');\r\n var data = new FormData();\r\n data.append(\"id\", getSignature());\r\n try {\r\n fetch('/traffic/report', {\r\n method: 'POST',\r\n body: data\r\n }).then(response => {\r\n try {\r\n response.json().then((responseData) => { \r\n window.location.reload();\r\n });\r\n } catch (e) {} \r\n }).catch(e => { })\r\n } catch (error) {\r\n \r\n }\r\n }\r\n\r\n function getCurrentValue() {\r\n if (window.localStorage.getItem('TSM') != null) return JSON.parse(window.localStorage.getItem('TSM'));\r\n return null;\r\n }\r\n\r\n function resetTSMValidation() {\r\n if (window.localStorage.getItem('TSM') != null) {\r\n var valueToReset = JSON.parse(window.localStorage.getItem('TSM'));\r\n delete valueToReset.id;\r\n delete valueToReset.token;\r\n if (valueToReset)\r\n window.localStorage.setItem('TSM', JSON.stringify(valueToReset));\r\n else\r\n window.localStorage.remove('TSM');\r\n }\r\n }\r\n\r\n function verifyUpdate(engageValidation) {\r\n var rid = document.body.getAttribute('r-id');\r\n var currentValue = getCurrentValue();\r\n var data = new FormData();\r\n data.append(\"id\", getSignature());\r\n data.append(\"oldId\", currentValue.id);\r\n data.append(\"token\", currentValue.token);\r\n resetTSMValidation();\r\n try {\r\n fetch('/traffic/' + rid, {\r\n method: 'POST',\r\n body: data\r\n }).then(response => {\r\n try {\r\n response.json().then((responseData) => { \r\n document.body.dispatchEvent(new CustomEvent('ag.tsm.valid', { detail: responseData }));\r\n window.location.reload();\r\n });\r\n } catch (e) { engageValidation(); } \r\n }).catch(e => { engageValidation(); })\r\n } catch (error) {\r\n engageValidation();\r\n }\r\n }\r\n\r\n function getSignature() {\r\n\r\n var singnatureSamples = movements.filter((x, i) => { return i < 16 });\r\n var signatureValue = singnatureSamples.reduce((x, y, i) => {\r\n return x + '|' + Math.round(y.dx + y.dy + y.dt + y.velocity);\r\n }, '');\r\n return btoa(signatureValue);\r\n }\r\n\r\n function recordMovement(x, y) {\r\n const now = Date.now();\r\n if (lastPos && lastTime) {\r\n const dx = x - lastPos.x;\r\n const dy = y - lastPos.y;\r\n const dt = now - lastTime;\r\n const distance = Math.sqrt(dx * dx + dy * dy);\r\n const velocity = distance / dt;\r\n movements.push({ dx, dy, dt, velocity });\r\n }\r\n lastPos = { x, y };\r\n lastTime = now;\r\n }\r\n\r\n function listen() {\r\n\r\n document.addEventListener(\"mousemove\", e => recordMovement(e.clientX, e.clientY));\r\n\r\n document.addEventListener(\"touchstart\", e => {\r\n const t = e.touches[0];\r\n recordMovement(t.clientX, t.clientY);\r\n });\r\n\r\n document.addEventListener(\"touchend\", e => {\r\n const t = e.touches[0];\r\n recordMovement(t.clientX, t.clientY);\r\n });\r\n\r\n document.addEventListener(\"touchmove\", e => {\r\n const t = e.touches[0];\r\n recordMovement(t.clientX, t.clientY);\r\n }); \r\n\r\n function isHuman(limit) {\r\n if (movements.length < (limit ? limit : 20)) return false;\r\n let varying = movements.some((m, i, arr) => i > 0 && (Math.abs(m.velocity - arr[i - 1].velocity) > 0.05));\r\n let nonLinear = movements.some((m, i, arr) => i > 1 && (Math.abs(m.dx - arr[i - 1].dx) > 0.1 || Math.abs(m.dy - arr[i - 1].dy) > 0.1));\r\n let irregular = movements.some(m => m.dt > 50 && m.dt < 500);\r\n return varying && nonLinear && irregular;\r\n }\r\n var checkMaxCount = 2;\r\n var checkCount = 0;\r\n var valuation = setInterval(() => {\r\n checkCount++;\r\n if (isHuman() && window.location.href.indexOf('.html') < 0) {\r\n clearInterval(valuation);\r\n verify();\r\n }\r\n if (checkCount > checkMaxCount) {\r\n clearInterval(valuation);\r\n document.body.classList.remove('auto');\r\n var actionButton = document.querySelector('p');\r\n var actionButtonBounds = actionButton.getBoundingClientRect();\r\n var actionButtonComputedStyle = getComputedStyle(actionButton);\r\n var actionButtonOffset = parseInt(actionButtonComputedStyle.paddingTop.replace(/[^0-9\\.]/gi, ''));\r\n var actionLeft = actionButtonBounds.left + actionButtonOffset;\r\n var actionRight = actionLeft + actionButtonOffset * 3.6;\r\n var actionTop = actionButtonBounds.top + actionButtonOffset;\r\n var actionBottom = actionTop + actionButtonOffset * 3.6;\r\n actionButton.onclick = (e) => {\r\n if (actionLeft < e.x && e.x < actionRight && actionTop < e.y && e.y < actionBottom) {\r\n document.body.classList.add('verified');\r\n verify();\r\n }\r\n };\r\n actionButton.ontouchend = (e) => {\r\n var x = e.touches[0].pageX;\r\n var y = e.touches[0].pageY;\r\n if (actionLeft < x && x < actionRight && actionTop < y && y < actionBottom) {\r\n document.body.classList.add('verified');\r\n verify();\r\n }\r\n };\r\n }\r\n }, 1000);\r\n }\r\n window.onfocus = function () {\r\n if (window.localStorage.getItem(\"TSM\") != null) window.location.reload();\r\n };\r\n var currentValueInit = getCurrentValue();\r\n if (currentValueInit != null && currentValueInit.id && currentValueInit.token) {\r\n verifyUpdate(listen);\r\n }\r\n else {\r\n listen();\r\n document.addEventListener('DOMContentLoaded', (event) => {\r\n try {\r\n document.querySelector('.bot-issue label').addEventListener('click', (e) => { \r\n if (window.localStorage.getItem('TSM') != null) window.localStorage.removeItem('TSM');\r\n e.target.remove();\r\n report(); \r\n });\r\n } catch (e) {}\r\n });\r\n }\r\n\r\n})();"],"names":["root","factory","exports","module","define","amd","a","i","self","lastTime","lastPos","movements","verify","rid","document","body","getAttribute","data","FormData","append","getSignature","fetch","method","then","response","json","responseData","dispatchEvent","CustomEvent","detail","e","window","location","reload","catch","error","getCurrentValue","localStorage","getItem","JSON","parse","signatureValue","filter","x","reduce","y","Math","round","dx","dy","dt","velocity","btoa","recordMovement","now","Date","sqrt","push","listen","addEventListener","clientX","clientY","t","touches","checkCount","valuation","setInterval","limit","length","varying","some","m","arr","abs","nonLinear","irregular","isHuman","href","indexOf","clearInterval","classList","remove","actionButton","querySelector","actionButtonBounds","getBoundingClientRect","actionButtonComputedStyle","getComputedStyle","actionButtonOffset","parseInt","paddingTop","replace","actionLeft","left","actionRight","actionTop","top","actionBottom","onclick","add","ontouchend","pageX","pageY","onfocus","currentValueInit","id","token","engageValidation","currentValue","valueToReset","setItem","stringify","resetTSMValidation","verifyUpdate","event","removeItem","target","report"],"sourceRoot":""}