ibp-tms 1.0.73 → 1.0.75
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/tmsverify.js +1 -1
- package/tmsverify.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":""}
|
package/tmsverify.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 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",t);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(){document.body.getAttribute("r-id");var t=new FormData;t.append("id",i());try{fetch("/traffic/report",{method:"POST",body:t}).then((t=>{try{t.json().then((t=>{window.location.reload()}))}catch(t){}})).catch((t=>{}))}catch(t){}}function a(){return null!=window.localStorage.getItem("TSM")?JSON.parse(window.localStorage.getItem("TSM")):null}function c(t){null==t||null==t?window.localStorage.removeItem("TSM"):window.localStorage.setItem("TSM",JSON.stringify(t))}function r(){try{if(null!=a()){var t=a();delete t.id,delete t.token,c(t||null)}}catch(t){}}function i(){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 l(n,d){const a=Date.now();if(e&&t){const c=n-e.x,r=d-e.y,i=a-t,l=Math.sqrt(c*c+r*r)/i;o.push({dx:c,dy:r,dt:i,velocity:l})}e={x:n,y:d},t=a}window.onfocus=function(){null!=a()&&window.location.reload()};var u=a();null!=u&&u.id&&u.token&&"UN"!=u.token&&"NA"!=u.token&&function(t){var e=document.body.getAttribute("r-id"),o=a(),n=new FormData;if(n.append("id",i()),n.append("oldId",o.id),n.append("token",o.token),function(){var t=a();return t&&null!=t||(t={}),t.verifyUpdateCount?t.verifyUpdateCount++:t.verifyUpdateCount=1,c(t),t.verifyUpdateCount>2}())return c(null),void d();r();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((()=>{t(!0)}))}catch(e){t(!0)}})).catch((e=>{t(!0)}))}catch(e){t(!0)}}((()=>{})),function(t){t&&r(),document.addEventListener("mousemove",(t=>l(t.clientX,t.clientY))),document.addEventListener("touchstart",(t=>{const e=t.touches[0];l(e.clientX,e.clientY)})),document.addEventListener("touchend",(t=>{const e=t.touches[0];l(e.clientX,e.clientY)})),document.addEventListener("touchmove",(t=>{const e=t.touches[0];l(e.clientX,e.clientY)}));var e=0;("ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0)&&(e=0);var d=0,a=setInterval((()=>{if(d++,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(a),n()),d>e){clearInterval(a),document.body.classList.remove("auto");var t=document.querySelector("p"),c=t.getBoundingClientRect(),r=getComputedStyle(t),i=parseInt(r.paddingTop.replace(/[^0-9\.]/gi,"")),l=c.left+i,u=l+3.6*i,s=c.top+i,m=s+3.6*i;t.onclick=t=>{l<t.x&&t.x<u&&s<t.y&&t.y<m&&(document.body.classList.add("verified"),n())},t.
|
|
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",t);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(){document.body.getAttribute("r-id");var t=new FormData;t.append("id",i());try{fetch("/traffic/report",{method:"POST",body:t}).then((t=>{try{t.json().then((t=>{window.location.reload()}))}catch(t){}})).catch((t=>{}))}catch(t){}}function a(){return null!=window.localStorage.getItem("TSM")?JSON.parse(window.localStorage.getItem("TSM")):null}function c(t){null==t||null==t?window.localStorage.removeItem("TSM"):window.localStorage.setItem("TSM",JSON.stringify(t))}function r(){try{if(null!=a()){var t=a();delete t.id,delete t.token,c(t||null)}}catch(t){}}function i(){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 l(n,d){const a=Date.now();if(e&&t){const c=n-e.x,r=d-e.y,i=a-t,l=Math.sqrt(c*c+r*r)/i;o.push({dx:c,dy:r,dt:i,velocity:l})}e={x:n,y:d},t=a}window.onfocus=function(){null!=a()&&window.location.reload()};var u=a();null!=u&&u.id&&u.token&&"UN"!=u.token&&"NA"!=u.token&&function(t){var e=document.body.getAttribute("r-id"),o=a(),n=new FormData;if(n.append("id",i()),n.append("oldId",o.id),n.append("token",o.token),function(){var t=a();return t&&null!=t||(t={}),t.verifyUpdateCount?t.verifyUpdateCount++:t.verifyUpdateCount=1,c(t),t.verifyUpdateCount>2}())return c(null),void d();r();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((()=>{t(!0)}))}catch(e){t(!0)}})).catch((e=>{t(!0)}))}catch(e){t(!0)}}((()=>{})),function(t){t&&r(),document.addEventListener("mousemove",(t=>l(t.clientX,t.clientY))),document.addEventListener("touchstart",(t=>{const e=t.touches[0];l(e.clientX,e.clientY)})),document.addEventListener("touchend",(t=>{const e=t.touches[0];l(e.clientX,e.clientY)})),document.addEventListener("touchmove",(t=>{const e=t.touches[0];l(e.clientX,e.clientY)}));var e=0;("ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0)&&(e=0);var d=0,a=setInterval((()=>{if(d++,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(a),n()),d>e){clearInterval(a),document.body.classList.remove("auto");var t=document.querySelector("p"),c=t.getBoundingClientRect(),r=getComputedStyle(t),i=parseInt(r.paddingTop.replace(/[^0-9\.]/gi,"")),l=c.left+i,u=l+3.6*i,s=c.top+i,m=s+3.6*i;t.onclick=t=>{l<t.x&&t.x<u&&s<t.y&&t.y<m&&(document.body.classList.add("verified"),n())},t.ontouchstart=t=>{var e=t.touches[0].pageX,o=t.touches[0].pageY;l-16<e&&e<u+16&&s-16<o&&o<m+16&&(document.body.classList.add("verified"),n())}}}),0==e?10:1e3)}(),document.addEventListener("DOMContentLoaded",(t=>{try{document.querySelector(".bot-issue label").addEventListener("click",(t=>{null!=a()&&c(null),t.target.remove(),d()}))}catch(t){}try{var e=window.getComputedStyle(document.body,":after").getPropertyValue("content");"string"==typeof e&&""!=e&&(document.body.classList+=" "+e.replace(/"/gi,""))}catch(t){}})),setTimeout((()=>{var t,e=document.createElement("header");e.className="mdl-layout__header item-h",e.style.opacity="0",document.body.prepend(e),t=window.getComputedStyle(e).getPropertyValue("background-color"),e.remove();var o=document.createElement("style");o.innerHTML=`\n .header {\n background: ${t};\n }\n body .bot-human p,body .bot-message p,body .bot-message h1,body h2.error,body.inverse footer h3 {\n color: inherit!important;\n }`,document.head.appendChild(o)}),10)})(),{})));
|
package/tmsverify.js.map
CHANGED
|
@@ -1 +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 data.append(\"id\", rid);\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 setCurrentValue(tsmValue){\r\n if(tsmValue==undefined || tsmValue==null)\r\n window.localStorage.removeItem('TSM');\r\n else\r\n window.localStorage.setItem('TSM', JSON.stringify(tsmValue));\r\n }\r\n\r\n function resetTSMValidation() {\r\n try{\r\n if (getCurrentValue() != null) {\r\n var valueToReset = getCurrentValue();\r\n delete valueToReset.id;\r\n delete valueToReset.token;\r\n if (valueToReset)\r\n setCurrentValue(valueToReset);\r\n else\r\n setCurrentValue(null);\r\n }\r\n }catch(e){}\r\n }\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 if(!incrementVerifyUpdateCount()){\r\n resetTSMValidation();\r\n }\r\n else{\r\n setCurrentValue(null);\r\n report();\r\n return; \r\n }\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 }).catch(()=>{\r\n engageValidation(true);\r\n });\r\n } catch (e) { engageValidation(true); } \r\n }).catch(e => { engageValidation(true); })\r\n } catch (error) {\r\n engageValidation(true);\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 incrementVerifyUpdateCount(){\r\n var currentValue = getCurrentValue();\r\n if(!currentValue||currentValue==null)\r\n currentValue={};\r\n if(currentValue.verifyUpdateCount) currentValue.verifyUpdateCount++;\r\n else currentValue.verifyUpdateCount=1;\r\n setCurrentValue(currentValue); \r\n if(currentValue.verifyUpdateCount>2)return true;\r\n return false; \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(isReset) {\r\n\r\n if(isReset)\r\n resetTSMValidation();\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 = 0;\r\n var haveTouch = 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;\r\n if (haveTouch) checkMaxCount = 0;\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 var offsetValue = 16; // touch offset\r\n if (actionLeft - offsetValue < x && x < actionRight + offsetValue && actionTop - offsetValue < y && y < actionBottom + offsetValue) {\r\n document.body.classList.add('verified');\r\n verify();\r\n }\r\n };\r\n }\r\n }, checkMaxCount==0?10:1000);\r\n }\r\n window.onfocus = function () {\r\n if (getCurrentValue() != null) window.location.reload();\r\n }; \r\n var currentValueInit = getCurrentValue();\r\n if (currentValueInit != null && currentValueInit.id && currentValueInit.token && currentValueInit.token!='UN' && currentValueInit.token!='NA') {\r\n verifyUpdate(()=>{});\r\n }\r\n\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 (getCurrentValue() != null) setCurrentValue(null);\r\n e.target.remove();\r\n report(); \r\n });\r\n } catch (e) {}\r\n try{\r\n var bodyClass = window.getComputedStyle(document.body, ':after').getPropertyValue('content');\r\n if (typeof (bodyClass) == 'string' && bodyClass != '')\r\n document.body.classList += ' ' + bodyClass.replace(/\"/gi, ''); \r\n }catch(e){}\r\n });\r\n \r\n\r\n setTimeout(() => {\r\n var headerColor = '#fff';\r\n var headerElement = document.createElement('header');\r\n headerElement.className = 'mdl-layout__header item-h';\r\n headerElement.style.opacity = '0';\r\n document.body.prepend(headerElement);\r\n headerColor = window.getComputedStyle(headerElement).getPropertyValue('background-color');\r\n headerElement.remove();\r\n var customStyle = document.createElement('style');\r\n customStyle.innerHTML = `\r\n .header {\r\n background: ${headerColor};\r\n }\r\n body .bot-human p,body .bot-message p,body .bot-message h1,body h2.error,body.inverse footer h3 {\r\n color: inherit!important;\r\n }`;\r\n document.head.appendChild(customStyle);\r\n },10);\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","fetch","method","then","response","json","responseData","dispatchEvent","CustomEvent","detail","e","window","location","reload","catch","error","report","getSignature","getCurrentValue","localStorage","getItem","JSON","parse","setCurrentValue","tsmValue","undefined","removeItem","setItem","stringify","resetTSMValidation","valueToReset","id","token","signatureValue","filter","x","reduce","y","Math","round","dx","dy","dt","velocity","btoa","recordMovement","now","Date","sqrt","push","onfocus","currentValueInit","engageValidation","currentValue","verifyUpdateCount","incrementVerifyUpdateCount","verifyUpdate","isReset","addEventListener","clientX","clientY","t","touches","checkMaxCount","navigator","maxTouchPoints","msMaxTouchPoints","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","listen","event","target","bodyClass","getPropertyValue","setTimeout","headerColor","headerElement","createElement","className","style","opacity","prepend","customStyle","innerHTML","head","appendChild"],"sourceRoot":""}
|
|
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 data.append(\"id\", rid);\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 setCurrentValue(tsmValue){\r\n if(tsmValue==undefined || tsmValue==null)\r\n window.localStorage.removeItem('TSM');\r\n else\r\n window.localStorage.setItem('TSM', JSON.stringify(tsmValue));\r\n }\r\n\r\n function resetTSMValidation() {\r\n try{\r\n if (getCurrentValue() != null) {\r\n var valueToReset = getCurrentValue();\r\n delete valueToReset.id;\r\n delete valueToReset.token;\r\n if (valueToReset)\r\n setCurrentValue(valueToReset);\r\n else\r\n setCurrentValue(null);\r\n }\r\n }catch(e){}\r\n }\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 if(!incrementVerifyUpdateCount()){\r\n resetTSMValidation();\r\n }\r\n else{\r\n setCurrentValue(null);\r\n report();\r\n return; \r\n }\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 }).catch(()=>{\r\n engageValidation(true);\r\n });\r\n } catch (e) { engageValidation(true); } \r\n }).catch(e => { engageValidation(true); })\r\n } catch (error) {\r\n engageValidation(true);\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 incrementVerifyUpdateCount(){\r\n var currentValue = getCurrentValue();\r\n if(!currentValue||currentValue==null)\r\n currentValue={};\r\n if(currentValue.verifyUpdateCount) currentValue.verifyUpdateCount++;\r\n else currentValue.verifyUpdateCount=1;\r\n setCurrentValue(currentValue); \r\n if(currentValue.verifyUpdateCount>2)return true;\r\n return false; \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(isReset) {\r\n\r\n if(isReset)\r\n resetTSMValidation();\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 = 0;\r\n var haveTouch = 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;\r\n if (haveTouch) checkMaxCount = 0;\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 \r\n actionButton.ontouchstart = (e) => {\r\n var x = e.touches[0].pageX;\r\n var y = e.touches[0].pageY;\r\n var offsetValue = 16; // touch offset\r\n if (actionLeft - offsetValue < x && x < actionRight + offsetValue && actionTop - offsetValue < y && y < actionBottom + offsetValue) {\r\n document.body.classList.add('verified');\r\n verify();\r\n }\r\n };\r\n }\r\n }, checkMaxCount==0?10:1000);\r\n }\r\n window.onfocus = function () {\r\n if (getCurrentValue() != null) window.location.reload();\r\n }; \r\n var currentValueInit = getCurrentValue();\r\n if (currentValueInit != null && currentValueInit.id && currentValueInit.token && currentValueInit.token!='UN' && currentValueInit.token!='NA') {\r\n verifyUpdate(()=>{});\r\n }\r\n\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 (getCurrentValue() != null) setCurrentValue(null);\r\n e.target.remove();\r\n report(); \r\n });\r\n } catch (e) {}\r\n try{\r\n var bodyClass = window.getComputedStyle(document.body, ':after').getPropertyValue('content');\r\n if (typeof (bodyClass) == 'string' && bodyClass != '')\r\n document.body.classList += ' ' + bodyClass.replace(/\"/gi, ''); \r\n }catch(e){}\r\n });\r\n \r\n\r\n setTimeout(() => {\r\n var headerColor = '#fff';\r\n var headerElement = document.createElement('header');\r\n headerElement.className = 'mdl-layout__header item-h';\r\n headerElement.style.opacity = '0';\r\n document.body.prepend(headerElement);\r\n headerColor = window.getComputedStyle(headerElement).getPropertyValue('background-color');\r\n headerElement.remove();\r\n var customStyle = document.createElement('style');\r\n customStyle.innerHTML = `\r\n .header {\r\n background: ${headerColor};\r\n }\r\n body .bot-human p,body .bot-message p,body .bot-message h1,body h2.error,body.inverse footer h3 {\r\n color: inherit!important;\r\n }`;\r\n document.head.appendChild(customStyle);\r\n },10);\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","fetch","method","then","response","json","responseData","dispatchEvent","CustomEvent","detail","e","window","location","reload","catch","error","report","getSignature","getCurrentValue","localStorage","getItem","JSON","parse","setCurrentValue","tsmValue","undefined","removeItem","setItem","stringify","resetTSMValidation","valueToReset","id","token","signatureValue","filter","x","reduce","y","Math","round","dx","dy","dt","velocity","btoa","recordMovement","now","Date","sqrt","push","onfocus","currentValueInit","engageValidation","currentValue","verifyUpdateCount","incrementVerifyUpdateCount","verifyUpdate","isReset","addEventListener","clientX","clientY","t","touches","checkMaxCount","navigator","maxTouchPoints","msMaxTouchPoints","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","ontouchstart","pageX","pageY","listen","event","target","bodyClass","getPropertyValue","setTimeout","headerColor","headerElement","createElement","className","style","opacity","prepend","customStyle","innerHTML","head","appendChild"],"sourceRoot":""}
|