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