
ब्राउज़र गोपनीयता-रिसाव डिटेक्टर — आठ डिटेक्शन मॉड्यूल, जोखिम स्कोरिंग, और प्रति-खाता इतिहास, सभी आपके ब्राउज़र में।
ब्राउज़र गोपनीयता-लीक डिटेक्टर — आठ पहचान मॉड्यूल, जोखिम स्कोरिंग, और प्रति-खाता इतिहास, सब आपके ब्राउज़र में।
Verdent के साथ निर्मित — एक एजेंटिक कोडिंग सहायक। हर पहचान मॉड्यूल, विश्लेषण डैशबोर्ड, API-की प्रमाणीकरण प्रवाह, द्विभाषी UI और Kubernetes-तैयार Docker इमेज को Verdent द्वारा संचालित जोड़ी-प्रोग्रामिंग सत्रों में डिज़ाइन और कार्यान्वित किया गया था।
कोई URL खोलें, सभी चलाएँ पर क्लिक करें, और कुछ ही सेकंड में Leakish आपको बताता है कि
आपका ब्राउज़र आपके और आपके नेटवर्क के बारे में क्या लीक कर रहा है — WebRTC, फ़िंगरप्रिंटिंग
APIs, DNS, और सर्वर-साइड प्रोब के माध्यम से। आठ स्वतंत्र मॉड्यूल प्रत्येक एक टाइप्ड परिणाम +
जोखिम संकेत, एक एकत्रित स्कोर (0–100) और एक स्तर
(safe / warning / critical) उत्पन्न करते हैं।
साइन-इन उपयोगकर्ता स्कैन को MySQL में सहेज सकते हैं, इतिहास ब्राउज़ कर सकते हैं, और एक विश्लेषण
डैशबोर्ड खोल सकते हैं जो वितरण चार्ट, फ़िंगरप्रिंट-हैश पुनरावृत्ति, IP / ASN
समयरेखा, आउटलाइअर स्कैन, और जोड़ीदार तुलना दिखाता है। बाकी सब कुछ (डिटेक्टर
स्वयं) बिना खाते के काम करता है — कोई भी /app पर आकर स्कैन चला सकता है।
प्रत्येक मॉड्यूल एक एकल टाइप्ड DetectionModule<T> इंटरफ़ेस के माध्यम से पंजीकृत होता है
और अलगाव में चलता है — एक मॉड्यूल के विफल होने से दूसरे प्रभावित नहीं होते। प्रति मॉड्यूल
सक्षम स्थिति संस्करण कुंजी के साथ localStorage में संग्रहीत होती है, रिफ़्रेश से बचती है,
और सभी चलाएँ बटन केवल सक्षम सेट पर ही चलता है।
/api/detect/network पर हिट करता है ताकि अपना स्वयं का सर्वर-देखा IP पढ़ सके, या (c) DNS मॉड्यूल https://dns.google/resolve से बात करता है।leakish.locale कुकी में रखा जाता है, <html lang>, पेज मेटाडेटा, प्रत्येक स्क्रीन, प्रत्येक API त्रुटि प्रतिक्रिया, और मैजिक-लिंक साइन-इन ईमेल को संचालित करता है।det_… API कुंजी बना सकते हैं (SHA-256 संग्रहित, प्लेनटेक्स्ट एक बार दिखाया जाता है)। प्रत्येक /api/detect/* एंडपॉइंट या तो सत्र कुकी या Bearer कुंजी स्वीकार करता है, ताकि CLI / CI जॉब से भी वही स्कैन सहेजा जा सके।/scans/analytics पर — टाइमज़ोन / प्लेटफ़ॉर्म / भाषा / स्क्रीन / WebGL / ASN / देश / फ़ॉन्ट गणना में वितरण चार्ट, फ़िंगरप्रिंट-हैश पुनरावृत्ति प्रति-प्रकार जोखिम ग्रेड के साथ, IP / ASN समयरेखा, मल्टी-एक्सिस आउटलाइअर डिटेक्टर, जोड़ीदार तुलना 0–100 समानता स्कोर के साथ।lib/risk/assess.ts स्थिर IDs (जैसे ) के साथ टाइप्ड , प्रति-मॉड्यूल सारांश, और एक एकल एकत्रित स्कोर उत्पन्न करता है। इंजेक्शन के माध्यम से लोकेल-जागरूक।पूर्व-आवश्यकताएँ: Node 22+ (स्थानीय डेव के लिए कोई भी 20+ काम करता है), Yarn 1.x, चल रहा MySQL इंस्टेंस, और (वैकल्पिक रूप से) एक Google OAuth क्लाइंट।
yarn install
cp env.example .env.local # न्यूनतम DATABASE_URL, NEXTAUTH_SECRET, IP_HASH_SALT भरें
yarn prisma:generate
yarn db:push # नए DB पर तालिकाएँ प्रावधानित करें
yarn dev # http://localhost:3000
कार्यशील साइन-इन के लिए न्यूनतम env:
DATABASE_URL — उदाहरण mysql://root:[email protected]:3306/detectNEXTAUTH_SECRET — openssl rand -base64 32NEXTAUTH_URL — डेव में http://localhost:3000IP_HASH_SALT — openssl rand -base64 32वैकल्पिक:
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET Google साइन-इन के लिएMAILGUN_API_KEY / MAILGUN_DOMAIN / EMAIL_FROM वास्तविक मैजिक-लिंक वितरण के लिए
(इनके बिना लिंक डेव सर्वर कंसोल पर प्रिंट होता है)IPINFO_TOKEN नेटवर्क प्रोब को ASN / VPN / प्रॉक्सी डेटा से समृद्ध करने के लिएपूर्ण एनोटेटेड सूची के लिए env.example देखें।
app/
├── (marketing)/ # / — लैंडिंग (सर्वर-हल प्रमाणीकरण स्थिति + क्लाइंट UI)
├── app/ # /app — डिटेक्टर पेज
├── login/ # /login
├── scans/ # /scans, /scans/[id], /scans/analytics
├── integrations/ # /integrations — API कुंजी प्रबंधन
├── api/
│ ├── auth/ # NextAuth रूट + apiKey-login + परीक्षण
│ ├── detect/
│ │ ├── analytics/ # एकत्रित + जोड़ीदार-अंतर
│ │ ├── network/ # सर्वर-साइड ईग्रेस प्रोब
│ │ ├── scans/ # सहेजें / सूची / प्राप्त करें / हटाएँ
│ │ └── uniqueness/ # कितने उपयोगकर्ता इस फ़िंगरप्रिंट हैश को साझा करते हैं
│ ├── integration/keys # API कुंजियाँ बनाएँ / रद्द करें / सूचीबद्ध करें
│ └── health/ # k8s के लिए लाइवनेस प्रोब
├── opengraph-image.tsx # गतिशील OG (प्रति-लोकेल)
├── apple-icon.tsx # गतिशील apple-touch आइकन
├── icon.svg # शील्ड ग्रेडिएंट
└── layout.tsx # मेटाडेटा + थीम-प्रारंभ स्क्रिप्ट + LocaleProvider
components/
├── modular-detector.tsx # शीर्ष-स्तर शेल (हेडर + मॉड्यूल सूची + परिणाम/अवलोकन)
├── detector/ # मॉड्यूल-सूची, परिणाम-पैनल, श्रेणी फ़िल्टर, स्थिति हुक
├── result-details/ # प्रति मॉड्यूल एक विवरण दृश्य (टाइप्ड स्विच)
├── overview/ # अवलोकन पैनल + डायग्नोस्टिक्स निर्यात
├── auth/ # AuthGateProvider, लॉगिन संवाद, लॉगिन प्रपत्र
├── providers/ # SessionProvider रैपर
└── ui/ # shadcn-शैली प्रिमिटिव + थीम/लोकेल टॉगल
lib/
├── detection-modules/ # 8 मॉड्यूल कार्यान्वयन + ModuleManager + IP उपयोगिताएँ + परीक्षण
├── risk/ # assess.ts — RiskSignal/स्कोर एकत्रीकरण
├── i18n/ # en.ts / zh.ts + Messages प्रकार + लोकेल क्लाइंट/सर्वर
├── api/ # withDetectAuth रैपर, scan-payload Zod स्कीमा
├── client/ # ब्राउज़र-साइड scan-api (extractFingerprintInputs, saveScan, lookupUniqueness)
├── server/ # नेटवर्क-प्रोब, IP-हैश नमक, फ़िंगरप्रिंट हैशिंग, दर-सीमा, ईमेल भेजें, विश्लेषण
├── persistence/ # SSR-सुरक्षित localStorage रैपर
├── env.ts # रनटाइम env सत्यापन
├── logger.ts # डेव-केवल डायग्नोस्टिक लॉगर
└── prisma.ts # .prisma/detect-client पर लक्षित एकल क्लाइंट
prisma/schema.prisma # User / Account / Session / DetectScan / ApiKey / DetectFingerprintHash
/app में सभी चलाएँ पर क्लिक करता है। डिटेक्टर ModuleManager.runAllEnabledModules के माध्यम से सक्षम मॉड्यूलों पर पुनरावृत्त करता है — प्रत्येक मॉड्यूल की विफलता पकड़ी जाती है और अलग की जाती है ताकि अन्य परिणाम अभी भी प्रदर्शित हों।DetectionResult<T> लौटाता है (सफलता/विफलता टैग और मॉड्यूल-विशिष्ट डेटा के साथ)। परिणाम पैनल एक टाइप-सुरक्षित switch के माध्यम से प्रति-मॉड्यूल विवरण घटक प्रस्तुत करता है।lib/risk/assess.ts प्रत्येक परिणाम का मूल्यांकन करता है, स्थिर IDs के साथ RiskSignal उत्सर्जित करता है, और एक OverallAssessment (स्कोर + स्तर + गणना) उत्पन्न करता है।/api/detect/scans पर POST करता है। सर्वर Zod के साथ सत्यापित करता है, अपना स्वयं का नेटवर्क प्रोब चलाता है ताकि सर्वर-देखा IP / ASN / VPN फ़्लैग रिकॉर्ड कर सके, और एक DetectScan पंक्ति साथ ही DetectFingerprintHash पंक्तियाँ लिखता है।यूनिट परीक्षण अपने विषयों के साथ __tests__/ निर्देशिकाओं में रहते हैं:
yarn test # पूर्ण सूट
yarn test path/to/file # एकल फ़ाइल
yarn test -t "नाम पैटर्न" # परीक्षण-नाम regex द्वारा
हाइलाइट्स:
lib/detection-modules/__tests__/ — IP वर्गीकरण + mDNS निष्कर्षण, मॉड्यूल-प्रबंधक पंजीकरण और विफलता अलगाव, WebRTC मॉड्यूल के लिए नकली RTCPeerConnection, ब्राउज़र-फ़िंगरप्रिंट मॉड्यूल के लिए jsdom-आकार परीक्षण, CDP/ऑटोमेशन सिग्नल उत्पन्न करना।lib/server/__tests__/analytics.test.ts — वितरण बकेटिंग, पुनरावृत्ति समूहीकरण, आउटलाइअर स्कोरिंग, जोड़ीदार समानता गणित।app/api/detect/scans/__tests__ — POST सेव (सत्यापन, दर सीमा, आइडेमपोटेंसी, छंटाई) + GET सूची + DELETE एकल।app/api/integration/keys/__tests__ — मोड गेटिंग के साथ बनाएँ / रद्द करें / सूची (API-कुंजी सत्र अन्य API कुंजी नहीं बना सकते)।app/api/auth/__tests__ — apiKey-लॉगिन रूट (CSRF, प्रारूप जाँच, रद्द / समाप्त हैंडलिंग, अंतिम-उपयोग स्पर्श)।लिंट + टाइपचेक:
yarn lint
npx tsc --noEmit
शामिल Dockerfile node:22-alpine पर एक Next.js स्टैंडअलोन इमेज उत्पन्न करता है। प्रोडक्शन env Kubernetes Secret के माध्यम से इंजेक्ट किया जाता है — प्लेसहोल्डर मान बिल्ड समय पर बेक किए जाते हैं ताकि रनटाइम पर SKIP_ENV_VALIDATION की आवश्यकता न हो। स्कीमा से पहले एक prisma db push जॉब रोलआउट से पहले स्कीमा चलाता है। पूर्ण इमेज-बिल्ड → माइग्रेट → रोलआउट पाइपलाइन के लिए .github/workflows/deploy-tke.yml देखें।
इस ओपन-सोर्स बिल्ड में कोई पेवॉल नहीं है। सेव केवल प्रक्रिया-में प्रति-उपयोगकर्ता दर सीमित करने वाले lib/server/rate-limit.ts (10 सेव/घंटा) द्वारा नियंत्रित होते हैं, और इतिहास प्रतिधारण असीमित है।
LICENSE देखें।
| ID | मॉड्यूल | यह क्या निरीक्षण करता है |
|---|
network-probe | नेटवर्क ईग्रेस प्रोब | सर्वर-देखा गया सार्वजनिक IP, ASN, देश/क्षेत्र/शहर, VPN/प्रॉक्सी/Tor/होस्टिंग फ़्लैग, TLS/HTTP |
webrtc | WebRTC | STUN के माध्यम से सार्वजनिक IPv4 + IPv6, RFC1918 लीक, mDNS-अस्पष्ट .local उम्मीदवार |
browser-fingerprint | ब्राउज़र फ़िंगरप्रिंट | UA, स्क्रीन, टाइमज़ोन, प्लगइन्स, CPU कोर, डिवाइस मेमोरी, भाषा सूची, DNT, कुकीज़ |
canvas-fingerprint | कैनवास / WebGL | 2D + WebGL रेंडरर/विक्रेता स्ट्रिंग्स, टेक्स्ट-रेंडरिंग विचित्रताएँ, समर्थित छवि प्रारूप |
audio-fingerprint | ऑडियो | AudioContext नमूना दर, चैनल, विलंबता, ऑसिलेटर आउटपुट हैश |
font-detection | फ़ॉन्ट्स | कैनवास चौड़ाई-अंतर पहचान के माध्यम से 40+ नामित-फ़ॉन्ट प्रोब |
dns | DNS | DoH पहुँच, DNSSEC संकेत, रिज़ॉल्वर भू-स्थान, DNS-लीक अनुमान |
cdp-detection | ऑटोमेशन / हेडलेस | navigator.webdriver, CDP समय, क्रोमियम-विशिष्ट API सतह, पोर्ट प्रोब — आत्मविश्वास 0–1 |
webrtc.public-ip-leakRiskSignalMessagesPOST /api/detect/scans एक Idempotency-Key हेडर स्वीकार करता है, प्रत्येक उपयोगकर्ता को 200 स्कैन तक सीमित करता है, और सेव को 10/घंटा तक रेट-लिमिट करता है।node:22-alpine पर मल्टी-स्टेज बिल्ड, Next.js स्टैंडअलोन आउटपुट, .github/workflows/ के अंतर्गत वर्कफ़्लो के माध्यम से Kubernetes पर तैनात होता है।| पथ | उद्देश्य |
|---|
/ | विपणन लैंडिंग (ऑरोरा हीरो, फ़ीचर कार्ड, FAQ, CTA) |
/app | डिटेक्टर — मॉड्यूल सूची + परिणाम पैनल + अवलोकन |
/login | स्टैंडअलोन साइन-इन पेज (Google / ईमेल / API कुंजी) |
/scans | साइन-इन उपयोगकर्ता का सहेजा-स्कैन इतिहास |
/scans/[id] | एकल सहेजा-स्कैन विवरण |
/scans/analytics | वितरण / पुनरावृत्ति / समयरेखा / आउटलाइअर / तुलना |
/integrations | det_… API कुंजी प्रबंधित करें (बनाएँ / रद्द करें / कैसे-करें) |
/scans/[id] पर दृश्यमान होता है, विश्लेषण एकत्रीकरण में योगदान देता है, और विशिष्टता लुकअप में गिना जाता है।| परत | घटक |
|---|
| फ्रेमवर्क | Next.js 14 (App Router, force-dynamic हर जगह), React 18 |
| भाषा | TypeScript 5, सख्त मोड |
| UI | Tailwind CSS 3, shadcn/ui प्रिमिटिव Radix पर, Lucide आइकन, Framer Motion |
| प्रमाणीकरण | NextAuth 4 (Google OAuth + मैजिक-लिंक ईमेल) + Prisma एडाप्टर |
| डेटा | Prisma 6 → MySQL (कस्टम क्लाइंट आउटपुट .prisma/detect-client पर) |
| सत्यापन | Zod |
| परीक्षण | Jest 29 + ts-jest + jsdom |
| बिल्ड/तैनाती | मल्टी-स्टेज Dockerfile, Next.js स्टैंडअलोन, Kubernetes मैनिफ़ेस्ट |