कस्टम Captive Portal: HTML आणि CSS मार्गदर्शिका
ही अधिकृत तांत्रिक संदर्भ मार्गदर्शिका कस्टम captive portal लँडिंग पेजचे डिझाइन आणि कोड करण्यासाठी आवश्यक असणारे डेव्हलपमेंट निकष, CSS आर्किटेक्चर आणि नेटवर्क-पातळीवरील मर्यादांची रूपरेषा स्पष्ट करते. हे फ्रंटएंड डेव्हलपर्स आणि नेटवर्क आर्किटेक्ट्सना Apple CNA आणि Android वेबव्ह्यू वातावरणाचा सामना करण्यासाठी व्यावहारिक धोरणे प्रदान करते, ज्यामुळे अचूक, सुसंगत आणि अत्यंत कार्यक्षम अतिथी WiFi अनुभवांची खात्री मिळते.
हे मार्गदर्शक ऐका
पॉडकास्ट ट्रान्सक्रिप्ट पहा
📚 आमच्या मुख्य मालिकेचा भाग: Captive Portals साठी अंतिम मार्गदर्शिका →
- मुख्य सारांश (Executive Summary)
- तांत्रिक सखोल माहिती (Technical Deep-Dive)
- Captive Portal लाइफसायकल
- प्लॅटफॉर्म-विशिष्ट मिनी-ब्राउझर मर्यादा
- Apple CNA "Done" बटण ट्रॅप टाळण्यासाठी कोडिंग करणे
- अंमलबजावणी मार्गदर्शिका
- सुवर्ण नियम: झिरो इंटरनेट कनेक्टिव्हिटी लक्षात घेऊन डिझाइन करा
- 1. व्ह्यूपोर्ट कॉन्फिगरेशन
- 2. CSS इनलाइन करणे आणि बाह्य डिपेंडन्सी काढून टाकणे
- 3. Base64 ॲसेट एन्कोडिंग
- 4. इनपुट फील्ड आणि टॅप टार्गेट ऑप्टिमायझेशन
- 5. कायदेशीर संमती आणि GDPR अनुपालन
- सानुकूल Captive Portal HTML/CSS टेम्पलेट
- समस्यानिवारण आणि जोखीम कमी करणे
- १. SSL/TLS प्रमाणपत्र चेतावणी लूप
- २. DNS रिझोल्यूशन अपयश (The Walled Garden Trap)
- 3. सेशन टाईमआउट आणि MAC स्पूफिंग असुरक्षितता
- Purple उत्पादनाची प्रासंगिकता: स्वतः तयार करणे वि. खरेदी करणे
- ROI आणि व्यावसायिक प्रभाव
- १. ऑपरेशनल खर्च कपात (आयटी हेल्पडेस्क तिकिटे)
- २. मार्केटिंग डेटा कॅप्चर आणि ऑप्ट-इन ऑप्टिमायझेशन
- ३. कायदेशीर आणि नियामक जोखीम कमी करणे
- मुख्य मुद्द्यांचा सारांश
- संदर्भ
- तांत्रिक ब्रीफिंग ऐका

मुख्य सारांश (Executive Summary)
लक्झरी हॉटेल्स Hospitality आणि रिटेल चेन्स Retail पासून ते ट्रान्झिट हब्स Transport आणि आधुनिक वैद्यकीय कॅम्पस Healthcare पर्यंतच्या - एंटरप्राइझ ठिकाणांसाठी, गेस्ट WiFi स्प्लॅश पेज हे डिजिटल प्रवेशद्वार आहे. तथापि, ९०% पेक्षा जास्त गेस्ट WiFi लॉगिन हे मोबाईल डिव्हाइसेसवर होतात, जिथे रेंडरिंग हे Safari किंवा Chrome सारख्या मानक ब्राउझरद्वारे नाही, तर अत्यंत प्रतिबंधित Captive Network Assistant (CNA) वेबव्ह्यूजद्वारे (webviews) नियंत्रित केले जाते [1]. हे "मिनी-ब्राउझर" कठोर सँडबॉक्स मर्यादा लागू करतात: ते बाह्य CDNs ब्लॉक करतात, पर्सिस्टंट कुकीज निष्क्रिय करतात, बाह्य वेब फॉन्ट दुर्लक्षित करतात आणि सुरक्षा जोखीम कमी करण्यासाठी आणि सेशन हायजॅकिंग रोखण्यासाठी JavaScript एक्झिक्युशनवर तीव्र मर्यादा घालतात [2].
जेव्हा एखादा डेव्हलपर पारंपारिक वेब मानके वापरून स्प्लॅश पेज डिझाइन करतो, तेव्हा या मर्यादांमुळे लेआउट बिघडतात, ब्रँड ॲसेट्स गहाळ होतात आणि लॉगिन बटणे काम करत नाहीत, ज्याचा थेट परिणाम ग्राहक समाधान आणि डिजिटल एंगेजमेंटवर होतो. हे मार्गदर्शक या आव्हानांवर उपाय प्रदान करते, बचावात्मक कोडिंग पद्धती सादर करते - जसे की इनलाइन CSS, Base64 ॲसेट एन्कोडिंग, सिस्टम फॉन्ट स्टॅक्स आणि स्पष्ट नेव्हिगेशन-चालित ऑथेंटिकेशन हँडशेक - जेणेकरून अखंड क्रॉस-प्लॅटफॉर्म रेंडरिंग सुनिश्चित होईल. याव्यतिरिक्त, Purple च्या पोर्टल बिल्डरसारख्या व्यवस्थापित (managed) सोल्यूशनचा वापर करून डेव्हलपर RADIUS ऑथेंटिकेशन, डेटाबेस स्केलिंग, GDPR/PCI अनुपालन आणि मल्टी-व्हेंडर AP इंटिग्रेशन्सचा भार कमी करून HTML/CSS वर पूर्ण कल्पक नियंत्रण कसे ठेवू शकतात, याचे आम्ही विश्लेषण करतो [3].
तांत्रिक सखोल माहिती (Technical Deep-Dive)
एक लवचिक सानुकूल (custom) captive portal तयार करण्यासाठी, डेव्हलपर्सना नेटवर्क-स्तरीय इंटरसेप्शन आणि ब्राउझर व्हर्च्युअलायझेशन समजून घेणे आवश्यक आहे, जे जेव्हा एखादा पाहुणा ओपन SSID शी जोडला जातो तेव्हा घडते.
Captive Portal लाइफसायकल
जेव्हा क्लायंट डिव्हाइस कॅप्टिव्ह SSID शी जोडले जाते, तेव्हा खालील क्रम ट्रिगर होतो:
१. IP असोसिएशन: डिव्हाइस ३-वे हँडशेक पूर्ण करते आणि DHCP द्वारे IP ॲड्रेसची विनंती करते.
२. ॲक्टिव्ह कनेक्टिव्हिटी प्रोब: ऑपरेटिंग सिस्टमचा बॅकग्राउंड नेटवर्क मॅनेजर त्वरित एका समर्पित व्हेंडर-न्यूट्रल कॅनरी URL वर HTTP GET विनंती पाठवतो (उदा., Apple ची http://captive.apple.com/hotspot-detect.html किंवा Google ची http://connectivitycheck.gstatic.com/generate_204) [1].
३. DNS/HTTP इंटरसेप्शन: स्थानिक वायरलेस LAN कंट्रोलर (WLC) किंवा ॲक्सेस पॉइंट (AP) या पोर्ट 80 HTTP विनंतीला इंटरसेप्ट करतो. अपेक्षित HTTP 200 किंवा 204 स्टेटस परत करण्याऐवजी, गेटवे HTTP 302 रीडायरेक्टद्वारे क्लायंटच्या ट्रॅफिकला captive portal च्या लँडिंग पेज URL कडे रीडायरेक्ट करतो [2].
४. वेबव्ह्यू स्पॉनिंग: रीडायरेक्ट शोधून, OS रीडायरेक्ट केलेले स्प्लॅश पेज प्रदर्शित करण्यासाठी त्याचे नेटिव्ह Captive Network Assistant (CNA) मिनी-browser स्पॉन (सुरू) करते, ज्यामुळे वापरकर्त्याला मॅन्युअली पूर्ण ब्राउझर उघडण्याची आवश्यकता उरत नाही.5. प्रमाणीकरण आणि स्थिती संक्रमण (Authentication and State Transition): वापरकर्ता लॉगिन फॉर्म पूर्ण करतो, क्रेडेन्शियल्स पुन्हा पोर्टल सर्व्हरकडे सबमिट करतो, जो गेटवेला (बऱ्याचदा RADIUS Access-Accept किंवा बाह्य API कॉलद्वारे) MAC पत्ता अधिकृत करण्याचे निर्देश देतो.
6. CNA एक्झिट हँडशेक: CNA मिनी-ब्राउझर त्याच्या कॅनरी URL वर आणखी एक HTTP GET क्रिया करतो. जर त्याला अपेक्षित असलेला 200/204 प्रतिसाद मिळाला, तर तो त्याचे वरच्या उजव्या बाजूचे बटण "Cancel" वरून "Done" वर बदलतो आणि प्राथमिक नेटवर्क इंटरफेस म्हणून WiFi कनेक्शन स्थापित करतो.
प्लॅटफॉर्म-विशिष्ट मिनी-ब्राउझर मर्यादा
प्रत्येक ऑपरेटिंग सिस्टम वेगवेगळ्या वेबव्ह्यू वातावरणात हे लाइफसायकल हाताळते, ज्यामुळे वर्तन अत्यंत विस्कळीत होते. खालील तक्ता या महत्त्वपूर्ण मर्यादांचे तपशील देतो:
| प्लॅटफॉर्म / वेबव्ह्यू | डिस्प्ले पद्धत | पर्सिस्टंट कुकीज (Persistent Cookies) | बाह्य वेब फॉन्ट | JavaScript एक्झिक्यूशन | विंडोचे आकारमान | एक्झिट हँडशेक ट्रिगर |
|---|---|---|---|---|---|---|
| Apple iOS CNA (Websheet) | मिनी-ब्राउझर पॉपअप | ब्लॉक केलेले (बंद केल्यावर नष्ट होते) | ब्लॉक केलेले (ऑफलाइन) | मर्यादित (कोणतेही localStorage/sessionStorage नाही) | रिस्पॉन्सिव्ह (डिव्हाइस-रुंदी) | केवळ फुल-पेज HTTP रीडायरेक्ट [1] |
| Apple macOS CNA (Captive Network Assistant) | मिनी-ब्राउझर पॉपअप | ब्लॉक केलेले | ब्लॉक केलेले | मर्यादित (कोणतेही alert/confirm डायलॉग नाहीत) | निश्चित (900px x 572px) | केवळ फुल-पेज HTTP रीडायरेक्ट |
| Android (Google) (CaptivePortalLogin) | पुश नोटिफिकेशन -> Chrome कस्टम टॅब | परवानगी आहे (Chrome सह शेअर केलेले) | परवानगी आहे (वॉल गार्डनमध्ये व्हाईटलिस्ट केलेले असल्यास) | पूर्ण | रिस्पॉन्सिव्ह | स्वयंचलित (Captive Portal API / 204 तपासणी) [2] |
| Samsung Android (Samsung Internet) | पुश नोटिफिकेशन -> मिनी-ब्राउझर | परवानगी आहे | परवानगी आहे | पूर्ण | रिस्पॉन्सिव्ह | स्वयंचलित |
| Windows 10/11 (डिफॉल्ट ब्राउझर) | ऑटो-लाँच डिफॉल्ट ब्राउझर | परवानगी आहे (पूर्ण ब्राउझर संदर्भ) | परवानगी आहे | पूर्ण | रिस्पॉन्सिव्ह | मॅन्युअल / स्वयंचलित |

Apple CNA "Done" बटण ट्रॅप टाळण्यासाठी कोडिंग करणे
कस्टम पोर्टल डेव्हलपमेंटमधील सर्वात वारंवार अयशस्वी होणाऱ्या पद्धतींपैकी एक म्हणजे iOS डिव्हाइसेसवरील "Done" बटण ट्रॅप. जेव्हा एखादा वापरकर्ता प्रमाणित होतो, तेव्हा iOS Websheet वेबव्ह्यूने नेटवर्क आता कॅप्टिव्ह राहिले नाही हे शोधले पाहिजे. हे ते त्याच्या बॅकग्राउंड कॅनरी विनंत्यांच्या यशाचे निरीक्षण करून करते.
महत्त्वाची गोष्ट म्हणजे, iOS CNA हे केवळ फुल-पेज HTTP नेव्हिगेशनवर (लोकेशन रीडायरेक्ट) ही तपासणी ट्रिगर करेल. जर एखाद्या डेव्हलपरने मॉडर्न सिंगल पेज ॲप्लिकेशन (SPA) तयार केले जे असिंक्रोनस AJAX कॉलद्वारे (उदा. fetch() किंवा Axios) फॉर्म डेटा सबमिट करते आणि URL न बदलता DOM डायनॅमिकली अपडेट करते, तर CNA त्याची कनेक्टिव्हिटी तपासणी कधीच पुन्हा रन करणार नाही. वापरकर्ता गेटवे लेव्हलवर ऑथेंटिकेट केला जाईल, परंतु वरच्या उजव्या कोपऱ्यातील CNA बटण "Cancel" असेच राहील. जर वैतागलेल्या वापरकर्त्याने "Cancel" वर क्लिक केले, तर iOS डिव्हाइस ताबडतोब SSID पासून डिस्कनेक्ट होईल, ज्यामुळे WiFi सेशन संपुष्टात येईल [1].
हे टाळण्यासाठी, ऑथेंटिकेशन सक्सेस हँडलरने प्रत्यक्ष लँडिंग पेजवर फुल-पेज रीडायरेक्ट केलेच पाहिजे (उदा. window.location.href = '/success') किंवा स्टँडर्ड HTTP POST ॲक्शनद्वारे लॉगिन फॉर्म नेटिव्हली सबमिट केला पाहिजे.
अंमलबजावणी मार्गदर्शिका
सर्व प्लॅटफॉर्मवर एकसमान रेंडरिंग सुनिश्चित करण्यासाठी, डेव्हलपर्सनी मॉडर्न, जास्त ॲसेट असलेल्या वेब डिझाइनकडून अत्यंत स्वावलंबी, डिफेन्सिव्ह कोडिंग पद्धतीकडे वळणे आवश्यक आहे.
सुवर्ण नियम: झिरो इंटरनेट कनेक्टिव्हिटी लक्षात घेऊन डिझाइन करा
Captive स्टेट दरम्यान, क्लायंट डिव्हाइसला बाहेरील इंटरनेटचा कोणताही ॲक्सेस नसतो. ते केवळ वायरलेस कंट्रोलरच्या Walled Garden मध्ये स्पष्टपणे व्हाइटलिस्ट केलेले IP ॲड्रेस आणि डोमेन रिझॉल्व्ह आणि ॲक्सेस करू शकते (जसे की स्वतः Captive Portal सर्व्हरचा IP). त्यामुळे, तुमच्या HTML मध्ये संदर्भित केलेली कोणतीही बाह्य ॲसेट लोड होण्यास अपयशी ठरेल, ज्यामुळे लेआउट विस्कळीत होईल.
डिफेन्सिव्ह डिझाइनसाठी, खालील मोबाईल-फर्स्ट Captive Portal डिझाइन चेकलिस्ट लागू करा:

1. व्ह्यूपोर्ट कॉन्फिगरेशन
मोबाईल डिव्हाइसेसनी व्ह्यूपोर्ट डेस्कटॉप विड्थपर्यंत (साधारणपणे 980px) कमी करू नये म्हणून HTML <head> मध्ये रिस्पॉन्सिव्ह व्ह्यूपोर्ट मेटा टॅग समाविष्ट असणे आवश्यक आहे. याशिवाय, मोबाईल डिव्हाइसेसवर मजकूर आणि इनपुट फील्ड अतिशय लहान दिसतील:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
2. CSS इनलाइन करणे आणि बाह्य डिपेंडन्सी काढून टाकणे
बाह्य CSS फाइल्स किंवा CDNs (उदा. Bootstrap, Tailwind, किंवा Google Fonts) कधीही लिंक करू नका. सर्व CSS हे HTML <head> मधील <style> ब्लॉकच्या आत एम्बेड केलेले असावे.
टायपोग्राफीसाठी, सिस्टम फॉन्ट स्टॅक वापरा जो आधीपासून इंस्टॉल केलेल्या स्थानिक ऑपरेटिंग सिस्टम फॉन्टचा संदर्भ देतो. हे HTTP रिक्वेस्ट पूर्णपणे टाळते आणि डिव्हाइसचा नेटिव्ह, हाय-क्वालिटी सॅन्स-सेरिफ टाइपफेस वापरून पेज त्वरित लोड होईल याची खात्री देते:
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
background-color: #F5F1ED; /* Pearl White Brand Colour */
color: #011638; /* Dark Blue Brand Colour */
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: 100vh;
}
3. Base64 ॲसेट एन्कोडिंग
इमेज, लोगो आणि आयकॉन्स बाह्य HTTP URLs द्वारे संदर्भित केले जाऊ नयेत, जोपर्यंत गेटवेच्या वॉल्ड गार्डनमध्ये होस्टिंग डोमेनला व्हाइटलिस्ट केले जात नाही. सर्वात विश्वासार्ह पद्धत म्हणजे लहान व्हिज्युअल ॲसेट्स (जसे की PNG किंवा SVG लोगो) थेट HTML किंवा CSS मध्ये Base64 डेटा URIs म्हणून एन्कोड करणे:
<!-- Inline Base64 Logo Example -->
<img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI0MCIgZmlsbD0iIzc0NThGRCIvPjwvc3ZnPg==" alt="Purple Logo" class="brand-logo">
4. इनपुट फील्ड आणि टॅप टार्गेट ऑप्टिमायझेशन
मोबाईल युझेबिलिटी मानकांचे (जसे की Apple च्या Human Interface Guidelines) पालन करण्यासाठी, सर्व परस्परसंवादी घटक स्पर्श इनपुटसाठी ऑप्टिमाइझ केलेले असणे आवश्यक आहे:
- इनपुट फॉन्ट आकार: इनपुट मजकूर फॉन्ट आकार किमान 16px असावा. जर फॉन्टचा आकार कमी असेल (उदा. 14px), तर iOS Safari आणि CNA फोकस केल्यावर इनपुट फील्डवर स्वयंचलितपणे झूम इन करतील, ज्यामुळे पेजचे लेआउट बिघडू शकते [1].
- टॅप टार्गेट्स: अपघाती क्लिक किंवा वापरकर्त्याची निराशा टाळण्यासाठी बटणे, चेकबॉक्स आणि लिंक्सचे किमान स्पर्श लक्ष्य क्षेत्र 44px x 44px असणे आवश्यक आहे.
5. कायदेशीर संमती आणि GDPR अनुपालन
पाहुण्यांचा डेटा (उदा. ईमेल, फोन नंबर किंवा सोशल प्रोफाइल्स) कॅप्चर करताना, HTML संरचनेने स्पष्ट कायदेशीर संमतीचे समर्थन केले पाहिजे. GDPR अंतर्गत, आधीच टिक केलेले चेकबॉक्स किंवा अप्रत्यक्ष संमती विधाने (उदा. "लॉग इन करून, तुम्ही आमच्या अटींशी सहमत आहात") अनुपालन करत नाहीत [3].
- नियम आणि अटी आणि गोपनीयता धोरणांसाठी बाय-डिफॉल्ट अनचेक असलेला चेकबॉक्स प्रदान करा.
- मुख्य लॉगिन फॉर्म फोल्डच्या वर ठेवण्यासाठी स्क्रोल करण्यायोग्य, मर्यादित उंचीच्या कंटेनरमध्ये (
max-height: 120px; overflow-y: auto;) तपशीलवार कायदेशीर मजकूर समाविष्ट करा.
<div class="consent-container">
<input type="checkbox" id="terms_consent" name="terms_consent" required>
<label for="terms_consent">
मी स्पष्टपणे <a href="#" onclick="showTerms()">सेवा अटींशी</a> सहमत आहे आणि <a href="#" onclick="showPrivacy()">गोपनीयता धोरणानुसार</a> माझ्या डेटाच्या प्रक्रियेसाठी संमती देतो.
</label>
</div>
सानुकूल Captive Portal HTML/CSS टेम्पलेट
खाली एक पूर्ण, उत्पादनासाठी तयार, सिंगल-फाइल HTML/CSS टेम्पलेट आहे ज्यामध्ये सर्व मोबाईल-फर्स्ट, CNA-अनुपालक सर्वोत्तम पद्धती समाविष्ट आहेत. यामध्ये रिस्पॉन्सिव्ह लेआउट, सिस्टम फॉन्ट स्टॅक, Base64-रेडी ॲसेट प्लेसहोल्डर्स, स्पर्श-अनुकूल इनपुट्स आणि स्पष्ट GDPR-अनुपालक संमती रचना समाविष्ट आहेत:
<!DOCTYPE html>
<html lang="mr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Guest WiFi Login</title>
<style>
/* CSS Reset & Variable Declarations */
:root {
--color-primary: #7458FD; /* Purple Brand Colour */
--color-dark: #011638; /* Dark Blue */
--color-light: #F5F1ED; /* Pearl White */
--color-white: #FFFFFF;
--color-border: #D1D5DB;
--radius-container: 12px;
--radius-element: 6px;
}
* {
box-sizing: border-box;
-webkit-tap-highlight-color: transparent;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
background-color: var(--color-light);
color: var(--color-dark);
margin: 0;
padding: 20px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: 100vh;
}
/* Responsive Card Layout */
.portal-card {
background-color: var(--color-white);
width: 100%;
max-width: 420px;
padding: 32px 24px;
border-radius: var(--radius-container);
box-shadow: 0 4px 20px rgba(1, 22, 56, 0.05);
text-align: center;
}
.logo-container {
margin-bottom: 24px;
}
/* Embedded Base64 Logo Placeholder */
.logo {
width: 120px;
height: auto;
}
h1 {
font-size: 24px;
font-weight: 700;
margin: 0 0 8px 0;
color: var(--color-dark);
}
p {
font-size: 14px;
color: #4B5563;
margin: 0 0 24px 0;
line-height: 1.5;
}
/* Form Styles */
.form-group {
text-align: left;
margin-bottom: 16px;
}
label {
display: block;
font-size: 14px;
font-weight: 600;
margin-bottom: 6px;
color: var(--color-dark);
}
/* Critical: font-size must be at least 16px to prevent iOS auto-zoom */
input[type="email"],
input[type="text"] {
width: 100%;
height: 48px;
padding: 12px 16px;
font-size: 16px;
border: 1px solid var(--color-border);
border-radius: var(--radius-element);
background-color: var(--color-white);
color: var(--color-dark);
outline: none;
transition: border-color 0.2s;
}
input[type="email"]:focus,
input[type="text"]:focus {
border-color: var(--color-primary);
box-shadow: 0 0 0 3px rgba(116, 88, 253, 0.15);
}
/* Consent Styles */
.consent-group {
display: flex;
align-items: flex-start;
text-align: left;
margin: 20px 0;
}
/* Touch-friendly target sizing */
input[type="checkbox"] {
width: 20px;
height: 20px;
margin: 2px 12px 0 0;
flex-shrink: 0;
cursor: pointer;
accent-color: var(--color-primary);
}
.consent-label {
font-size: 13px;
line-height: 1.4;
color: #4B5563;
user-select: none;
}
.consent-label a {
color: var(--color-primary);
text-decoration: none;
font-weight: 600;
}
.consent-label a:hover {
text-decoration: underline;
}
/* Touch-Friendly CTA Button (Minimum 44px height) */
.btn-submit {
width: 100%;
height: 48px;
background-color: var(--color-primary);
color: var(--color-white);
border: none;
border-radius: var(--radius-element);
font-size: 16px;
font-weight: 600;
cursor: pointer;
transition: background-color 0.2s;
display: flex;
align-items: center;
justify-content: center;
}
.btn-submit:hover {
background-color: #5B3EE3;
}
.btn-submit:active {
background-color: #4A2FD4;
}
/* Legal Terms Scrollbox */
.terms-scrollbox {
display: none; /* Toggled via JS */
text-align: left;
font-size: 11px;
color: #6B7280;
background-color: var(--color-light);
padding: 12px;
border-radius: var(--radius-element);
max-height: 100px;
overflow-y: auto;
margin-bottom: 16px;
border: 1px solid var(--color-border);
}
.footer {
margin-top: 24px;
font-size: 11px;
color: #9CA3AF;
}
</style>
</head>
<body>
<div class="portal-card">
<div class="logo-container">
<!-- Replace src with your actual Base64-encoded SVG or PNG -->
<svg class="logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 30">
<rect width="100" height="30" rx="6" fill="#7458FD"/>
<text x="50" y="20" font-family="sans-serif" font-size="12" fill="#FFFFFF" font-weight="bold" text-anchor="middle">YOUR BRAND</text>
</svg>
</div>
<h1>Guest WiFi मध्ये आपले स्वागत आहे</h1>
<p>सुरक्षित, हाय-स्पीड इंटरनेट ॲक्सेस मिळवण्यासाठी कृपया तुमचे तपशील खाली प्रविष्ट करा.</p>
<!-- Form must submit natively (full page navigation) to clear Apple CNA -->
<form action="/login/submit" method="POST" onsubmit="return validateForm()">
<div class="form-group">
<label for="guest_name">पूर्ण नाव</label>
<input type="text" id="guest_name" name="name" placeholder="John Doe" required autocomplete="name">
</div>
<div class="form-group">
<label for="guest_email">ईमेल पत्ता</label>
<input type="email" id="guest_email" name="email" placeholder="john@example.com" required autocomplete="email">
</div>
<div class="consent-group">
<input type="checkbox" id="terms_consent" name="terms_accepted" required>
<label for="terms_consent" class="consent-label">
मी <a href="#" onclick="toggleTerms(event)">सेवाशर्ती</a> स्वीकारतो आणि GDPR नियमांच्या अनुपालनामध्ये डेटा प्रक्रियेसाठी संमती देतो.
</label>
</div>
<div id="terms_box" class="terms-scrollbox">
<strong>WiFi सेवाशर्ती:</strong><br>
१. ही सेवा कोणत्याही हमीशिवाय जशी आहे तशी दिली जाते.<br>
२. वापरकर्त्यांनी बेकायदेशीर बँडविड्थ-गहन क्रियाकलापांमध्ये गुंतू नये.<br>
३. वैयक्तिक डेटा केवळ आमच्या गोपनीयता धोरणाचे अनुपालन करून प्रमाणीकरण आणि विपणन ऑप्ट-इनसाठी गोळा केला जातो.
</div>
<button type="submit" class="btn-submit">WiFi शी कनेक्ट करा</button>
</form>
<div class="footer">
Purple द्वारे समर्थित | सुरक्षित अतिथी WiFi
</div>
</div>
<script>
function toggleTerms(e) {
e.preventDefault();
var box = document.getElementById('terms_box');
box.style.display = (box.style.display === 'block') ? 'none' : 'block';
}
function validateForm() {
var consent = document.getElementById('terms_consent');
if (!consent.checked) {
alert('कनेक्ट करण्यासाठी तुम्ही सेवाशर्ती स्वीकारणे आवश्यक आहे.');
return false;
}
return true;
}
</script>
</body>
</html>
समस्यानिवारण आणि जोखीम कमी करणे
कस्टम-कोडेड HTML/CSS Captive Portals तैनात करताना, IT ऑपरेशन्स टीमना वारंवार अनेक गंभीर ऑपरेशनल जोखमींचा सामना करावा लागतो:
१. SSL/TLS प्रमाणपत्र चेतावणी लूप
कारण Captive Portals ट्रॅफिक अडवून काम करतात, ते आधुनिक HTTPS वेब सुरक्षिततेशी मूलभूत संघर्ष दर्शवतात. जेव्हा एखादा वापरकर्ता HTTPS साइटला भेट देण्याचा प्रयत्न करतो (उदा. https://www.google.com), आणि गेटवे त्या ट्रॅफिकला HTTP Captive Portal वर रिडायरेक्ट करण्याचा प्रयत्न करतो, तेव्हा ब्राउझर SSL प्रमाणपत्रातील विसंगती शोधतो आणि एक गंभीर "तुमचे कनेक्शन खाजगी नाही" अशी सुरक्षा चेतावणी दाखवतो.
- जोखीम कमी करणे: थेट HTTPS ट्रॅफिक अडवण्याचा कधीही प्रयत्न करू नका. पूर्णपणे ऑपरेटिंग सिस्टमच्या नेटिव्ह CNA हेल्परवर अवलंबून रहा (जे रिडायरेक्ट ट्रिगर करण्यासाठी एन्क्रिप्ट न केलेली HTTP विनंती करते). तुमच्या Captive Portal च्या डोमेनकडे वैध, सार्वजनिकरित्या विश्वसनीय SSL प्रमाणपत्र (उदा. Let's Encrypt किंवा DigiCert) असल्याचे सुनिश्चित करा आणि केवळ प्रारंभिक HTTP रिडायरेक्टने वापरकर्त्याला तुमच्या पोर्टल डोमेनवर यशस्वीरित्या पाठवल्यानंतरच ते HTTPS द्वारे दिले जाईल याची खात्री करा [२].
२. DNS रिझोल्यूशन अपयश (The Walled Garden Trap)
तुमच्या कस्टम HTML पेजवर बाह्य संसाधनांचा संदर्भ असल्यास - जसे की सोशल लॉगिन OAuth एंडपॉइंट (उदा. Facebook, Google) किंवा पेमेंट गेटवे - तर या डोमेन्ससाठी DNS विनंत्या यशस्वी होणार नाहीत जोपर्यंत त्यांना वायरलेस कंट्रोलरच्या Walled Garden मध्ये स्पष्टपणे व्हाईटलिस्ट केले जात नाही. जर एखादा डोमेन व्हाईटलिस्टमध्ये नसेल, तर लॉगिन प्रक्रिया थांबेल आणि एक रिकामी स्क्रीन दिसेल.
- निवारण: एक कठोर आणि मर्यादित Walled Garden सूची ठेवा. सोशल लॉगिन वापरत असल्यास, आयडेंटिटी प्रोव्हायडर्सनी शिफारस केलेले विशिष्ट वाईल्डकार्ड डोमेन्स व्हाईटलिस्ट करा (उदा.
*.google.com,*.gstatic.com).
3. सेशन टाईमआउट आणि MAC स्पूफिंग असुरक्षितता
प्रमाणित captive portals उपकरणांना त्यांच्या MAC ॲड्रेसच्या आधारे प्रमाणित करतात. तथापि, आधुनिक मोबाईल ऑपरेटिंग सिस्टीम (iOS 14+ आणि Android 10+) डीफॉल्टनुसार यादृच्छिक MAC ॲड्रेस (खाजगी WiFi ॲड्रेस) वापरतात आणि ते वेळोवेळी बदलतात. यामुळे पाहुण्यांना वारंवार पुन्हा-प्रमाणित करण्यास सांगितले जाऊ शकते, ज्यामुळे वापरकर्त्याचा अनुभव खराब होतो [1].
- निवारण: शिळे सेशन्स रोखण्यासाठी RADIUS सर्व्हरवर योग्य सेशन टाईमआउट (उदा. 24 तास) लागू करा आणि MAC-आधारित captive portals ला पूर्णपणे बायपास करणाऱ्या अखंड, सुरक्षित ऑनबोर्डिंगसाठी Passpoint (Hotspot 2.0) किंवा WPA3-Enterprise सारख्या आधुनिक प्रमाणीकरण मानकांचा वापर करा.
Purple उत्पादनाची प्रासंगिकता: स्वतः तयार करणे वि. खरेदी करणे
एकच HTML पेज कोड करणे सोपे असले तरी, कस्टम captive portal इन्फ्रास्ट्रक्चरचे होस्टिंग, सुरक्षितता आणि स्केलिंग करणे प्रचंड तांत्रिक आणि अनुपालन आव्हाने उभी करते. खालील तक्ता स्वतः होस्ट केलेल्या कस्टम पोर्टलच्या आणि Purple च्या व्यवस्थापित एंटरप्राइझ प्लॅटफॉर्मच्या इंजिनिअरिंग आणि ऑपरेशनल वास्तवाची तुलना करतो:
| वैशिष्ट्य / ऑपरेशनल आवश्यकता | स्वतः होस्ट केलेले कस्टम पोर्टल | Purple एंटरप्राइझ WiFi प्लॅटफॉर्म |
|---|---|---|
| HTML/CSS सानुकूलन | पूर्णपणे मॅन्युअल कोडिंग, वैयक्तिक AP किंवा स्थानिक वेब सर्व्हरवर फायली अपलोड करणे. | कस्टम HTML/CSS इंजेक्शनची अनुमती देणारे पिक्सेल-परफेक्ट डेव्हलपर एडिटर, सोबत ड्रॅग-अँड-ड्रॉप व्हिज्युअल बिल्डर. |
| RADIUS इन्फ्रास्ट्रक्चर | अत्यंत उपलब्ध असणारे FreeRADIUS किंवा क्लाउड RADIUS सर्व्हर तैनात, कॉन्फिगर आणि देखरेख करावे लागतात [4]. | अंगभूत, जागतिक स्तरावर वितरित, क्लाउड-नेटिव्ह RADIUS जे ऍक्टिव्ह-ऍक्टिव्ह रिडंडन्सी आणि 99.99% अपटाईम SLA सह येते. |
| मल्टी-व्हेंडर AP सपोर्ट | प्रत्येक हार्डवेअर व्हेंडरसाठी (Cisco, Aruba, Meraki, Ruckus) कस्टम इंटिग्रेशन स्क्रिप्ट्स आवश्यक असतात [5]. | 200 पेक्षा जास्त हार्डवेअर मॉडेल्ससह नेटिव्ह, आउट-ऑफ-द-बॉक्स इंटिग्रेशन; मिश्र-हार्डवेअरच्या मालमत्तेवर युनिफाइड पोर्टल तैनात करणे. |
| डेटा गोपनीयता आणि अनुपालन | ठिकाण सुरक्षित डेटाबेस एन्क्रिप्शन आणि डेटा हटवण्याच्या वर्कफ्लोसह GDPR, CCPA, आणि PCI-DSS अनुपालनासाठी 100% कायदेशीर जबाबदारी स्वीकारते. | डिझाइननुसार पूर्णपणे अनुपालन. अंगभूत संमती व्यवस्थापन, स्वयंचलित डेटा-विषय हटवण्याच्या विनंत्या आणि सुरक्षित ISO 27001-प्रमाणित होस्टिंग. |
| Identity Provider Integrations | Google, Facebook, Apple आणि स्थानिक SMS गेटवेसह मॅन्युअल OAuth2 इंटिग्रेशन. | प्रमुख सोशल प्लॅटफॉर्म्स, SMS गेटवे आणि कॉर्पोरेट पाहुण्यांसाठी Azure AD / Okta सह वन-क्लिक इंटिग्रेशन्स. |
Purple चे प्लॅटफॉर्म "Build vs. Buy" च्या संभ्रमाचे निराकरण करते. हे डेव्हलपर्सना कस्टम HTML/CSS वर्कस्पेसचे संपूर्ण सर्जनशील स्वातंत्र्य देते आणि त्याच वेळी मोठ्या प्रमाणावर सुरक्षित RADIUS ऑथेंटिकेशनला सपोर्ट करण्यासाठी आवश्यक असलेले क्लिष्ट, उच्च-जोखमीचे बॅकएंड इन्फ्रास्ट्रक्चर इंजिनियरिंग काढून टाकते.
ROI आणि व्यावसायिक प्रभाव
व्यावसायिकरित्या इंजिनियर केलेल्या, रिस्पॉन्सिव्ह कस्टम captive portal मध्ये गुंतवणूक केल्याने आयटी ऑपरेशन्स, मार्केटिंग आणि कायदेशीर अनुपालनामध्ये मोजता येण्याजोगा परतावा मिळतो.
१. ऑपरेशनल खर्च कपात (आयटी हेल्पडेस्क तिकिटे)
स्टेडियम किंवा मल्टी-साइट रिटेल चेन यांसारख्या मोठ्या प्रमाणावरील उपयोजनांमध्ये, बिघडलेले captive portal हे आयटी हेल्पडेस्कच्या वाढत्या तक्रारींचे मुख्य कारण असते. जेव्हा पाहुण्यांना "व्हाईट स्क्रीन" किंवा प्रतिसाद न देणारे लॉगिन बटण आढळते, तेव्हा ते ऑन-साइट स्टाफवर भार टाकतात किंवा सपोर्ट तिकिटे सबमिट करतात.
$$\text{वार्षिक सपोर्ट बचत} = (\text{एकूण वार्षिक पाहुण्यांच्या भेटी} \times \text{पोर्टल बिघाड दर} \times \text{हेल्पडेस्क संपर्क दर}) \times \text{प्रति सपोर्ट तिकीट खर्च}$$
- प्रसंग: वार्षिक १,००,००० अभ्यागत असणारे एक कन्व्हेन्शन सेंटर. खराब कोड केलेल्या पोर्टलचा जुन्या iOS डिव्हाइसेसवर ५% बिघाड दर आहे, ज्यामुळे १०% हेल्पडेस्क संपर्क दर होतो. प्रति सपोर्ट तिकीट $१५ या उद्योग-मानक दराने, ऑपरेशनल खर्च पुढीलप्रमाणे आहे: $$(१,००,००० \times ०.०५ \times ०.१०) \times $१५ = \text{टाळता येण्याजोग्या सपोर्ट ओव्हरहेडमध्ये वार्षिक } $७५,०००$$
- परिणाम: CNA-ऑप्टिमाइझ्ड, मोबाईल-फर्स्ट टेम्पलेटवर स्थलांतर केल्याने पोर्टल बिघाड दर <०.१% पर्यंत कमी होतो, ज्यामुळे हा ऑपरेशनल खर्च अक्षरशः संपुष्टात येतो.
२. मार्केटिंग डेटा कॅप्चर आणि ऑप्ट-इन ऑप्टिमायझेशन
रिटेल आणि हॉस्पिटॅलिटी ठिकाणांसाठी, गेस्ट WiFi पोर्टल हे शुद्ध, फर्स्ट-पार्टी ग्राहक डेटा कॅप्चर करण्याचे प्राथमिक साधन आहे. सूक्ष्म मजकूर किंवा क्लिष्ट फॉर्म लेआउट असलेला खराब डिझाइन केलेला युझर इंटरफेस उच्च बाउन्स रेट्सचे कारण बनतो - युझर्स लॉगिन प्रक्रिया पूर्णपणे सोडून देतात, ज्यामुळे मार्केटिंगच्या संधी गमावल्या जातात.
- केस स्टडी (रिटेल): एका राष्ट्रीय रिटेल चेनने Purple च्या प्लॅटफॉर्मचा वापर करून मोबाईल-फर्स्ट ऑप्टिमाइझ्ड captive portal लागू केले. मल्टी-स्टेप लॉगिन फॉर्मऐवजी सिंगल-फिल्ड ईमेल इनपुट (फॉन्ट-साईझ: १६px) आणि ऑप्टिमाइझ केलेले ४८px टॅप-टार्गेट बटण वापरून, त्यांनी पहिल्या तिमाहीत पूर्ण झालेल्या नोंदणींमध्ये ४२% वाढ आणि मार्केटिंग न्यूजलेटर ऑप्ट-इन्समध्ये २८% वाढ पाहिली [6].
३. कायदेशीर आणि नियामक जोखीम कमी करणे
GDPR आणि CCPA अंतर्गत, नियमांचे पालन न करता डेटा गोळा केल्यास गंभीर आर्थिक दंड (GDPR अंतर्गत जागतिक वार्षिक उलाढालीच्या ४% पर्यंत) होऊ शकतो. आधीच टिक केलेल्या चेकबॉक्सवर अवलंबून राहणे किंवा तुमच्या स्प्लॅश पेजवर स्पष्ट, सहज उपलब्ध पॉलिसी न देणे यामुळे एंटरप्राइझवर प्रचंड कायदेशीर दायित्व येऊ शकते.
- शमन ROI (Mitigation ROI): स्पष्ट, आधीच टिक न केलेला संमती चेकबॉक्स लागू करणे आणि ऑप्टिमाइझ केलेल्या स्क्रोलबॉक्समध्ये अटी होस्ट करणे १००% नियामक अनुपालन सुनिश्चित करते, ज्यामुळे लाखो डॉलर्सच्या नियामक दंडाचा धोका कमी होतो आणि ब्रँडच्या प्रतिष्ठेचे संरक्षण होते.
मुख्य मुद्द्यांचा सारांश
- CNA सँडबॉक्स मर्यादित आहे: Apple चा iOS वेबशीट आणि macOS CNA हे अत्यंत सुरक्षित सँडबॉक्स केलेले वातावरण आहेत जे बाह्य मालमत्ता, कुकीज आणि वेब फॉन्ट ब्लॉक करतात. सर्व स्टाइलिंग आणि मालमत्ता स्वतःमध्ये समाविष्ट असणे आवश्यक आहे (इनलाइन CSS, Base64 प्रतिमा, सिस्टम फॉन्ट) [1].
- AJAX मुळे iOS एक्झिट हँडशेक खंडित होते: iOS डिव्हाइस यशस्वीरित्या "कॅप्टिव्ह" मधून "कनेक्टेड" वर हस्तांतरित करण्यासाठी (वरच्या उजव्या बाजूचे बटण "Cancel" वरून "Done" वर बदलणे), तुम्हाला फुल-पेज HTTP रीडायरेक्ट ट्रिगर करणे आवश्यक आहे. असिंक्रोनस DOM अपडेट्स डिव्हाइसला कॅप्टिव्ह लूपमध्येच ठेवतील.
- मोबाईल-फर्स्ट असणे अनिवार्य आहे: ९०% पेक्षा जास्त लॉगिन मोबाईलवर होतात. सिंगल-कॉलम लेआउट डिझाइन करा (कमाल रुंदी: 480px), टच-फ्रेंडली टॅप टार्गेट्स वापरा (किमान 44px x 44px), आणि ऑटोमॅटिक iOS ब्राउझर झूम होण्यापासून रोखण्यासाठी सर्व टेक्स्ट इनपुटवर किमान 16px फॉन्ट आकार लागू करा.
- वॉल गार्डन (Walled Gardens) DNS नियंत्रित करतात: लॉगिन दरम्यान संदर्भ दिलेला कोणताही बाह्य डोमेन (उदा. सोशल लॉगिन API) वायरलेस कंट्रोलरच्या वॉल गार्डनमध्ये स्पष्टपणे व्हाईटलिस्ट केलेला असणे आवश्यक आहे, अन्यथा पेज लोड होणार नाही.
- Purple बॅकएंड गुंतागुंत दूर करते: Purple चे पोर्टल बिल्डर वापरल्याने डेव्हलपर्सना कस्टम एडिटरद्वारे पूर्ण HTML/CSS नियंत्रण मिळते, तर RADIUS, मल्टि-व्हेंडर AP इंटिग्रेशन्स आणि GDPR-सुसंगत डेटाबेस मॅनेजमेंटचे प्रचंड सुरक्षा, स्केलिंग आणि अनुपालनाचे ओझे कमी होते [3].
संदर्भ
- [1] Wireless Broadband Alliance: Captive Network Portal Behaviour
- [2] Android Open Source Project: Captive Portal Login Webview Integration
- [3] European Data Protection Board: Guidelines on Consent under Regulation 2016/679
- [4] How to Implement 802.1X Authentication with Cloud RADIUS
- [5] Cisco Wireless APs: 2026 Guide to Products & Deployment
- [6] Purple WiFi Marketing & Analytics Platform
तांत्रिक ब्रीफिंग ऐका
कस्टम कॅप्टिव्ह पोर्टलसाठी तांत्रिक मर्यादा आणि अंमलबजावणी धोरणांबद्दल वरिष्ठ सोल्यूशन्स आर्किटेक्टची चर्चा ऐका:
महत्वाच्या व्याख्या
Captive Portal
एक वेब पेज जे WiFi नेटवर्कच्या नवीन कनेक्ट केलेल्या वापरकर्त्यांना नेटवर्क संसाधनांमध्ये व्यापक प्रवेश मिळण्यापूर्वी प्रदर्शित केले जाते, जे सामान्यतः प्रमाणीकरण, पेमेंट किंवा सेवा अटी प्रदर्शित करण्यासाठी वापरले जाते.
IT टीम अतिथी प्रवेशावर नियंत्रण ठेवण्यासाठी, वापरकर्त्याचा डेटा कॅप्चर करण्यासाठी आणि कायदेशीर अनुपालन लागू करण्यासाठी गेटवे पातळीवर captive portals तैनात करतात.
Captive Network Assistant (CNA)
प्रणालीद्वारे (जसे की Apple iOS आणि macOS) कॅप्टिव्ह नेटवर्क रीडायरेक्ट शोधल्यानंतर स्वयंचलितपणे सुरू होणारा एक अत्यंत मर्यादित, सँडबॉक्स केलेला मिनी-ब्राउझर, जो केवळ पोर्टल प्रमाणीकरण सुलभ करण्यासाठी डिझाइन केला गेला आहे.
CNA वेबव्ह्यू बाह्य CDNs, दीर्घकाळ टिकणारे कुकीज आणि स्थानिक स्टोरेज ब्लॉक करण्यासह कठोर मर्यादा लागू करतात, ज्यामुळे सामान्यतः मानक वेब डिझाइन बिघडतात.
Walled Garden
IP पत्ते, सबनेट किंवा डोमेन नावांची मर्यादित सूची ज्यांना एखाद्या अप्रमाणित अतिथी वापरकर्त्याला Captive Portal लॉगिन प्रक्रिया पूर्ण करण्यापूर्वी गेटवेद्वारे प्रवेश करण्याची परवानगी दिली जाते.
प्रमाणीकरण प्रक्रियेत अडथळा येऊ नये म्हणून विकसकांनी हे सुनिश्चित केले पाहिजे की कोणतीही बाह्य संसाधने (जसे की सोशल लॉगिन APIs किंवा पेमेंट गेटवे) walled garden मध्ये व्हाईटलिस्ट केलेली आहेत.
Base64 Encoding
एक बायनरी-टू-टेक्स्ट एन्कोडिंग योजना जी बायनरी डेटा (जसे की प्रतिमा) ASCII स्ट्रिंग म्हणून दर्शवते, ज्यामुळे मालमत्ता थेट HTML किंवा CSS दस्तऐवजांमध्ये एम्बेड केली जाऊ शकते.
लोगो आणि चिन्हांसाठी Base64 encoding चा वापर केल्याने बाह्य HTTP विनंत्या दूर होतात, ज्यामुळे ऑफलाइन CNA वातावरणात मालमत्ता उत्कृष्टपणे प्रदर्शित होते.
RADIUS (Remote Authentication Dial-In User Service)
एक नेटवर्किंग प्रोटोकॉल जो नेटवर्क सेवेशी कनेक्ट होणाऱ्या आणि वापरणाऱ्या वापरकर्त्यांसाठी केंद्रीकृत प्रमाणीकरण, अधिकृतता आणि लेखा (AAA) व्यवस्थापन प्रदान करतो.
प्रमाणीकरणाचे निकष पूर्ण झाल्यावर, नेटवर्क गेटवेवर अतिथीच्या MAC पत्त्याला अधिकृत करण्यासाठी Captive Portal सर्व्हर RADIUS सर्व्हरशी संप्रेषण करतो.
System Font Stack
एक CSS font-family डिक्लेरेशन जे बाहेरील वेब फॉन्ट ऐवजी आधीपासून इन्स्टॉल केलेल्या ऑपरेटिंग सिस्टीम फॉन्ट्सना (जसे की iOS वर San Francisco, Windows वर Segoe UI आणि Android वर Roboto) प्राधान्य देते.
system font stack लागू केल्याने Google Fonts सारख्या सेवांना बाह्य HTTP विनंत्या न पाठवता त्वरित टायपोग्राफी रेंडरिंग सुनिश्चित होते.
Canary URL
डिव्हाइसला कोणत्याही अडथळ्याशिवाय इंटरनेट कनेक्टिव्हिटी मिळाली आहे की नाही हे तपासण्यासाठी ऑपरेटिंग सिस्टीम विक्रेत्यांद्वारे (उदा. captive.apple.com) चालवली जाणारी एक समर्पित, अनइनक्रिप्टेड HTTP URL.
ऑपरेटिंग सिस्टीमचा बॅकग्राउंड नेटवर्क मॅनेजर Captive Portal चे अस्तित्व शोधण्यासाठी आणि CNA वेबव्ह्यू पॉपअप ट्रिगर करण्यासाठी या URL ची तपासणी करतो.
Passpoint (Hotspot 2.0)
Wi-Fi Alliance द्वारे विकसित केलेले एक इंडस्ट्री स्टँडर्ड जे मोबाईल डिव्हाइसेसना मॅन्युअल Captive Portal लॉगिनशिवाय स्वयंचलितपणे WiFi हॉटस्पॉट्स शोधण्यास आणि सुरक्षितपणे ऑथेंटिकेट करण्यास सक्षम करते.
अडथळ्यांनी भरलेल्या स्प्लॅश पेजेसऐवजी पाहुण्यांना अखंड, सेल्युलरसारखा सुरक्षित रोमिंग अनुभव देण्यासाठी कॉर्पोरेट्स Purple सारख्या प्लॅटफॉर्मसह Passpoint चा वापर करतात.
सोडवलेली उदाहरणे
एक लक्झरी २५० खोल्यांची हॉटेल साखळी [Hospitality](/industries/hospitality) त्यांच्या प्रीमियम ब्रँड मार्गदर्शक तत्त्वांशी तंतोतंत जुळणारे कस्टम अतिथी WiFi लॉगिन पेज लागू करू इच्छिते. त्यांच्या क्रिएटिव्ह एजन्सीने कस्टम ब्रँड टायपोग्राफी (Adobe Fonts वर होस्ट केलेले), एकापेक्षा जास्त हाय-रिझोल्यूशन बॅकग्राउंड इमेजेस (सार्वजनिक AWS S3 बकेटवर होस्ट केलेले) आणि एक मल्टी-स्टेप ॲनिमेटेड JavaScript विझार्ड वापरून स्प्लॅश पेज डिझाइन केले. जेव्हा हे तैनात केले जाते, तेव्हा iOS अतिथी SSID शी कनेक्ट होतात, परंतु पोर्टल पूर्णपणे रिकामी पांढरी स्क्रीन म्हणून पॉप अप होते आणि वापरकर्ते प्रमाणीकरण करू शकत नाहीत.
रिकामी स्क्रीन आणि बिघडलेले ब्रँडिंग दुरुस्त करण्यासाठी, आपण Apple CNA सँडबॉक्स मर्यादांचे पालन करण्यासाठी पोर्टलच्या फ्रंटएंड आर्किटेक्चरची पुनर्रचना केली पाहिजे:
१. टायपोग्राफी दुरुस्ती: Adobe Fonts ला बाह्य HTTP विनंती आवश्यक असल्याने जी CNA द्वारे ब्लॉक केली जाते, आम्ही कस्टम फॉन्ट कॉलऐवजी मूळ, प्रीमियम सिस्टम फॉन्ट स्टॅक वापरतो (font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;). हे बाह्य नेटवर्क कॉल्सशिवाय त्वरित रेंडरिंगची खात्री देते.
२. मालमत्ता ऑप्टिमायझेशन: AWS S3 वरील बॅकग्राउंड इमेजेस ब्लॉक केल्या जातात कारण S3 गेटवेच्या वॉल्ड गार्डनमध्ये नाही. आम्ही मुख्य ब्रँड लोगो कॉम्प्रेस करतो, त्याचे लाइटवेट SVG मध्ये रूपांतर करतो आणि थेट HTML मध्ये Base64 Data URI म्हणून एन्कोड करतो. बॅकग्राउंडसाठी, आम्ही हॉटेलच्या ब्रँड रंगांचा वापर करून हेवी इमेजेसच्या जागी स्वच्छ, रिस्पॉन्सिव्ह CSS ग्रेडियंट वापरतो, ज्यामुळे पेजचे वजन लक्षणीयरीत्या कमी होते.
३. JavaScript सरळीकरण: मल्टी-स्टेप ॲनिमेटेड विझार्ड बाह्य jQuery आणि GSAP लायब्ररीवर अवलंबून असतो. आम्ही या बाह्य डिपेंडन्सीज काढून टाकतो आणि फॉर्मची सिंगल-पेज, सिंगल-कॉलम HTML स्ट्रक्चरमध्ये पुनर्रचना करतो. फॉर्म व्हॅलिडेशन हलक्या, व्हॅनिला JavaScript मध्ये पुन्हा लिहिले गेले आहे.
४. प्रमाणीकरण हँडशेक: संपूर्ण पेज रिडायरेक्ट ट्रिगर करण्यासाठी फॉर्म सबमिशन AJAX-आधारित सबमिशनवरून मूळ HTML <form action="/submit" method="POST"> वर सुधारित केले आहे, ज्यामुळे iOS वेबशीटला तिची कॅनरी चाचणी कार्यान्वित करण्याची आणि 'Done' बटण प्रदर्शित करण्याची परवानगी मिळते.
४५० स्टोअर्स असलेली एक राष्ट्रीय रिटेल साखळी [Retail](/industries/retail) त्यांच्या CRM ला चालना देण्यासाठी WiFi स्प्लॅश पेजेसद्वारे अतिथींचे ईमेल कॅप्चर करू इच्छिते. त्यांना अतिथींनी मार्केटिंग न्यूजलेटर्ससाठी ऑप्ट-इन करणे आवश्यक आहे. सुरुवातीच्या डिझाइनमध्ये प्री-चेक केलेला 'I agree to receive marketing emails' चेकबॉक्स आहे. शिवाय, हे पोर्टल त्यांच्या मुख्यालयातील एकाच स्थानिक सर्व्हरवर होस्ट केलेले आहे. गर्दीच्या वेळेत (शनिवार दुपारी), देशभरातील अतिथींना प्रचंड विलंबाचा सामना करावा लागतो आणि बरेच जण लॉगिन पेज लोड करू शकत नाहीत, ज्यामुळे डेटा कॅप्चर दरांमध्ये मोठी घसरण होते.
आपल्याला अनुपालन उल्लंघन आणि इन्फ्रास्ट्रक्चर अडथळा या दोन्ही गोष्टींचे निराकरण करणे आवश्यक आहे:
- अनुपालन उपाय योजना: GDPR आणि CCPA अंतर्गत, आधीच टिक केलेले संमती बॉक्स बेकायदेशीर आहेत. आम्ही विपणन संमती चेकबॉक्स बाय डीफॉल्ट अनचेक करण्यासाठी HTML मध्ये बदल करतो (
<input type="checkbox" id="marketing_consent">). कायदेशीर करार आणि विपणन संमती स्वतंत्र करण्यासाठी आम्ही सेवा अटींसाठी एक स्वतंत्र, अनिवार्य चेकबॉक्स देखील जोडतो. - इन्फ्रास्ट्रक्चर स्केलिंग: एकाच केंद्रीकृत सर्व्हरवर राष्ट्रीय पातळीवरील Captive Portal होस्ट केल्याने बिघाडाचा धोका आणि प्रचंड लेटन्सीचा अडथळा निर्माण होतो. आम्ही पोर्टल फ्रंटएंडला एज-कॅशिंगसह उच्च उपलब्धता असलेल्या, जागतिक स्तरावर वितरित केलेल्या कंटेंट डिलिव्हरी नेटवर्क (CDN) वर स्थलांतरित करतो.
- RADIUS एकत्रीकरण: आम्ही स्थानिक स्टोअर ॲक्सेस पॉइंट्सना ॲक्टिव्ह-ॲक्टिव्ह रिडंडन्सीसह क्लाउड-नेटिव्ह RADIUS क्लस्टरकडे निर्देशित करण्यासाठी कॉन्फिगर करतो, ज्यामुळे शनिवारच्या गर्दीच्या वेळी देखील ५०ms पेक्षा कमी लेटन्सीसह प्रमाणीकरण विनंत्यांवर स्थानिक पातळीवर प्रक्रिया केली जाईल याची खात्री होते.
- Purple स्थलांतर: हे सर्व इंजिनिअरिंग ओव्हरहेड दूर करण्यासाठी, किरकोळ विक्रेता Purple वर स्थलांतरित होतो. Purple चे अंगभूत GDPR संमती टूलिंग अनुपालन संमती स्वयंचलितपणे व्यवस्थापित करते आणि त्यांचे जागतिक स्तरावर वितरित क्लाउड इन्फ्रास्ट्रक्चर ९९.९९% अपटाइमसह कोट्यवधी दैनिक प्रमाणीकरणे हाताळते, ज्यामुळे स्केलिंगचा अडथळा पूर्णपणे दूर होतो.
सराव प्रश्न
Q1. एका मोठ्या आंतरराष्ट्रीय विमानतळावरील [Transport](/industries/transport) IT टीम कस्टम-कोडेड Captive Portal तैनात करते. त्यांच्या असे लक्षात येते की, Android युजर्स अखंडपणे कनेक्ट होत असताना, बहुतांश iOS युजर्सना यशस्वीरित्या ऑथेंटिकेट होऊनही वेब ब्राउझ करता येत नाही. जवळून पाहिल्यावर, iOS डिव्हाइसेस SSID ला कनेक्ट असल्याचे दिसते, परंतु कॅप्टिव्ह पॉपअपवरील वरच्या उजव्या बाजूचे बटण अजूनही 'Done' ऐवजी 'Cancel' असे दर्शवते. या समस्येचे मूळ कारण काय आहे आणि डेव्हलपरने ती कशी दुरुस्त करावी?
टीप: ऍपलचे CNA हेल्पर एखादे नेटवर्क captive मधून authenticated मध्ये कधी बदलले आहे हे कसे ओळखते आणि ही तपासणी ट्रिगर करण्यासाठी कोणत्या ब्राउझर ॲक्शनची आवश्यकता असते याचे विश्लेषण करा.
नमुना उत्तर पहा
याचे मूळ कारण असे आहे की पोर्टलचे सक्सेस पेज फुल-पेज HTTP नॅव्हिगेशन करण्याऐवजी JavaScript (AJAX/SPA राउटींग) द्वारे डायनॅमिकली UI अपडेट करत आहे. Apple iOS चे Captive Network Assistant (CNA) मिनी-ब्राउझर केवळ तेव्हाच त्याची बॅकग्राउंड कनेक्टिव्हिटी तपासणी (उदा. captive.apple.com वरील कॅनरी रिक्वेस्ट) पुन्हा चालवते जेव्हा फुल-पेज URL रीडायरेक्ट किंवा नॅव्हिगेशन होते. जर डेव्हलपरने लॉगिन फॉर्म AJAX द्वारे सबमिट केला आणि DOM मध्ये फक्त 'Success' मेसेज दाखवला, तर नेटवर्क अनलॉक झाले आहे याची CNA ला कल्पना येत नाही. परिणामी, वरचे उजवे बटण 'Cancel' असेच राहते. जर युजरने बाहेर पडण्यासाठी 'Cancel' वर क्लिक केले, तर ऑपरेटिंग सिस्टीम लॉगिन अयशस्वी झाले असे गृहीत धरून WiFi नेटवर्कवरून डिस्कनेक्ट होते.
उपाय: डेव्हलपरने ऑथेंटिकेशन सक्सेस हँडलरमध्ये बदल करून फुल-पेज रीडायरेक्ट सक्तीने करणे आवश्यक आहे. हे लॉगिन फॉर्म मूळ स्वरूपात स्टँडर्ड HTML <form action="/submit" method="POST"> द्वारे सबमिट करून किंवा API कडून यशस्वी ऑथेंटिकेशन रिस्पॉन्स मिळाल्यावर JavaScript मध्ये window.location.href = '/success_landing_page' चालवून साध्य केले जाऊ शकते. यामुळे आवश्यक लोड ट्रिगर होतो, ज्यामुळे CNA हेल्पर नेटवर्क स्टेटचे पुन्हा मूल्यांकन करतो, कॅनरी URL आता पोहोचण्यायोग्य असल्याची पडताळणी करतो आणि वरचे उजवे बटण बदलून 'Done' करतो.
Q2. स्टेडियमची एक ऑपरेशन्स टीम [Events] पाहुण्यांसाठी असे WiFi नेटवर्क सुरू करू इच्छिते जे मार्केटिंग ऑप्ट-इन्स कॅप्चर करेल. कम्प्लायन्स ऑफिसरचा आग्रह आहे की हे पोर्टल १००% GDPR-सुसंगत असावे. डेव्हलपमेंट टीम एक नमुना (mockup) सादर करते जिथे लॉगिन फॉर्ममध्ये आधीपासूनच टिक केलेला एक बॉक्स आहे ज्यावर लिहिले आहे, 'मी सेवा अटींशी सहमत आहे आणि मार्केटिंग न्यूजलेटर्स प्राप्त करण्यास संमती देतो'. ही डिझाइन नियमांचे उल्लंघन करणारी का आहे आणि उच्च कन्व्हर्जन रेट राखत असतानाच GDPR चे पालन करण्यासाठी HTML/CSS आणि फॉर्म रचनेत कसा बदल केला पाहिजे?
टीप: GDPR च्या स्पष्ट संमतीबाबतच्या कडक आवश्यकता, सेवा अटींपासून (Terms of Service) मार्केटिंग ऑप्ट-इन्सचे विलगीकरण आणि मोबाईल स्क्रीनवर कायदेशीर मजकुराची प्रत्यक्ष दृश्यमानता यांचा विचार करा.
नमुना उत्तर पहा
प्रस्तावित डिझाइन दोन मुख्य आघाड्यांवर GDPR चे उल्लंघन करते: पहिले, आधीच टिक केलेले (pre-checked) चेकबॉक्स हे वैध संमती मानले जात नाही, कारण संमती ही मुक्तपणे दिलेली, विशिष्ट, स्पष्ट आणि संभ्रम नसलेली असावी लागते. दुसरे, मार्केटिंग संमतीला सेवा अटींच्या (Terms of Service) करारासोबत जोडणे हे नियमांचे उल्लंघन आहे; वापरकर्त्याला WiFi सेवा वापरण्याची अट म्हणून मार्केटिंग ईमेल स्वीकारण्याची सक्ती केली जाऊ शकत नाही.
रिफॅक्टरिंग धोरण (Refactoring Strategy):
- संमती वेगळी करा (Decouple Consent): चेकबॉक्सचे दोन स्वतंत्र चेकबॉक्समध्ये विभाजन करा. चेकबॉक्स A अनिवार्य असेल आणि त्यामध्ये सेवा अटी व गोपनीयता धोरण समाविष्ट असेल. चेकबॉक्स B पर्यायी असेल आणि त्यामध्ये मार्केटिंग न्यूजलेटर स्वीकारण्याचा पर्याय असेल.
- टिक नसलेले सेट करा (Set to Unchecked): HTML मध्ये दोन्ही चेकबॉक्स आधीपासून रिकामे (unchecked) असतील याची खात्री करा (
checkedॲट्रिब्यूट काढून टाका). - CSS दृश्यमानता (CSS Visibility): ९०% पेक्षा जास्त वापरकर्ते मोबाईलवर असल्याने, चेकबॉक्स थेट 'Connect' बटणाच्या वर ठेवा जेणेकरून ते स्क्रोल न करता 'above the fold' दृश्यमान राहतील. वाचनीयतेसाठी सिस्टम फॉन्ट स्टॅक वापरा आणि लेबल फॉन्ट साईझ 14px आणि लाईन-हाईट 1.4 सेट करा.
- अटींसाठी स्क्रोलबॉक्स (Terms Scrollbox): कायदेशीर मजकुरामुळे फॉर्मचे घटक स्क्रीनच्या बाहेर जाऊ नयेत म्हणून, सविस्तर सेवा अटी एका फिक्स्ड हाईट असलेल्या स्क्रोल करण्यायोग्य कंटेनरमध्ये ठेवा (
max-height: 100px; overflow-y: auto; background-color: #F5F1ED; border: 1px solid #D1D5DB; border-radius: 6px;) ज्याला टेक्स्ट लिंकद्वारे उघडता किंवा बंद करता येईल. यामुळे लेआउट स्वच्छ आणि हाय-कन्व्हर्टिंग राहते आणि पूर्ण कायदेशीर अनुपालन (legal compliance) सुनिश्चित होते.
Q3. एक रिटेल चेन [Retail](/industries/retail) १०० स्टोअर्समध्ये एक कस्टम-कोडेड स्प्लॅश पेज तैनात करत आहे. डिझायनरने Google Fonts (Montserrat) वापरले आणि HTML head मध्ये CDN-होस्ट केलेल्या Bootstrap स्टाईलशीटची लिंक दिली. कॉर्पोरेट नेटवर्कवर चाचणी दरम्यान, हे पेज अत्यंत सुंदर दिसते. तथापि, जेव्हा एका चाचणी स्टोअरच्या AP वर कॅप्टिव्ह नेटवर्क कॉन्फिगरेशनसह हे तैनात केले जाते, तेव्हा पेज कोणत्याही स्टाईलशिवाय Times New Roman टेक्स्ट, बिघडलेले अलाइनमेंट आणि गायब झालेल्या आयकॉन्ससह दिसते. असे का होते, आणि या ॲसेट्सचे रिफॅक्टरिंग कसे केले पाहिजे?
टीप: वापरकर्त्याचे प्रमाणीकरण (authenticated) होण्यापूर्वी नेटवर्क कनेक्शनच्या स्थितीचे विश्लेषण करा आणि ब्राउझर वॉर्ड गार्डनच्या बाहेरील डोमेन्सच्या बाह्य HTTP विनंत्या कशा हाताळतो ते निश्चित करा.
नमुना उत्तर पहा
ही बिघाड उद्भवते कारण जेव्हा स्प्लॅश पेज लोड केले जाते तेव्हा डिव्हाइस अनधिकृत (unauthenticated), कॅप्टिव्ह स्थितीत असते. या स्थितीत, वायरलेस गेटवे सर्व आउटबाउंड इंटरनेट ट्रॅफिक ब्लॉक करतो आणि केवळ गेटवेच्या Walled Garden मध्ये स्पष्टपणे परवानगी दिलेल्या (whitelisted) डोमेन्सनाच विनंत्या पाठवू देतो. Bootstrap (cdn.jsdelivr.net) आणि Google Fonts (fonts.googleapis.com) चे CDN डोमेन्स परवानगी दिलेल्या यादीत नसल्यामुळे, स्टाईलशीट आणि फॉन्ट फाइल्स मिळवण्यासाठी ब्राउझरने केलेल्या विनंत्या शांतपणे अयशस्वी होतात. परिणामी, ब्राउझर त्याच्या डीफॉल्ट रेंडरिंग इंजिनवर परत जातो, ज्यामुळे स्टाईल नसलेला HTML (Times New Roman टेक्स्ट) आणि बिघडलेला लेआउट दिसतो.
रिफॅक्टरिंग धोरण (Refactoring Strategy):
- इनलाइन CSS (Inline CSS): बाह्य Bootstrap स्टाईलशीट लिंक काढून टाका. आवश्यक असलेले CSS ग्रिड/फ्लेक्सबॉक्स नियम थेट HTML च्या
<head>मधील<style>ब्लॉकमध्ये कॉपी करा. हे सुनिश्चित करते की सर्व लेआउट सूचना सुरुवातीच्या सिंगल-पेज पेलोडमध्येच पाठवल्या जातील. - सिस्टम फॉन्ट स्टॅक लागू करा (Implement System Font Stack): Google Fonts ची
@importकिंवा<link>कॉल काढून टाका. त्याऐवजी CSS मध्ये नेटिव्ह सिस्टम फॉन्ट स्टॅक वापरा (font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;). हे डिव्हाइसला ऑपरेटिंग सिस्टमवर आधीपासून इंस्टॉल केलेले उच्च दर्जाचे फॉन्ट वापरण्यास भाग पाडते, ज्यामुळे बाह्य नेटवर्कवरील अवलंबित्व पूर्णपणे संपुष्टात येते. - आयकॉन/लोगो बेस६४ एन्कोड करा (Base64 Encode Icons/Logos): जर लेआउट बाह्य प्रतिमा किंवा आयकॉन लायब्ररीवर (जसे की FontAwesome) अवलंबून असेल, तर या आयकॉन्सना SVG फॉरमॅटमध्ये रूपांतरित करा आणि त्यांना HTML मध्ये इनलाइन किंवा CSS मध्ये Base64 Data URIs म्हणून एम्बेड करा. हे हमी देते की पेज १००% स्वावलंबी आहे आणि इंटरनेट कनेक्टिव्हिटी नसतानाही परिपूर्ण रेंडर होते.
या मालिकेमध्ये पुढे वाचा
Ruijie साठी कॅप्टिव्ह पोर्टल: Purple अतिथी WiFi सह सेट अप करा
वेब ऑथेंटिकेशन आणि RADIUS चा वापर करून, कमांड लाइनवरून कॉन्फिगर केलेले Purple चे क्लाउड अतिथी WiFi, Ruijie RG Series ॲक्सेस पॉइंट्सवर कसे काम करते आणि अचूक सेटअप पायऱ्या कुठे शोधायच्या.
B2B Captive Portals डिझाइन करणे: नोंदणीकृत नाव आणि कंपनी डेटा गोळा करणे
हे मार्गदर्शक IT व्यवस्थापक आणि वेन्यू ऑपरेटर्सना B2B captive portals डिझाइन करण्यासाठी विक्रेता-तटस्थ तांत्रिक फ्रेमवर्क प्रदान करते. यामध्ये नोंदणीकृत नाव आणि कंपनी डेटा मिळवण्यासाठी नोंदणी फील्ड्सची रचना कशी करावी, GDPR चे पालन राखून आणि खाते-स्तरीय बुद्धिमत्ता तयार करून उच्च पूर्णत्व दर सुनिश्चित करणे याबद्दल सविस्तर माहिती दिली आहे.
कॅप्टिव्ह पोर्टल आर्किटेक्चर: सुरक्षा, रिडायरेक्शन आणि सर्वोत्तम पद्धती
एंटरप्राइझ कॅप्टिव्ह पोर्टल आर्किटेक्चरवरील एक निश्चित तांत्रिक संदर्भ. हे मार्गदर्शक सुरक्षित, डेटा-समृद्ध गेस्ट WiFi नेटवर्क तैनात करणाऱ्या IT नेत्यांसाठी नेटवर्क आयसोलेशन, DNS रिडायरेक्शन, RADIUS ऑथेंटिकेशन आणि सुरक्षा अनुपालन उलगडून दाखवते.