चैट के मैसेज में, ईमेल में, नोट्स ऐप में या QR स्कैनर में किसी लिंक पर टैप करो, और ज़्यादातर फ़ोन उसे आपके ब्राउज़र में नहीं खोलते। वे उसे उसी ऐप के अंदर एक ब्राउज़र जैसी खिड़की में खोलते हैं, जिसे webview कहते हैं: ना एड्रेस-बार, ना आपके एक्सटेंशन, ना ब्राउज़र-स्तर का कोई नियम। जो कोई ब्राउज़र-फ़िल्टर के भरोसे है, उसके लिए यही दीवार का सबसे ज़्यादा इस्तेमाल होने वाला छेद है, और इसीलिए TKO’T ऐप की परत के नीचे से फ़िल्टर करती है: सिस्टम-भर का DNS और एक ऑन-डिवाइस स्क्रीन-परत जो हर ऐप के अंदर रेंडर होती चीज़ को परखती है, मुफ़्त, Mac और iPhone पर।

Webview भेस बदला हुआ पूरा ब्राउज़र है

ऐप्स वेब-कॉन्टेंट दिखाने के लिए सिस्टम का ही ब्राउज़र-इंजन अपने अंदर जड़ लेते हैं, iPhone पर WKWebView, Android पर System WebView, और वह इंजन तकनीकी रूप से वही है जो असली ब्राउज़र चलाता है: पूरा HTML, पूरा वीडियो, पूरा JavaScript। फ़र्क़ सिर्फ़ ऊपर की पोशाक का है: एड्रेस-बार नहीं दिखता, सेटिंग्स नहीं दिखतीं, और आपके ब्राउज़र में लगा कोई भी फ़िल्टर, एक्सटेंशन या सुरक्षित-खोज वहाँ मौजूद ही नहीं है, क्योंकि तकनीकी नज़र से वह आपका ब्राउज़र है ही नहीं।

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

सबको एक साथ, नीचे से ढँको

Webview को ऐप-दर-ऐप बंद करने की कोशिश हारना तय है: हर ऐप का अपना कोना है, हर अपडेट नई खिड़की ला सकता है, और सूची कभी पूरी नहीं होती। टिकने वाला जवाब परत बदलना है, ऐप के ऊपर से हटकर ऐप के नीचे: जो परतें ऐप की सरहद के नीचे बैठती हैं, वे हर webview पर अपने आप लागू होती हैं, क्योंकि उनके लिए हर खिड़की बस नेटवर्क का ट्रैफ़िक और स्क्रीन का रेंडर है।

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

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

यह दरवाज़ा इतना इस्तेमाल क्यों होता है

तकनीक के नीचे एक मनोविज्ञान है, और उसे नाम देना आधा इलाज है। Webview का रास्ता तीन वजहों से सबसे घिसा हुआ है। पहली, वह अचानक खुलता है: नोटिफ़िकेशन का लिंक, ग्रुप में फेंका गया कोई URL, विज्ञापन का कोना, और आप बिना इरादे के एक बिना-फ़िल्टर खिड़की के अंदर हो। इरादे वाला रास्ता रोकना आसान है; बिना इरादे वाले के लिए दीवार को हर जगह पहले से खड़ा होना पड़ता है, ठीक यही नीचे-से-ढँकने वाली परतों का काम है। दूसरी, उसके पास बहाने की सुविधा है: मैंने तो ब्राउज़र खोला ही नहीं, बस लिंक देखा, यह वाक्य रात के एक बजे बहुत मुलायम लगता है, और रिलैप्स की सुरंग की पहली सीढ़ी अक्सर यही मुलायम वाक्य होता है। तीसरी, वह आदत के सबसे क़रीब बैठा है: दिन में सौ बार लिंक टैप होते हैं, तो सौ बार वह इंजन जागता है, और जो चीज़ सौ बार हाथ में आती है, कमज़ोर पल में वही सबसे पहले हाथ आती है।

इस मनोविज्ञान का व्यावहारिक नतीजा एक नियम है: जिस रास्ते से आप रोज़ सौ मासूम बार गुज़रते हो, उस रास्ते का पहरा इंसान नहीं, सिस्टम होना चाहिए। भरोसे की जाँच सौ में एक बार होती है; सिस्टम सौ की सौ बार वही करता है।

घर के बाक़ी डिवाइसों पर वही खिड़कियाँ

Webview सिर्फ़ फ़ोन की बीमारी नहीं है। स्मार्ट TV के ऐप, गेम-कंसोल के स्टोर और ब्राउज़र, VR हेडसेट के अंदर के पैनल, सब वही जड़ा हुआ ब्राउज़र-इंजन चलाते हैं, अक्सर और भी कम पाबंदियों के साथ, और वहाँ स्क्रीन सबसे बड़ी और कमरा सबसे अकेला होता है। इलाज का ढाँचा वही रहता है, बस औज़ार बदलते हैं: उन डिवाइसों का DNS राउटर के स्तर पर फ़िल्टर हो, क्योंकि उन पर अपनी परत बिठाने की जगह नहीं होती, और उनके अपने पैरेंटल-कंट्रोल पासकोड के पीछे। पूरा नक़्शा TV, कंसोल और VR के ब्राउज़र बंद करने में अलग से खींचा गया है।

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

अजीब किनारे, ईमानदारी से

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

चौथा किनारा Android का है, और वह ईमानदारी माँगता है: TKO’T आज Mac और iPhone पर है, तो Android पर स्क्रीन-परत वाली गारंटी उपलब्ध नहीं। वहाँ भरोसा तीन नेटिव चीज़ों पर टिकता है: प्राइवेट DNS में फ़िल्टरिंग रिज़ॉल्वर, Family Link या मैनेज्ड प्रोफ़ाइल से सेटिंग्स और इंस्टॉल की तालाबंदी, और डेवलपर-ऑप्शन बंद। उतना सेटअप हर webview के नेटवर्क-रास्ते को ढँक देता है; जो नहीं ढँकता, उसके लिए Android पर जवाब बनावट है, रात का इंटरनेट राउटर से बंद और फ़ोन बेडरूम के बाहर।

दो और सवाल जो यहीं सुलझ जाते हैं

QR कोड का सवाल पहले: स्कैनर से खुला पन्ना भी webview ही है, और QR की आदत बढ़ती जा रही है, मेन्यू, पोस्टर, पैकेजिंग, हर जगह। अच्छी ख़बर यह कि नीचे की परतों के लिए QR कुछ नया नहीं है, वह बस एक और लिंक है: DNS उसे वैसे ही परखता है, स्क्रीन-परत उसके रेंडर को वैसे ही देखती है। बुरी ख़बर सिर्फ़ उनके लिए है जिनका पहरा ब्राउज़र-ऐप में बैठा था, क्योंकि स्कैनर ब्राउज़र नहीं है।

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

एक शाम का काम, हमेशा का सुकून

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

उस शाम के बाद webview का सवाल आपकी रोज़ की सोच से निकल जाता है, और यही असल जीत है, क्योंकि जो सवाल रोज़ दिमाग़ में रहता है वह रोज़ ऊर्जा खाता है, और वह ऊर्जा रिकवरी के असली काम के लिए चाहिए। लूप की ताक़त अनगिने दरवाज़ों में थी; अब हर दरवाज़ा, नाम कोई भी हो, उन्हीं दो चोकपॉइंट से गुज़रता है जिन पर पहरा चौबीसों घंटे है और चाबी किसी और के पास। रात के एक बजे का आप कोई नई खिड़की खोज सकता है, पर वह खिड़की भी स्क्रीन पर ही खुलेगी, और स्क्रीन अब अकेली नहीं है।

अक्सर पूछे जाने वाले सवाल (FAQ)

ऐप के अंदर छिपे ब्राउज़र को कैसे ब्लॉक करें? ऐप-दर-ऐप नहीं, नीचे से: सिस्टम-स्तर का फ़िल्टरिंग DNS हर webview के नेटवर्क-ट्रैफ़िक पर अपने आप लागू होता है, और TKO’T जैसी ऑन-डिवाइस स्क्रीन-परत हर ऐप में रेंडर होते कॉन्टेंट को परखती है। साथ में वेब-पाबंदियाँ और इंस्टॉल-लॉक पासकोड के पीछे, और पासकोड किसी भरोसेमंद इंसान के पास। दो चोकपॉइंट, नेटवर्क और स्क्रीन, हर खिड़की को ढँक लेते हैं।

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

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

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

Android पर इसका ईमानदार जवाब क्या है? TKO’T आज Mac और iPhone पर है, इसलिए Android पर नेटिव परतें ही रास्ता हैं: प्राइवेट DNS में फ़िल्टरिंग रिज़ॉल्वर, Family Link या मैनेज्ड प्रोफ़ाइल से सेटिंग्स-इंस्टॉल की तालाबंदी, डेवलपर-ऑप्शन बंद, और चाबी किसी और के पास। यह हर webview का नेटवर्क-रास्ता ढँक देता है; बाक़ी के लिए रात का इंटरनेट राउटर से बंद और फ़ोन कमरे के बाहर।

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