आधुनिक Chrome का User-Agent देखें तो कुछ ऐसा दिखेगा: "Mozilla/5.0 ... AppleWebKit/537.36 ... Chrome/120.0 Safari/537.36" — यानी उन browsers के नामों से भरी स्ट्रिंग जो असल में Chrome है ही नहीं। यह कोई गलती नहीं, बल्कि दशकों की ऐतिहासिक जुगाड़ का नतीजा है।
"Mozilla" शब्द की शुरुआत
1990 के दशक में साइटें यह चेक करके ब्राउज़र की क्षमता तय करती थीं कि User-Agent में "Mozilla" (उस वक़्त के मार्केट लीडर Netscape Navigator का कोडनेम) है या नहीं। जब Internet Explorer को भी वही "advanced" कंटेंट चाहिए था, तो उसने अपने User-Agent में भी "Mozilla" जोड़ना शुरू कर दिया — और यह परंपरा हमेशा के लिए टिक गई।
भारत में UC Browser और मोबाइल-फ़र्स्ट मार्केट
भारत में इंटरनेट का इस्तेमाल शुरू से ही मोबाइल-फ़र्स्ट रहा है, और सस्ते डेटा प्लान के दौर से पहले UC Browser अपनी डेटा-सेविंग कंप्रेशन तकनीक की वजह से यहाँ बेहद लोकप्रिय था — यह उन कुछ बाज़ारों में से एक था जहाँ यह Chrome को टक्कर देता था। इसका User-Agent अक्सर UCBrowser/ टोकन के साथ Chrome-जैसा दिखता है, जिससे सिर्फ़ "Chrome" शब्द खोजने वाला सरल पार्सिंग कोड आसानी से धोखा खा सकता है। साथ ही, भारत में Android का मार्केट शेयर वैश्विक औसत से भी ऊँचा माना जाता है, इसलिए iOS-केंद्रित टेस्टिंग यहाँ पर्याप्त कवरेज नहीं देती।
User-Agent detection अविश्वसनीय क्यों है
चूँकि हर नया ब्राउज़र compatibility के लिए अपने पूर्ववर्तियों के टोकन User-Agent में जोड़ता चला जाता है, यह स्ट्रिंग ब्राउज़र का सटीक विवरण न होकर ऐतिहासिक अवशेषों का ढेर बन चुकी है। आजकल की सबसे अच्छी प्रैक्टिस है — User-Agent पार्स करने के बजाय सीधे JavaScript/CSS की specific क्षमताओं को feature-detect करना।
यह किस काम आता है
- यह जाँचकर compatibility समस्याओं का पता लगाना कि क्लाइंट कौन-सा ब्राउज़र और वर्शन रिपोर्ट कर रहा है।
- सर्वर लॉग्स को समझना, जहाँ विज़िटर्स के User-Agent दर्ज होते हैं।
- यह समझना कि पुराना User-Agent-आधारित detection कोड अक्सर गलत क्यों साबित होता है।
विकल्प के रूप में User-Agent Client Hints
एक भारी-भरकम स्ट्रिंग पार्स करने के बजाय, Chromium-आधारित ब्राउज़र अब User-Agent Client Hints सपोर्ट करते हैं — Sec-CH-UA, Sec-CH-UA-Platform और Sec-CH-UA-Mobile जैसे अलग-अलग हेडर, जिन्हें सर्वर को explicitly रिक्वेस्ट करना पड़ता है और वे structured फ़ॉर्मेट में मिलते हैं। यह प्राइवेसी के लिए चल रही व्यापक "User-Agent Reduction" पहल का हिस्सा है, यानी समय के साथ पारंपरिक User-Agent स्ट्रिंग में जानकारी घटती जाएगी।