एंटीडिटेक्ट ब्राउज़र

एंटीडिटेक्ट ब्राउज़र: फ़िंगरप्रिंट कर्नेल में बदलता है, इंजेक्ट किए गए JavaScript से नहीं

हर ब्राउज़र वेबसाइट को उस मशीन के बारे में कुछ सौ छोटी-छोटी बातें सौंप देता है जिस पर वह चल रहा है: स्क्रीन का आकार, फ़ॉन्ट सूची, ग्राफ़िक्स कार्ड, ऑडियो हिस्सा। मिलकर ये उस मशीन को इतना पक्का पहचान लेती हैं कि वहाँ से लॉग इन हुआ दूसरा अकाउंट भी वही आदमी मान लिया जाता है। एंटीडिटेक्ट ब्राउज़र इसीलिए है कि हर प्रोफ़ाइल किसी और मशीन जैसी दिखे। वह यह काम कैसे करता है, पूरा फ़र्क़ वहीं है, और ज़्यादातर प्रोडक्ट पेज यही हिस्सा छोड़ देते हैं।

फ़्री शुरू करें
कौन-सा टूल फ़िंगरप्रिंट किस परत पर लिखता है पेज का स्क्रिप्ट इस ढेर के सबसे ऊपर चलता है, इसलिए वहाँ इंजेक्ट की गई वैल्यू ओवरराइड होने से पहले पढ़ी जा सकती है, और उसके नीचे की किसी चीज़ को कुछ नहीं होता। SigoLogin नीचे की दो परतों में लिखता है, जहाँ पेज का कोई स्क्रिप्ट पहुँचता ही नहीं। पेज का स्क्रिप्ट वेब API: navigator, canvas, WebGL ब्राउज़र कर्नेल (C++) नेटवर्क: हेडर, Client Hints, हैंडशेक इंजेक्ट किया JavaScript यहाँ लिखता है SigoLogin यहाँ लिखता है
पेज का स्क्रिप्ट इस ढेर के सबसे ऊपर चलता है, इसलिए वहाँ इंजेक्ट की गई वैल्यू ओवरराइड होने से पहले पढ़ी जा सकती है, और उसके नीचे की किसी चीज़ को कुछ नहीं होता। SigoLogin नीचे की दो परतों में लिखता है, जहाँ पेज का कोई स्क्रिप्ट पहुँचता ही नहीं।

आपको क्या मिलता है

कर्नेल में बदला जाता है

वैल्यू पेज का कोई स्क्रिप्ट चलने से पहले ही C++ में लिख दी जाती है, बाद में Chrome पर इंजेक्ट नहीं की जाती।

फ़ॉन्ट तीनों तरह से छाने जाते हैं

चौड़ाई की माप, नाम से खोज और लोकल फ़ॉन्ट API - तीनों एक ही सूची से जवाब देते हैं, इसलिए तीनों मेल खाते हैं।

हर प्रोफ़ाइल के लिए एक प्रॉक्सी

HTTP और SOCKS5 प्रमाणीकरण के साथ, आसपास कोई DNS लीक नहीं, टाइम ज़ोन उसी के देश से।

हर प्रोफ़ाइल एक असली मशीन

स्क्रीन, कोर, मेमोरी और ग्राफ़िक्स कार्ड सब एक ही मापी गई मशीन से आते हैं, कभी मिलाए नहीं जाते।

सेशन-दर-सेशन एक जैसी

एक ही प्रोफ़ाइल हर बार खुलने पर वही कैनवस बनाती है। खिसकता फ़िंगरप्रिंट न होने से भी बुरा है।

मापा गया, कहा हुआ नहीं

उसी मशीन पर असली Chrome से मिलाकर मापा गया, डिज़ाइन से तर्क करके निकाला नहीं।

एंटीडिटेक्ट ब्राउज़र होता क्या है

एंटीडिटेक्ट ब्राउज़र एक ही कंप्यूटर पर कई ब्राउज़र प्रोफ़ाइल चलाता है और हर एक को अपनी अलग पहचान देता है: अपना फ़िंगरप्रिंट, अपनी कुकीज़, अपनी प्रॉक्सी, डिस्क पर अपना फ़ोल्डर। इनमें से कुछ भी आपस में शेयर नहीं होता, इसलिए जो साइट प्रोफ़ाइल A को देखती है उसके पास उसे प्रोफ़ाइल B से जोड़ने का कोई रास्ता नहीं रहता।

ब्राउज़र फ़िंगरप्रिंट असल में है क्या

फ़िंगरप्रिंट कोई एक वैल्यू नहीं है। यह उन जवाबों का पूरा सेट है जो ब्राउज़र उन सवालों पर देता है जो कोई भी पेज पूछ सकता है: User-Agent क्या कहता है, स्क्रीन कितनी बड़ी है, कितने CPU कोर बताए जाते हैं, कौन-से फ़ॉन्ट मिलते हैं, ग्राफ़िक्स ड्राइवर कौन-सी स्ट्रिंग लौटाता है, कैनवस पिक्सेल-दर-पिक्सेल क्या बनाता है। SigoLogin हर प्रोफ़ाइल के लिए ऐसी पंद्रह सतहें लिखता है, वही जिन पर पहचान का सारा बोझ टिका होता है।

ख़तरा किसी एक जवाब में नहीं है। वह मेल में है। जो मशीन अपने User-Agent में macOS बताती है और उसका WebGL रेंडरर Direct3D ड्राइवर का नाम लेता है, वह मशीन है ही नहीं, और जो मशीन है ही नहीं वह किसी आम मशीन से कहीं जल्दी पकड़ में आती है।

अकेली प्रॉक्सी से काम क्यों नहीं चलता

प्रॉक्सी वह पता बदलती है जहाँ से रिक्वेस्ट आती है। ब्राउज़र के अंदर वह कुछ नहीं बदलती। दो अलग प्रॉक्सी के पीछे बैठे दो अकाउंट फिर भी वही स्क्रीन, वही फ़ॉन्ट सूची, वही ग्राफ़िक्स कार्ड और वही कैनवस पिक्सेल बताते हैं, और उन्हें आपस में जोड़ने के लिए इतना काफ़ी है।

उल्टा भी सही है। जो प्रोफ़ाइल जकार्ता का टाइम ज़ोन बताती है जबकि उसका पता अमेरिका में है, वह किसी के फ़िंगरप्रिंट पढ़ने से पहले ही ख़ुद से उलट पड़ चुकी है। SigoLogin टाइम ज़ोन और भाषा प्रॉक्सी के अपने देश से लेता है, ताकि दोनों आपस में न टकराएँ।

इसे बनाने के दो तरीके, और यह क्यों मायने रखता है

ज़्यादातर एंटीडिटेक्ट ब्राउज़र आम Chrome ही हैं, जिनमें हर पेज पर JavaScript इंजेक्ट करके navigator, canvas और WebGL ओवरराइड किए जाते हैं। यह बनाने में सस्ता है और आसान जाँचों को पार कर जाता है। यह निशान भी छोड़ता है।

JavaScript इंजेक्ट करने वाले टूल

  • ओवरराइड की गई फ़ंक्शन नेटिव दिखनी बंद हो जाती है: पैच की गई मेथड पर toString चलाने से असली से अलग टेक्स्ट लौटता है।
  • इंजेक्शन पेज का लोड होना शुरू होने के बाद होता है। जो स्क्रिप्ट पहली ही लाइन में वैल्यू पढ़ता है, वह असली वैल्यू पढ़ लेता है।
  • JavaScript के बाहर की हर चीज़ जस की तस रहती है: रिक्वेस्ट हेडर, Client Hints का क्रम, हर रिक्वेस्ट के साथ जाने वाली भाषा।
  • JavaScript से कोई फ़ॉन्ट छिपा देने से यह नहीं बदलता कि वह फ़ॉन्ट टेक्स्ट असल में कितना चौड़ा बनाता है।
  • हर नई सतह के लिए एक और इंजेक्ट किया स्क्रिप्ट चाहिए, और हर स्क्रिप्ट पकड़ में आने की एक और वजह है।

SigoLogin

  • वैल्यू पेज का कोई स्क्रिप्ट चलने से पहले ही C++ में लिख दी जाती है, इसलिए ढूँढ़ने को कोई पैच की गई फ़ंक्शन है ही नहीं।
  • कर्नेल पहली लाइन से ही प्रोफ़ाइल की वैल्यू लौटाता है।
  • Client Hints, हेडर और locale नेटवर्क परत में सेट होते हैं, जहाँ वे उसी User-Agent से मेल खाते हैं जो पेज पढ़ सकता है।
  • फ़ॉन्ट की खोज फ़ॉन्ट इंजन में ही छानी जाती है, इसलिए मापी गई चौड़ाई घोषित सूची से मेल खाती है।
  • उन्नीस पैच एक ही Chromium 152 बिल्ड में कंपाइल किए गए, ब्राउज़र चलने से पहले लगाए गए।

हमारे तरीके की क़ीमत सीधे कह देनी चाहिए: हम पूरा ब्राउज़र कंपाइल करते हैं, इसलिए Chrome के नए वर्ज़न तक पहुँचने में हमें मिनट नहीं, दिन लगते हैं, और कर्नेल कुछ मेगाबाइट नहीं, डाउनलोड करने को क़रीब 2 GB का है।

तुलना

SigoLogin क्या-क्या बदलता है, सतह-दर-सतह

हर प्रोफ़ाइल को एक सीड से बना फ़िंगरप्रिंट मिलता है, इसलिए एक ही प्रोफ़ाइल हर बार खुलने पर बिल्कुल वही रहती है। सेशन-दर-सेशन खिसकता फ़िंगरप्रिंट कुछ भी न छिपाने से ज़्यादा शक पैदा करता है। हर वैल्यू किसी एक असली डिवाइस परिवार से आती है, और फ़ील्ड कभी दो मशीनों के बीच मिलाए नहीं जाते।

पहचान

  • platform
  • browser
  • locale

नॉइज़ जोड़ा गया

  • canvas
  • webgl
  • webgpu
  • audio
  • clientRects

मशीन

  • screen
  • hardware
  • battery

एनवायरनमेंट

  • fonts
  • mediaDevices
  • webrtc
  • network
हर प्रोफ़ाइल के लिए लिखी जाने वाली पंद्रह सतहें। सब किसी एक असली डिवाइस परिवार से आती हैं, इसलिए जवाब आपस में मेल खाते हैं; दो मशीनों के फ़ील्ड मिला देना ही वह चीज़ है जो ऐसा कंप्यूटर गढ़ देती है जो किसी के पास नहीं है।

फ़ॉन्ट

इंस्टॉल फ़ॉन्ट की सूची उन सबसे मज़बूत संकेतों में है जो कोई पेज पढ़ सकता है, और पेज इसे तीन तरह से गिनते हैं: टेक्स्ट कितना चौड़ा बनता है यह मापकर, फ़ॉन्ट को नाम से माँगकर, और लोकल फ़ॉन्ट API से। तीनों कर्नेल में छाने जाते हैं, इसलिए तीनों जवाब आपस में मेल खाते हैं।

Windows प्रोफ़ाइल क़रीब 300 फ़ॉन्ट बताती है, असली मशीनों पर मापे गए, किसी सूची से नक़ल किए नहीं। macOS का फ़ॉन्ट संग्रह उसी तरीके से मापने पर क़रीब 1,185 पर आता है। यहाँ एक पक्की सीमा है और हम उसे छिपाने के बजाय कह देना बेहतर समझते हैं: कर्नेल फ़ॉन्ट छिपा सकता है, बना नहीं सकता। जो फ़ॉन्ट ऑपरेटिंग सिस्टम हमेशा इंस्टॉल करता है उसे छिपाना ऐसी मशीन गढ़ देता है जो किसी के पास नहीं है, और इसीलिए यह सूची अंदाज़े से नहीं, मापकर बनाई जाती है।

प्लेटफ़ॉर्म

कैनवस, WebGL और WebGPU

कैनवस, ऑडियो और टेक्स्ट-रेक्टैंगल की रीडिंग में प्रोफ़ाइल के सीड से निकला तयशुदा नॉइज़ जोड़ा जाता है: एक प्रोफ़ाइल हमेशा वही पिक्सेल बनाती है, और अलग सीड अलग पिक्सेल बनाता है। WebGL और WebGPU एक ही कार्ड बताते हैं, क्योंकि पेज दोनों से पूछकर मिला सकता है। यह जाँच हमने तब जोड़ी जब एक बिल्ड मिला जिसमें WebGL तो GeForce RTX 3060 बता रहा था, पर WebGPU अडैप्टर डेवलपर मशीन की Intel चिप का नाम ले रहा था।

स्क्रीन, हार्डवेयर और डिवाइस

स्क्रीन का आकार, उपलब्ध ऊँचाई, पिक्सेल रेशियो, CPU कोर, बताई गई मेमोरी, टच पॉइंट, और माइक्रोफ़ोन, स्पीकर व कैमरे के नाम, सब एक ही डिवाइस परिवार से आते हैं। छोटी-छोटी बातें ही यहाँ फ़ैसला करती हैं। macOS पर Chrome थ्रेड नहीं, फ़िज़िकल कोर बताता है, और बताई गई मेमोरी की ऊपरी हद Chrome के वर्ज़न बदलने के साथ बदली है। इनमें से कोई एक भी ग़लत रखना ऐसा कंप्यूटर बयान करता है जो कोई बेचता ही नहीं।

WebRTC, टाइम ज़ोन और भाषा

WebRTC क्लासिक लीक है: प्रॉक्सी के पीछे होते हुए भी यह असली लोकल पता बता सकता है। प्रॉक्सी वाली प्रोफ़ाइल पर वह रास्ता बंद कर दिया जाता है, इसलिए असली पते के बाहर आने की जगह ही नहीं बचती — हम लीक को प्रॉक्सी का भेस पहनाते नहीं, बंद करते हैं। बिना प्रॉक्सी वाली प्रोफ़ाइल बहाना करने के बजाय सच बताती है, क्योंकि बहुत कम असली मशीनों में WebRTC बंद होता है और उसे बंद करना ख़ुद एक पहचान है। टाइम ज़ोन और स्वीकार की गई भाषाएँ मशीन की सेटिंग नहीं, प्रॉक्सी के देश के पीछे चलती हैं।

प्रॉक्सी और DNS

TLS और HTTP/2 हैंडशेक जल्द

हैंडशेक HTML के पहले बाइट से भी पहले होता है और पेज का कोई स्क्रिप्ट उस तक पहुँच ही नहीं सकता, ठीक इसीलिए उसे बदलना काम का है, और ठीक इसीलिए इंजेक्ट किए JavaScript पर बना टूल उसे छू नहीं सकता। यह अभी बन रहा है और मौजूदा रिलीज़ में नहीं है। हम इसे यहाँ अधूरा लिखना बेहतर समझते हैं, बजाय इसके कि आप मान लें कि हो चुका है।

हमें कैसे पता कि यह काम करता है

हम नहीं चाहते कि आप डिज़ाइन पर यूँ ही भरोसा करें। हर सतह उसी मशीन पर असली Chrome से मिलाकर मापी जाती है, और प्रोफ़ाइल सार्वजनिक डिटेक्शन साइटों से गुज़ारी जाती हैं।

जहाँ दोनों में फ़र्क़ निकलता है, वह फ़र्क़ ठीक किया जाता है या लिख दिया जाता है - गोल नहीं किया जाता। इस पेज पर जो आपको नहीं मिलेगा वह है स्कोर: उन साइटों के बताए नंबर हर बार बदलते हैं और एक-दूसरे से उलटे पड़ते हैं, इसलिए यहाँ कोई नंबर छापना किसी और के एल्गोरिदम के बारे में वादा करना होगा। वे असल में जिस काम की हैं वह है हमारी ही ख़राबियाँ ढूँढ़ना।

मापना ही हमारी अपनी ग़लतियाँ भी पकड़ता है। फ़ॉन्ट फ़िल्टर जब पहली बार निकला, एक डिटेक्शन साइट पलट गई: जो प्रोफ़ाइल भरोसेमंद पढ़ी जा रही थी वह संदिग्ध पढ़ी जाने लगी। वजह यह थी कि फ़िल्टर ऐसे ग्यारह फ़ॉन्ट छिपा रहा था जो ख़ुद Windows 11 के साथ आते हैं, इसलिए प्रोफ़ाइल ऐसी Windows मशीन बयान कर रही थी जो हो ही नहीं सकती। सूची ठीक करते ही यह साफ़ हो गया। यह बात कोई तर्क नहीं ढूँढ़ पाता; सिर्फ़ चलाकर देखने से मिली।

हमारी ही एक गड़बड़ी से पहले, उसके दौरान और उसके बाद एक डिटेक्शन साइट का फ़ैसला एक डिटेक्शन साइट का एक प्रोफ़ाइल पर फ़ैसला - हमारी ही एक गड़बड़ी से पहले, उसके दौरान और उसके बाद। फ़ॉन्ट फ़िल्टर ऐसे ग्यारह फ़ॉन्ट छिपाते हुए बाहर निकला जो Windows 11 हमेशा इंस्टॉल करता है, यानी वह ऐसी मशीन बयान कर रहा था जो हो ही नहीं सकती, और फ़ैसला पलट गया। सूची ठीक करने पर वह वापस आ गया। यह बात तर्क से नहीं मिलती; चलाकर देखने से मिली। फ़ॉन्ट फ़िल्टर से पहले जब बग था सुधार के बाद भरोसेमंद संदिग्ध भरोसेमंद
एक डिटेक्शन साइट का एक प्रोफ़ाइल पर फ़ैसला - हमारी ही एक गड़बड़ी से पहले, उसके दौरान और उसके बाद। फ़ॉन्ट फ़िल्टर ऐसे ग्यारह फ़ॉन्ट छिपाते हुए बाहर निकला जो Windows 11 हमेशा इंस्टॉल करता है, यानी वह ऐसी मशीन बयान कर रहा था जो हो ही नहीं सकती, और फ़ैसला पलट गया। सूची ठीक करने पर वह वापस आ गया। यह बात तर्क से नहीं मिलती; चलाकर देखने से मिली।

एंटीडिटेक्ट ब्राउज़र क्या नहीं करता

फ़िंगरप्रिंट कई संकेतों में से एक है, और बाक़ी के बारे में साफ़ कह देना उस वादे से ज़्यादा क़ीमती है जो हम निभा नहीं सकते।

लोग जो पूछते हैं

क्या एंटीडिटेक्ट ब्राउज़र क़ानूनी है?

यह सॉफ़्टवेयर एक ब्राउज़र है, और अपने ही कंप्यूटर पर कई ब्राउज़र प्रोफ़ाइल चलाना अपने आप में ग़ैरक़ानूनी नहीं है। नियम इस बात पर लगते हैं कि आप उनसे करते क्या हैं: जहाँ आप रहते हैं वहाँ का क़ानून, और जिन साइटों पर जाते हैं उनकी शर्तें। धोखाधड़ी या किसी और का रूप धरने में हम मदद नहीं करते, और हमारी शर्तों में यह लिखा है।

क्या Chrome एंटीडिटेक्ट ब्राउज़र है?

नहीं। Chrome की प्रोफ़ाइल कुकीज़ और हिस्ट्री अलग रखती हैं, जिससे सबसे साफ़ दिखने वाली कड़ी हट जाती है, लेकिन हर प्रोफ़ाइल वही स्क्रीन, वही फ़ॉन्ट, वही ग्राफ़िक्स कार्ड और वही कैनवस पिक्सेल बताती है, क्योंकि सब एक ही मशीन पर चलती हैं। अलग स्टोरेज अलग पहचान नहीं है।

यह VPN या प्रॉक्सी से कैसे अलग है?

प्रॉक्सी या VPN सिर्फ़ वह पता बदलती है जहाँ से रिक्वेस्ट आती है, और बस; ब्राउज़र फिर भी वही कंप्यूटर बयान करता रहता है। दोनों एक-दूसरे की जगह नहीं, एक-दूसरे के साथ चलते हैं। SigoLogin हर प्रोफ़ाइल के लिए एक प्रॉक्सी माँगता है, और टाइम ज़ोन तथा भाषा उसी प्रॉक्सी के देश से लेता है ताकि वे पते से न टकराएँ।

क्या कोई फ़्री प्लान है?

तीन प्रोफ़ाइल फ़्री, वही फ़िंगरप्रिंट इंजन जो पेड प्लान में है। फ़्री प्लान की सीमा इस बात में है कि कितनी प्रोफ़ाइल मिलती हैं, इस बात में नहीं कि वे कितनी अच्छी तरह बचाई जाती हैं। पेड प्लान प्रोफ़ाइल की संख्या और सक्रिय किए जा सकने वाले डिवाइस की संख्या बढ़ाते हैं।

क्या मेरा डेटा आपके सर्वर पर जाता है?

प्रोफ़ाइल आपकी अपनी डिस्क पर फ़ोल्डर हैं, और उनके अंदर की कुकीज़, सहेजे गए लॉगिन और हिस्ट्री वहीं रहती हैं। ऐप प्रबंधन के कुछ ही फ़ील्ड भेजता है ताकि आप अपनी प्रोफ़ाइल इस साइट पर देख सकें, साथ में एक एरर लॉग। टीम के किसी साथी के साथ प्रोफ़ाइल शेयर करना इकलौता अपवाद है, क्योंकि वह किसी और मशीन पर बैठा है। प्राइवेसी पेज हर फ़ील्ड का नाम गिनाता है।

यह किन ऑपरेटिंग सिस्टम पर चलता है?

Windows 10 और 11, और macOS 13 या उसके बाद, 64-बिट। Intel और Apple silicon दोनों के लिए बिल्ड हैं। Linux शुरू ही नहीं हुआ। प्लैटफ़ॉर्म पेज बताता है कि क्या है और क्या नहीं।

आगे पढ़िए

यह पेज जो सवाल उठाता है, उनके लंबे जवाब।

पक्का नहीं है कि यही सही टूल है?

ऐसे असिस्टेंट से पूछिए जिसका जवाब में कोई फ़ायदा नहीं है।

इस्तेमाल कैसे करें

  1. 1

    इंस्टॉल कीजिए और जोड़िए

    Windows पर इंस्टॉल कीजिए, ऐप खोलिए, और वह बटन दबाइए जो उसे यहाँ साइन इन कर देता है। कर्नेल एक ही बार डाउनलोड होता है।

  2. 2

    प्रोफ़ाइल बनाइए

    नाम दीजिए और एक प्रॉक्सी जोड़िए। फ़िंगरप्रिंट एक सीड से बनता है और उसके बाद वही बना रहता है।

  3. 3

    खोलिए, और खोलते रहिए

    हर बार खुलने पर वही पहचान दोबारा इस्तेमाल होती है। प्रोफ़ाइल शेयर कीजिए तो टीम का साथी अपनी मशीन पर वही डिवाइस खोलता है।

तीन प्रोफ़ाइल फ़्री, वही इंजन जो पेड प्लान में है

Windows 10 और 11, या फिर macOS 13 या उसके बाद, 64-बिट। शुरू करने के लिए कार्ड नहीं चाहिए।

आगे पढ़ें