ibp-tms 1.0.73 → 1.0.74
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/package.json +1 -1
- package/tms.js +1 -1
- package/tms.js.map +1 -1
package/package.json
CHANGED
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,d=0,l=20,a=null,r=null,u=null,c=2;function s(o,i){const d=Date.now();if(t&&e){const l=o-t.x,a=i-t.y,r=d-e,u=Math.sqrt(l*l+a*a)/r;n.push({dx:l,dy:a,dt:r,velocity:u}),n.length>100&&n.shift()}t={x:o,y:i},e=d}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;let n=v();return
|
|
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,d=0,l=20,a=null,r=null,u=null,c=2;function s(o,i){const d=Date.now();if(t&&e){const l=o-t.x,a=i-t.y,r=d-e,u=Math.sqrt(l*l+a*a)/r;n.push({dx:l,dy:a,dt:r,velocity:u}),n.length>100&&n.shift()}t={x:o,y:i},e=d}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;let n=v();return n&&null!=n&&n.domain&&-1==window.location.indexOf(n.domain)||null!=u&&-1==window.location.indexOf(u)?101:E()?100:0}function m(t){if(i>0&&(t=i),n.length-d<(t||l))return!1;d=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))),a=n.some((t=>t.dt>50&&t.dt<500));return e&&o&&a}function f(t,e){let n=m();if(n||t||void 0!==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(void 0!==e?e:i);if(null==o||c<=0)return;let l="/tfp/"+o+".png";var d=new Image;d.onload=function(){if(!document.body.hasAttribute("r-id")&&function(t,e={}){const n=e.threshold??20,o=e.ratio??.95,i=t.naturalWidth,d=t.naturalHeight,l=200,a=Math.min(1,l/Math.max(i,d)),r=document.createElement("canvas");r.width=Math.max(1,Math.floor(i*a)),r.height=Math.max(1,Math.floor(d*a));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}(d)){let t=v();null!=t&&t.id&&i<100&&t.token&&"UN"!=t.token&&"NA"!=t.token&&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,a=n.id,y(e),t(n.id)}else e()})).catch((t=>{e()}))}catch(t){e()}})).then((t=>{})).catch((e=>{t.token="UN",y(t)}))}},d.onerror=function(){if(c<=0)return;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&&(d.src=e+l)},d.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,d=[];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,d.push(l/(t.dt||1e-5))}));let l=d.length?d.reduce(((t,e)=>t+e),0)/d.length:0,a=Math.atan2(n,e);return[Math.round(255*Math.min(1,l/5)),Math.round(255*(a+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,d=o&&o.id?"U-"+o.id:"UN";return btoa(`${d}|${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 E(){return null!=r&&null!=a&&btoa("U-"+atob(a))!=atob(r)}function y(t){return window.localStorage.setItem("TSM",JSON.stringify(t)),!0}let M=0;function p(t){f(t),M++,M<10&&setTimeout((()=>{p(!1)}),5e3*M)}function b(){p(!0),document.addEventListener("click",(()=>{f(!1)})),document.addEventListener("touchend",(()=>{f(!1)})),window.addEventListener("beforeunload",(()=>{g()})),document.addEventListener("visibilitychange",(()=>{"hidden"===document.visibilityState&&g()}))}function x(){o=v();let t=document.getElementById("agTSM");if(null!=t){let e=JSON.parse(t.textContent);null!=e&&(null!=o&&o.id&&o.uid&&o.id==e.id||(null==o&&(o={}),o.uid=o.id=e.id,y(o)))}return null!=o&&o.uid&&(a=o.uid,r=null==window.localStorage.getItem("AGSTREAM")?null:window.localStorage.getItem("AGSTREAM")),null!=t}function S(){E()&&(i=h(),f(!1,-1))}!function(){if(x()&&document.addEventListener("DOMContentLoaded",(()=>{x(),S()})),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)})),b());let t=v();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,S()})),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 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&¤tValue!=null&¤tValue.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 webScrapRequestReminder(){\r\n // Disabled\r\n }\r\n\r\n function updateScore(isInit,forcedScoreToUpdate){\r\n let isHumanResult = isHuman();\r\n if(isHumanResult||isInit||typeof(forcedScoreToUpdate)!='undefined'||suspectScore>0){ \r\n var hashValue = isInit&&!isHumanResult?getScoreFromLocal():getHash(typeof(forcedScoreToUpdate)!='undefined'?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(!document.body.hasAttribute('r-id') && isImageMostlyBlack(image)){\r\n let curretValue = getCurrentValue();\r\n //Disabled for reduce hits\r\n //if(!curretValue.token||(curretValue.token&&curretValue.token!='UN')){\r\n if(curretValue!=null&&curretValue.id&&suspectScore<100&&curretValue.token&&curretValue.token!='UN'&&curretValue.token!='NA'){\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 if(suspectScore>0){\r\n webScrapRequestReminder();\r\n }\r\n };\r\n image.onerror = function() {\r\n if(updateError<=0) return;\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&¤tValue.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 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 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 updateTSM(){\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 || !tsm.uid || tsm.id!=tsmValue.id){\r\n if(tsm==null)tsm={};\r\n tsm.uid = tsm.id = tsmValue.id;\r\n setCurrentValue(tsm);\r\n }\r\n }\r\n }\r\n if(tsm!=null&&tsm.uid){\r\n tmsUserID = tsm.uid;\r\n streamUserID = getCurrentEventStreamID();\r\n }\r\n return tsmElement!=null;\r\n }\r\n\r\n function afterUpdatingUserID(){\r\n if(suspectVPN()){\r\n suspectScore = getSuspectAutomationScore();\r\n updateScore(false,-1);\r\n } \r\n }\r\n\r\n function init(){\r\n \r\n if(updateTSM()){\r\n document.addEventListener('DOMContentLoaded',()=>{\r\n updateTSM();\r\n afterUpdatingUserID();\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 afterUpdatingUserID();\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","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","currentValue","getCurrentValue","maxTouchPoints","domain","location","indexOf","suspectVPN","isHuman","limit","varying","m","arr","abs","nonLinear","irregular","updateScore","isInit","forcedScoreToUpdate","isHumanResult","hashValue","valueToSend","hash","setCurrentValue","getScoreFromLocal","getHash","src","image","Image","onload","body","hasAttribute","opts","threshold","ratio","w","naturalWidth","h","naturalHeight","maxSize","scale","min","max","width","floor","height","ctx","drawImage","data","getImageData","totalPixels","blackPixels","g","b","isImageMostlyBlack","curretValue","id","token","Promise","idresolve","idreject","fetch","method","then","res","json","uid","catch","ex","onerror","domainExtractedMatch","querySelector","getAttribute","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","atob","value","setItem","stringify","currentIndex","autoUpdate","setTimeout","start","addEventListener","visibilityState","updateTSM","tsmElement","getElementById","tsmValue","textContent","afterUpdatingUserID","detail","msMaxTouchPoints","valid","clientX","clientY","t","touches","scrollX","scrollY","count","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&¤tValue!=null&¤tValue.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 webScrapRequestReminder(){\r\n // Disabled\r\n }\r\n\r\n function updateScore(isInit,forcedScoreToUpdate){\r\n let isHumanResult = isHuman();\r\n if(isHumanResult||isInit||typeof(forcedScoreToUpdate)!='undefined'||suspectScore>0){ \r\n var hashValue = isInit&&!isHumanResult?getScoreFromLocal():getHash(typeof(forcedScoreToUpdate)!='undefined'?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(!document.body.hasAttribute('r-id') && isImageMostlyBlack(image)){\r\n let curretValue = getCurrentValue();\r\n //Disabled for reduce hits\r\n //if(!curretValue.token||(curretValue.token&&curretValue.token!='UN')){\r\n if(curretValue!=null&&curretValue.id&&suspectScore<100&&curretValue.token&&curretValue.token!='UN'&&curretValue.token!='NA'){\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 if(suspectScore>0){\r\n webScrapRequestReminder();\r\n }\r\n };\r\n image.onerror = function() {\r\n if(updateError<=0) return;\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&¤tValue.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 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 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 updateTSM(){\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 || !tsm.uid || tsm.id!=tsmValue.id){\r\n if(tsm==null)tsm={};\r\n tsm.uid = tsm.id = tsmValue.id;\r\n setCurrentValue(tsm);\r\n }\r\n }\r\n }\r\n if(tsm!=null&&tsm.uid){\r\n tmsUserID = tsm.uid;\r\n streamUserID = getCurrentEventStreamID();\r\n }\r\n return tsmElement!=null;\r\n }\r\n\r\n function afterUpdatingUserID(){\r\n if(suspectVPN()){\r\n suspectScore = getSuspectAutomationScore();\r\n updateScore(false,-1);\r\n } \r\n }\r\n\r\n function init(){\r\n \r\n if(updateTSM()){\r\n document.addEventListener('DOMContentLoaded',()=>{\r\n updateTSM();\r\n afterUpdatingUserID();\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 afterUpdatingUserID();\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","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","currentValue","getCurrentValue","domain","location","indexOf","suspectVPN","isHuman","limit","varying","m","arr","abs","nonLinear","irregular","updateScore","isInit","forcedScoreToUpdate","isHumanResult","hashValue","valueToSend","hash","setCurrentValue","getScoreFromLocal","getHash","src","image","Image","onload","body","hasAttribute","opts","threshold","ratio","w","naturalWidth","h","naturalHeight","maxSize","scale","min","max","width","floor","height","ctx","drawImage","data","getImageData","totalPixels","blackPixels","g","b","isImageMostlyBlack","curretValue","id","token","Promise","idresolve","idreject","fetch","method","then","res","json","uid","catch","ex","onerror","domainExtractedMatch","querySelector","getAttribute","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","atob","value","setItem","stringify","currentIndex","autoUpdate","setTimeout","start","addEventListener","visibilityState","updateTSM","tsmElement","getElementById","tsmValue","textContent","afterUpdatingUserID","detail","maxTouchPoints","msMaxTouchPoints","valid","clientX","clientY","t","touches","scrollX","scrollY","count","streamKey","agEvent","dispatchEvent","CustomEvent","init"],"sourceRoot":""}
|