एंटीडिटेक्ट ब्राउज़र कैसे काम करते हैं: पूरी तकनीकी व्याख्या

फ़िंगरप्रिंट सतहें, सुसंगत आइडेंटिटी का निर्माण, डिस्क पर स्टोरेज आइसोलेशन, प्रति-प्रोफ़ाइल रूटिंग, और पूरे तरीक़े की ईमानदार सीमाएँ।
एंटीडिटेक्ट ब्राउज़र चार काम करता है। वह हर प्रोफ़ाइल का ब्राउज़िंग डेटा अलग रखता है, हर प्रोफ़ाइल जो डिवाइस आइडेंटिटी बताता है उसे नियंत्रित करता है, हर प्रोफ़ाइल का ट्रैफ़िक स्वतंत्र रूप से रूट करता है, और इन तीनों को समय के साथ एक-दूसरे से मेल में रखता है। यह लेख हर काम की प्रक्रिया को तंत्र के स्तर पर समझाता है, और अंत में बताता है कि यह तरीक़ा क्या नहीं कर सकता।
फ़िंगरप्रिंट सतहें
शुरुआत इससे करें कि एक पेज क्या पढ़ सकता है, क्योंकि बाक़ी सब कुछ उसी का जवाब है। किसी भी वेबसाइट की स्क्रिप्ट ब्राउज़र से सवाल पूछ सकती है, और जवाब मशीन का वर्णन करते हैं। सतहें स्वाभाविक रूप से समूहों में बँटती हैं।
| सतह | पेज क्या पढ़ता है |
|---|---|
| Navigator | ब्राउज़र का नाम और संस्करण, प्लेटफ़ॉर्म, भाषा सूची, बताई गई प्रोसेसर संख्या और मेमोरी, टच सपोर्ट |
| Screen | चौड़ाई, ऊँचाई, उपलब्ध कार्य क्षेत्र, कलर डेप्थ, डिवाइस पिक्सल रेशियो |
| Canvas | ऑफ़ स्क्रीन टेक्स्ट और आकृतियाँ बनाने से निकले ठीक-ठीक पिक्सल, जो एक स्थिर मान में हैश किए जाते हैं |
| WebGL | ग्राफ़िक्स वेंडर और रेंडरर स्ट्रिंग, साथ में रेंडर किए दृश्यों के हैश |
| ऑडियो | ऑडियो प्रोसेसिंग ग्राफ़ से गुज़ारे गए ऑसिलेटर का आउटपुट, जो स्टैक के हिसाब से बदलता है |
| फ़ॉन्ट | कौन-से टाइपफ़ेस इंस्टॉल हैं, जिसका अनुमान टेक्स्ट की नाप से लगाया जाता है |
| टाइमज़ोन और घड़ी | बताया गया ज़ोन और ऑफ़सेट, जिसकी तुलना इस बात से होती है कि ट्रैफ़िक कहाँ से आ रहा है |
| नेटवर्क | पता ख़ुद, WebRTC के कनेक्शन उम्मीदवारों का नज़ारा, और TLS हैंडशेक का आकार |
कोई एक पंक्ति किसी मशीन की पहचान नहीं कराती। संयोजन कराता है, और संयोजन में ही झूठ पकड़ा भी जाता है: जो मान एक असली मशीन के हो ही नहीं सकते, वे किसी अकेले मान से ज़्यादा ऊँचा संकेत हैं।
संग्रह सस्ता और चुपचाप होता है। तालिका का हर मान किसी भी पेज को दस्तावेज़ित API से मिल जाता है, बिना किसी अनुमति पॉप-अप के, और उसका ज़्यादातर हिस्सा विज़िट के पहले सेकंड में आ जाता है। इस चलन पर आपका रुख़ जो भी हो, यह आधुनिक वेब का स्थायी तथ्य है, और एंटीडिटेक्ट ब्राउज़र इसी आधार रेखा के विरुद्ध डिज़ाइन किया जाता है।
सुसंगत आइडेंटिटी कैसे बनती है
सीधा तरीक़ा है हर सवाल को रोककर जवाब को रैंडम कर देना। यह एक संरचनात्मक कारण से नाकाम होता है। जवाब एक ही मशीन का वर्णन करते हैं, इसलिए वे आपस में जुड़े होते हैं, और स्वतंत्र रूप से रैंडम जवाब इन संबंधों को तोड़ देते हैं। Windows यूज़र एजेंट के साथ ऐसे फ़ॉन्ट जो सिर्फ़ macOS में आते हैं, ऐसी स्क्रीन साइज़ जो किसी लैपटॉप में कभी आई ही नहीं, ऐसी ग्राफ़िक्स स्ट्रिंग जो बताए गए प्लेटफ़ॉर्म के साथ कभी रही ही नहीं: हर एक ऐसा विरोधाभास है जिसे चेकर सस्ते में परख सकता है।
इसलिए काम करने वाला एंटीडिटेक्ट ब्राउज़र आइडेंटिटी को एक सेट के रूप में बनाता है। वह किसी असली, आम मशीन वर्ग से शुरू करता है और हर मान उसी चुनाव से निकालता है। प्लेटफ़ॉर्म तय करता है कि फ़ॉन्ट सूची, ग्राफ़िक्स स्ट्रिंग और टच सपोर्ट क्या विश्वसनीय होंगे। स्क्रीन उन साइज़ से आती है जिनके साथ उस वर्ग की मशीनें सचमुच आती हैं। भाषा और टाइमज़ोन प्रोफ़ाइल के इच्छित क्षेत्र से आते हैं। मान एक-दूसरे से इसलिए मेल खाते हैं कि वे एक साथ चुने गए थे, एक मशीन के एक वर्णन से।
दूसरा गुण उतना ही अहम है: सेट स्टोर किया जाता है। वह प्रोफ़ाइल बनते समय उसमें लिख दिया जाता है, और हर सत्र वही मान बताता है, क्योंकि जो डिवाइस विज़िटों के बीच बदलता रहे वह ऐसा हार्डवेयर बताता है जो किसी के पास है ही नहीं। विश्वसनीय होने का ज़्यादातर मतलब स्थिरता है।
डिस्क पर स्टोरेज आइसोलेशन
स्टोरेज का काम सबसे कम चमकदार है और सबसे पूर्ण। हर प्रोफ़ाइल की एक डायरेक्टरी होती है, और ब्राउज़र जो कुछ भी सहेजता है वह उसके भीतर रहता है: कुकी डेटाबेस, Local Storage, IndexedDB, HTTP कैश, सर्विस वर्कर रजिस्ट्रेशन, एक्सटेंशन की स्थिति, हिस्ट्री और सहेजे गए क्रेडेंशियल। दो प्रोफ़ाइल दो अलग डायरेक्टरी हैं, और चल रहा हर ब्राउज़र अपनी डायरेक्टरी की ओर इशारा करता है।
जाँचने वाला गुण पूर्ण अलगाव है, क्योंकि आंशिक आइसोलेशन चुपचाप विफल होता है। कुकी अलग करना आसान है। कैश अपने रखे संसाधनों के ज़रिये लौटते ब्राउज़र की पहचान करा सकता है। सर्विस वर्कर आइडेंटिफ़ायर रख सकते हैं और विज़िटों के बीच चलते रह सकते हैं। IndexedDB वह जगह है जहाँ आधुनिक एप्लिकेशन वे रिकॉर्ड रखते हैं जिन पर वे सचमुच भरोसा करते हैं। जो आइसोलेशन मशहूर स्टोर कवर करे और बाक़ियों में से किसी को साझा छोड़ दे, उसने समस्या का सिर्फ़ दिखने वाला हिस्सा अलग किया है।
स्थायित्व दूसरा आधा है। सत्रों में मूल्य जमा होता है: पूरी हुई सुरक्षा जाँचें, स्थापित लॉगिन इतिहास, लौटने वाले विज़िटर की बनावट। प्रोफ़ाइल अपनी डायरेक्टरी सत्रों के बीच रखता है, और इसी से अकाउंट का काम संभव होता है। बंद होते समय लिखा जाना डायरेक्टरी को टिकाऊ बनाता है, इसीलिए सत्र के बीच में प्रोफ़ाइल प्रोसेस को मार देने से वह सत्र जा सकता है जो अभी-अभी स्थापित हुआ था।
नेटवर्क रूटिंग
हर प्रोफ़ाइल अपना रूट लेकर चलता है, जो ब्राउज़र शुरू होते समय लागू होता है, ताकि ट्रैफ़िक उस प्रोफ़ाइल की प्रॉक्सी से निकले और सिस्टम सेटिंग या किसी और प्रोफ़ाइल के रूट को न छुए।
- प्रॉक्सी मशीन के बजाय प्रोफ़ाइल से जुड़ती है। साधारण ब्राउज़र सिस्टम प्रॉक्सी लेते हैं। यहाँ चल रहा हर प्रोफ़ाइल अपने एंडपॉइंट से कनेक्ट होता है।
- नाम रिज़ॉल्यूशन भी रूट से गुज़रता है, क्योंकि जो रिक्वेस्ट एक देश से आए और उसके लुकअप दूसरे देश से, वह नेटवर्क परत में विरोधाभास है।
- WebRTC को रूट से मेल खाने के लिए बाँधा जाता है। अकेला छोड़ने पर वह ऐसे कनेक्शन उम्मीदवार दिखा सकता है जिन्हें प्रॉक्सी ने कभी छुआ ही नहीं।
- टाइमज़ोन और भाषा रूट के देश से मिलाई जाती हैं, क्योंकि पता ही वह मान है जिसे गढ़ा नहीं जा सकता, इसलिए बाक़ी कहानी को उससे मेल खाना पड़ता है।
रूट वह घटक भी है जिसे स्वतंत्र रूप से सत्यापित करना सबसे ज़्यादा ज़रूरी है, क्योंकि वह किसी तीसरे पक्ष से ख़रीदा जाता है। असाइन करने से पहले एंडपॉइंट की जाँच, और विज्ञापित पते के बजाय दिखने वाला पता पढ़ना, किसी विफलता को तब पकड़ लेता है जब वह अभी कॉन्फ़िगरेशन की समस्या है, अकाउंट की नहीं।
ब्राउज़र ख़ुद क्या बदलता है
दो जगहें हैं जहाँ कोई टूल पेज को मिलने वाले जवाब बदल सकता है, और उनके बीच का अंतर इस विषय का सबसे तकनीकी मोड़ है।
| तरीक़ा | यह कैसे काम करता है | कमज़ोरी |
|---|---|---|
| स्क्रिप्ट इंजेक्शन | कोई एक्सटेंशन या इंजेक्ट की गई स्क्रिप्ट पेज के बुलाए फ़ंक्शन ओवरराइड कर देती है, इसलिए canvas रीड और navigator लुकअप बदले हुए मान लौटाते हैं | ओवरराइड ख़ुद दिखते हैं। पैच किए फ़ंक्शन पैच किए हुए पहचाने जा सकते हैं, और जो भी सतह इंजेक्टर भूल गया वह अब भी असली मान बताती है |
| ब्राउज़र के अपने कोड के भीतर | ब्राउज़र का इम्प्लीमेंटेशन उन कोड पथों में प्रोफ़ाइल के स्टोर किए मानों से जवाब देता है जहाँ असली मान बनते हैं | बनाना और सँभालना कहीं ज़्यादा मेहनत का है, इसीलिए ख़ास इसी काम के लिए बने टूल एक्सटेंशनों से अलग पहचाने जाते हैं |
इंजेक्शन वाला तरीक़ा वहीं है जहाँ से यह श्रेणी शुरू हुई, और उसकी छत अच्छी तरह समझी जा चुकी है: पेज जाँच सकता है कि नेटिव फ़ंक्शन अब भी नेटिव दिखते हैं या नहीं, और उसी सतह तक ऐसे रास्ते से पहुँच सकता है जिसे इंजेक्शन ने कवर नहीं किया। इसीलिए ख़ास इसी काम के लिए बने एंटीडिटेक्ट ब्राउज़र बदलाव ब्राउज़र के भीतर ही करते हैं, ताकि स्टोर की हुई आइडेंटिटी वही हो जो इम्प्लीमेंटेशन उसे पढ़ने वाले हर रास्ते से बताता है।
प्रोफ़ाइल खोलने पर असल में क्या होता है
- स्टोर की गई आइडेंटिटी लोड होती है: डिवाइस मानों का एक सुसंगत सेट, वही सेट जो पिछली बार था।
- ब्राउज़र प्रोफ़ाइल की अपनी डायरेक्टरी के विरुद्ध शुरू होता है, इसलिए हर स्थायी स्टोर प्रोफ़ाइल का अपना है।
- रूट लागू होता है: प्रॉक्सी, उसके ज़रिये नाम रिज़ॉल्यूशन, उससे बँधा WebRTC।
- सत्र चलता है और डायरेक्टरी के भीतर स्थिति जमा करता है।
- बंद होने पर स्थिति लिख दी जाती है, ताकि अगली बार खुलने पर वही डिवाइस, वही स्टोरेज और वही रूट लौटे।
उस सूची का हर हिस्सा बाहर से जाँचा जा सकता है। फ़िंगरप्रिंट टेस्ट पेज दो बार खोलें और खुलने के बीच मान मिलाएँ। डिस्क पर प्रोफ़ाइल डायरेक्टरी देखें। दिखने वाला पता पढ़ें। इस श्रेणी के टूल को इस जाँच को न्योता देना चाहिए, क्योंकि तंत्र ही प्रोडक्ट है।
ईमानदार सीमाएँ
इस तरीक़े के किनारे हैं, और उन्हें जानना उसे सक्षमता से इस्तेमाल करने का हिस्सा है।
- यह ब्राउज़र को पहचाने जाने के लायक न रहने वाला नहीं बना सकता, और ऐसे दावे को कोई नाप भी नहीं सकता। यथार्थवादी लक्ष्य ऐसा प्रोफ़ाइल है जो एक साधारण, भीतर से सुसंगत मशीन जैसा पढ़ा जाए और स्थिर रहे।
- यह आपके डाले हुए विरोधाभास ठीक नहीं कर सकता। एक देश का रूट और दूसरे देश का टाइमज़ोन कॉन्फ़िगरेशन की ग़लती है, और टूल बस सही कॉन्फ़िगरेशन को आसान बना सकता है।
- यह व्यवहार को कवर नहीं करता। टाइमिंग, मात्रा और लय को माहौल के साथ पढ़ा जाता है, और लॉकस्टेप में चलने वाला बेड़ा अपनी पहचान ख़ुद करा देता है, चाहे हर माहौल कितना भी साफ़ हो।
- यह घोषित पहचान को कवर नहीं करता। साझा रिकवरी विवरण, साझा भुगतान साधन और दोहराया गया टेक्स्ट ब्राउज़र से कहीं ऊपर, प्लेटफ़ॉर्म के अपने रिकॉर्ड के ज़रिये अकाउंट जोड़ते हैं।
- यह प्लेटफ़ॉर्म के नियम नहीं बदलता। आइसोलेशन वैध माहौलों को अलग करता है। प्लेटफ़ॉर्म क्या अनुमति देता है यह प्लेटफ़ॉर्म का फ़ैसला है, और जिस प्लेटफ़ॉर्म पर हमारा नियंत्रण नहीं वहाँ किसी नतीजे का वादा यहाँ नहीं किया जाता।
सीमाओं को निराशा नहीं, परिभाषा की तरह पढ़ें। एंटीडिटेक्ट ब्राउज़र एक संगति का उपकरण है: अलग स्टोरेज, स्थिर और विश्वसनीय आइडेंटिटी, मेल खाता रूट, जो प्रति प्रोफ़ाइल साथ रखे जाते हैं और हर बार खुलने पर एक जैसे दोहराए जाते हैं। पूरा तंत्र यही है, और इस श्रेणी पर लिखा बाक़ी सब उसी का कोई रूपांतर है।

