1<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, maximum-scale=1"/><link rel="stylesheet" href="/assets/styles-BT9uQNxh.css" data-precedence="default"/><title>Detection Engine â Browser & Network Diagnostic Lab</title><meta name="theme-color" content="#17212b"/><meta property="og:title" content="Detection Engine â Proxy / VPN / Fingerprint Score"/><meta property="og:description" content="Server + client checks: HTTP headers, IP hosting/proxy/VPN/TOR, timezone, WebRTC leak, browser fingerprint consistency."/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Detection Engine â Proxy / VPN / Fingerprint Score"/><meta name="twitter:description" content="Server + client checks: HTTP headers, IP hosting/proxy/VPN/TOR, timezone, WebRTC leak, browser fingerprint consistency."/><meta property="og:image" content="https://pub-bb2e103a32db4e198524a2e9ed8f35b4.r2.dev/67b477b2-f95f-4f10-bfea-33d551829ae9/id-preview-3b5621df--75b7f794-9e57-4022-80ee-09f6dba0b431.lovable.app-1784502944852.png"/><meta name="twitter:image" content="https://pub-bb2e103a32db4e198524a2e9ed8f35b4.r2.dev/67b477b2-f95f-4f10-bfea-33d551829ae9/id-preview-3b5621df--75b7f794-9e57-4022-80ee-09f6dba0b431.lovable.app-1784502944852.png"/><meta name="description" content="A transparent browser, network, DNS, WebRTC, TLS, HTTP, canvas, WebGL, audio and consistency diagnostic lab with per-signal provenance."/><link rel="modulepreload" href="/assets/index-BuyLzu2Z.js"/><link rel="modulepreload" href="/assets/routes-CtFDzA4D.js"/><link rel="modulepreload" href="/assets/createServerFn-BNXWGLbK.js"/><link rel="modulepreload" href="/assets/ProbeStatusPanel-DtCmB3j0.js"/><link rel="icon" href="/favicon.ico" type="image/x-icon"/></head><body><div class="fixed right-3 top-3 z-50 flex gap-1 rounded-lg border border-border/60 bg-background/80 p-1 backdrop-blur"><button aria-label="English" class="rounded-md border px-2 py-1 text-lg leading-none transition-colors border-primary bg-primary/10"><span aria-hidden="true">ð¬ð§</span></button><button aria-label="Ð ÑÑÑкий" class="rounded-md border px-2 py-1 text-lg leading-none transition-colors border-border/60 bg-background/60 hover:bg-accent"><span aria-hidden="true">ð·ðº</span></button></div><!--$--><div class="min-h-screen bg-[#0b0d12] text-zinc-100"><div class="mx-auto max-w-5xl px-4 py-6"><div class="mb-4 flex flex-wrap items-center gap-3"><div class="flex items-center gap-2"><span class="text-2xl">ð°ï¸</span><div><h1 class="text-lg font-bold tracking-tight">Detection Engine</h1><div class="text-[11px] text-zinc-500">Browser · network · fingerprint diagnostic lab · schema v<!-- -->2</div></div></div><div class="ml-auto flex flex-wrap items-center gap-2"><button disabled="" class="rounded-md border border-white/10 bg-white/5 px-3 py-1.5 text-xs font-medium hover:bg-white/10 disabled:opacity-50">â» Run again</button><button disabled="" class="rounded-md border border-white/10 bg-white/5 px-3 py-1.5 text-xs font-medium hover:bg-white/10 disabled:opacity-50">⬠JSON export</button><button class="rounded-md border border-white/10 bg-white/5 px-3 py-1.5 text-xs font-medium hover:bg-white/10">â Clear history</button></div></div><div class="mt-3 rounded-lg border border-white/10 bg-white/[0.02] p-3"><div class="mb-2 flex items-center justify-between"><div class="text-[10px] uppercase tracking-wider text-zinc-500">Optional context</div><div class="flex items-center gap-2 text-[10px] text-zinc-500"><label class="flex items-center gap-1"><input type="checkbox" class="h-3 w-3"/>remember on this device</label></div></div><div class="grid gap-2 sm:grid-cols-3"><input placeholder="ZIP code" maxLength="16" class="rounded-md border border-white/10 bg-black/30 px-2 py-1.5 text-xs text-zinc-100 placeholder-zinc-500 outline-none focus:border-white/30" value=""/><input placeholder="Email" maxLength="320" type="email" autoComplete="off" class="rounded-md border border-white/10 bg-black/30 px-2 py-1.5 text-xs text-zinc-100 placeholder-zinc-500 outline-none focus:border-white/30" value=""/><input placeholder="Phone (+1 555â¦)" maxLength="32" autoComplete="off" class="rounded-md border border-white/10 bg-black/30 px-2 py-1.5 text-xs text-zinc-100 placeholder-zinc-500 outline-none focus:border-white/30" value=""/></div><div class="mt-2 flex flex-wrap items-center gap-2"><button disabled="" class="rounded-md border border-white/10 bg-white/10 px-3 py-1 text-[11px] font-medium hover:bg-white/20 disabled:opacity-50">â» Run with context</button><div class="ml-auto max-w-md text-[10px] text-zinc-500">Optional inputs allow additional location and identity-consistency diagnostics. They are not required for the fingerprint scan. Never logged, never in URLs, POST only.</div></div></div><div class="mt-3 rounded-lg border border-white/10 bg-white/5 p-4 text-sm text-zinc-300"><span class="animate-pulse">â </span>Scanning⦠<span class="text-zinc-500">(<!-- -->initialisingâ¦<!-- -->)</span></div></div><button class="fixed bottom-4 right-4 z-50 flex h-14 w-14 items-center justify-center rounded-full border border-emerald-400/30 bg-gradient-to-br from-emerald-500/90 to-cyan-600/90 text-white shadow-[0_10px_40px_-12px_rgba(16,185,129,0.6)] transition hover:scale-105" aria-label="Open AI Security Assistant"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-circle h-6 w-6" aria-hidden="true"><path d="M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719"></path></svg></button></div>
1<script>(function(a,f){let l;try{l=JSON.parse(sessionStorage.getItem(a)||"{}")}catch{return}const n=l?.[f||history.state?.__TSR_key];let c=!1;for(const t in n){const e=n[t],o=e?.scrollX,s=e?.scrollY;if(Number.isFinite(o)&&Number.isFinite(s)){if(t==="window")scrollTo(o,s),c=!0;else if(t)try{const r=document.querySelector(t);r&&(r.scrollLeft=o,r.scrollTop=s)}catch{}}}if(c)return;const i=location.hash.slice(1);if(i){const t=history.state?.__hashScrollIntoViewOptions??!0;if(t){const e=document.getElementById(i);e&&e.scrollIntoView(t)}return}scrollTo(0,0)})("tsr-scroll-restoration-v1_3");document.currentScript.remove()</script>
1<!--/$-->
1<script class="$tsr" id="$tsr-stream-barrier">(self.$R=self.$R||{})["tsr"]=[];self.$_TSR={h(){this.hydrated=!0,this.c()},e(){this.streamEnded=!0,this.c()},c(){this.hydrated&&this.streamEnded&&(delete self.$_TSR,delete self.$R.tsr)},p(e){this.initialized?e():this.buffer.push(e)},buffer:[]};$_TSR.router=($R=>$R[0]={manifest:$R[1]={routes:$R[2]={__root__:$R[3]={preloads:$R[4]=["/assets/index-BuyLzu2Z.js"],scripts:$R[5]=[$R[6]={attrs:$R[7]={type:"module",async:!0,src:"/assets/index-BuyLzu2Z.js"}}]},"/":$R[8]={preloads:$R[9]=["/assets/routes-CtFDzA4D.js","/assets/createServerFn-BNXWGLbK.js","/assets/ProbeStatusPanel-DtCmB3j0.js"]}}},matches:$R[10]=[$R[11]={i:"__root__�",u:1791568964531,s:"success",ssr:!0},$R[12]={i:"��",u:1791568964531,s:"success",ssr:!0}],lastMatchId:"��"})($R["tsr"]);$_TSR.e();document.currentScript.remove()</script>
1<script type="module" async="" src="/assets/index-BuyLzu2Z.js"></script>
1<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"1ddbaf81b5b64324b613536764b2709f","r":1,"spa":2}' crossorigin="anonymous"></script>
1 2</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.