User agent switcher एक ब्राउज़र टूल है, आम तौर पर एक एक्सटेंशन, जो आपके ब्राउज़र की वेबसाइटों को भेजी जाने वाली user agent स्ट्रिंग बदल देता है, ताकि साइट को लगे कि आप कोई दूसरा ब्राउज़र या डिवाइस इस्तेमाल कर रहे हैं। डेवलपर इसका इस्तेमाल यह देखने के लिए करते हैं कि किसी ख़ास ब्राउज़र को कौन-सा कंटेंट भेजा जाता है, और डिवाइस डिटेक्शन जाँचने के लिए। लेकिन अकेले user agent बदलने से मोबाइल लेआउट नहीं दिखता: viewport, स्क्रीन साइज़ और pixel ratio वही रहते हैं, इसलिए मोबाइल टेस्टिंग के लिए ऐसा टूल चाहिए जो इन्हें भी बदले।
User agent क्या है
आपके ब्राउज़र की हर रिक्वेस्ट में एक User-Agent हेडर होता है, एक टेक्स्ट स्ट्रिंग जो ब्राउज़र, इंजन और ऑपरेटिंग सिस्टम के बारे में बताती है। Windows पर हाल का Chrome कुछ ऐसा भेजता है:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<major version>.0.0.0 Safari/537.36
और Android फ़ोन पर Chrome कुछ ऐसा:
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<major version>.0.0.0 Mobile Safari/537.36
नामों का यह अजीब मेल (“Mozilla”, “AppleWebKit”, “like Gecko”, “Safari”) इतिहास की देन है: ब्राउज़रों ने एक-दूसरे की स्ट्रिंग कॉपी कीं, ताकि किसी एक ब्राउज़र को पहचानने वाली साइटें बाक़ियों को बाहर न कर दें। कई सर्वर Mobile शब्द देखकर ही तय करते हैं कि मोबाइल पेज भेजना है या नहीं।
User-Agent reduction और client hints
Chrome, Edge और दूसरे Chromium ब्राउज़र अब छोटा किया हुआ user agent भेजते हैं। minor वर्शन की जगह शून्य आ गए हैं, Android वर्शन और डिवाइस मॉडल सामान्य वैल्यू पर स्थिर कर दिए गए हैं (ऊपर का Android 10; K यही है), और Windows वर्शन तय है। ज़्यादा विस्तृत जानकारी User-Agent Client Hints में चली गई है, यानी ऐसे हेडर:
Sec-CH-UA: ब्राउज़र का ब्रांड और major वर्शनSec-CH-UA-Mobile: मोबाइल पर?1, डेस्कटॉप पर?0Sec-CH-UA-Platform: ऑपरेटिंग सिस्टम
ज़रूरत हो तो सर्वर और hints (मॉडल, पूरा वर्शन) माँग सकते हैं। JavaScript यही जानकारी navigator.userAgentData से पढ़ता है।
स्विचर के लिए यह मायने रखता है। जो टूल सिर्फ़ User-Agent हेडर बदलता है और client hints में “desktop” ही छोड़ देता है, वह विरोधाभासी तस्वीर भेजता है, और कुछ साइटें इसे पकड़ लेंगी। अच्छे टूल दोनों बदलते हैं।
User agent switcher किस काम आता है
- डिवाइस डिटेक्शन जाँचना। अगर आपका सर्वर, CDN या कोई WordPress प्लगइन फ़ोन को अलग HTML भेजता है, तो user agent बदलकर आप वह वर्शन देख सकते हैं।
- Bug रिपोर्ट दोहराना। कोई विज़िटर कहता है कि साइट “Samsung Internet पर” टूटती है। वही user agent सेट करने से user agent पर आधारित कोड के रास्ते सामने आ सकते हैं।
- “unsupported browser” बैनर और किसी ख़ास ब्राउज़र के polyfills टेस्ट करना।
- बॉट क्या देखते हैं, यह जाँचना, जैसे SEO या बॉट नियमों की डीबगिंग में crawler का user agent।
User agent switcher क्या नहीं कर सकता
user agent बदलने से ये नहीं बदलते:
- viewport की चौड़ाई, इसलिए आपकी CSS media queries पर असर नहीं पड़ता
- JavaScript को बताए जाने वाले
screen.width,devicePixelRatioया touch सपोर्ट - rendering इंजन: Safari होने का दिखावा करने से Chrome, WebKit की तरह render नहीं करने लगता
इसलिए iPhone user agent वाली डेस्कटॉप Chrome विंडो अक्सर एक अजीब मिश्रण दिखाती है: सर्वर का मोबाइल HTML, डेस्कटॉप जितने चौड़े लेआउट में फैला हुआ। असली मोबाइल व्यू के लिए viewport, pixel ratio और user agent, तीनों का एक साथ एमुलेशन चाहिए। Chrome DevTools का device mode यही करता है, और Mobile View Extension जैसा मोबाइल व्यू एक्सटेंशन भी, जो एक ही स्टेप में डिवाइस के हिसाब से user agent, सपोर्ट होने वाले client hints, स्क्रीन साइज़, pixel ratio और touch प्रोफ़ाइल लागू करता है। दोनों तरीकों की तुलना मोबाइल सिम्युलेटर एक्सटेंशन बनाम DevTools में है।
क्या एक्सटेंशन की ज़रूरत है भी?
एक बार के टेस्ट के लिए नहीं। Chrome DevTools मौजूदा टैब के लिए Network conditions में user agent बदल सकता है, और फ़ोन चुनने पर device mode इसे अपने-आप सेट कर देता है। स्टेप Chrome में user agent कैसे बदलें में हैं।
एक्सटेंशन तब फ़ायदेमंद है जब आप बार-बार बदलते हैं, हर साइट के लिए अलग नियम चाहते हैं, या चाहते हैं कि DevTools बंद होने पर भी सेटिंग बनी रहे।
User agent switcher एक्सटेंशन कैसे चुनें
User agent switcher आपकी हर रिक्वेस्ट देख और बदल सकते हैं, इसलिए इन्हें वैसे ही चुनें जैसे बड़े एक्सेस वाला कोई भी एक्सटेंशन:
- प्राइवेसी पॉलिसी। उसमें साफ़ लिखा हो कि ब्राउज़िंग डेटा इकट्ठा नहीं किया जाता। विज्ञापन या एनालिटिक्स डालने वाले स्विचर से बचें।
- Client hints। क्या यह सिर्फ़
User-Agentस्ट्रिंग नहीं, बल्किSec-CH-UA-*हेडर औरnavigator.userAgentDataभी बदलता है? - हर साइट या हर टैब के नियम, ताकि आप अपने बैंक की वेबसाइट पर नक़ली user agent चालू न छोड़ दें।
- नए प्रीसेट। Chrome 60 या iOS 11 वाली पुरानी स्ट्रिंग “outdated browser” की चेतावनी ले आती हैं।
- Chrome Web Store में हाल के अपडेट।
प्राइवेसी: क्या random user agent आपको बचाता है?
“Random user agent” वाले एक्सटेंशन ट्रैकिंग मुश्किल बनाने का वादा करते हैं। इसका असर सीमित है। Fingerprinting स्क्रिप्ट कई संकेत इस्तेमाल करती हैं (स्क्रीन साइज़, फ़ॉन्ट, टाइम ज़ोन, GPU), और बाक़ी से मेल न खाने वाला user agent आपके ब्राउज़र को कम नहीं, ज़्यादा अनोखा बना सकता है। प्राइवेसी के लिए fingerprinting से बचाव वाले बिल्ट-इन फ़ीचर वाले ब्राउज़र स्ट्रिंग बदलने से बेहतर काम करते हैं।
अक्सर पूछे जाने वाले सवाल
User agent switcher क्या करता है?
यह वह ब्राउज़र और डिवाइस की जानकारी बदल देता है जो आपका ब्राउज़र वेबसाइटों को भेजता है, ताकि वे आपको किसी दूसरे ब्राउज़र या डिवाइस की तरह मानें।
क्या user agent बदलने से साइट का मोबाइल वर्शन दिखेगा?
यह वह HTML दिखाता है जो सर्वर मोबाइल डिवाइस को भेजता है, लेकिन मोबाइल लेआउट नहीं, क्योंकि viewport की चौड़ाई वही रहती है। डिवाइस एमुलेशन या ऐसा मोबाइल व्यू एक्सटेंशन इस्तेमाल करें जो viewport भी बदले।
क्या user agent switcher इस्तेमाल करना सुरक्षित है?
तकनीक अपने-आप में हानिरहित है; जोखिम एक्सटेंशन में है। साफ़ प्राइवेसी पॉलिसी, कम से कम परमिशन और हाल के अपडेट वाला एक्सटेंशन चुनें, और ज़रूरत न हो तो उसे बंद रखें।