User-Agent पार्सर
डेवUser-Agent स्ट्रिंग को ब्राउज़र, इंजन, ऑपरेटिंग सिस्टम और डिवाइस प्रकार में पार्स करता है। अनुमानाधारित, पूर्णतः क्लाइंट-साइड।
- ब्राउज़र
- इंजन
- ऑपरेटिंग सिस्टम
- डिवाइस प्रकार
- बॉट / क्रॉलर
इस पृष्ठ पर
User-Agent पार्सर क्या है?#
User-Agent (UA) स्ट्रिंग वह पाठ पंक्ति है जो हर ब्राउज़र और HTTP क्लाइंट अपने अनुरोधों में स्वयं का वर्णन करने के लिए जोड़ता है। यह मशहूर रूप से एक असंरचित अव्यवस्था भी है: विक्रेता ऐतिहासिक संगतता टोकन एक के ऊपर एक रखते हैं, इसलिए एक आधुनिक Chrome स्ट्रिंग में Mozilla, AppleWebKit, KHTML, Gecko, और Safari शब्द भी होते हैं — जिनमें से कोई भी यह नहीं मानता कि ब्राउज़र वास्तव में उनमें से कोई है। कच्ची UA आँख से पढ़ना धीमा और त्रुटि-प्रवण है, इसीलिए लगभग हर विश्लेषण डैशबोर्ड, access-log टूल, और bot-detection परत इसे पहले किसी पार्सर से चलाती है।
यह पेज किसी भी UA स्ट्रिंग को लेता है और पाँच तथ्यों में तोड़ता है जो आप वास्तव में चाहते हैं: ब्राउज़र (नाम और संस्करण), इंजन (रेंडरिंग क्रोड), OS (ऑपरेटिंग सिस्टम और संस्करण), डिवाइस प्रकार (डेस्कटॉप, मोबाइल, या टैबलेट), और isBot (कि स्ट्रिंग किसी क्रॉलर जैसी दिखती है)। यह पूरी तरह आपके ब्राउज़र में चलता है — किसी लॉग पंक्ति से एक स्ट्रिंग चिपकाएँ और विश्लेषण पढ़ें, बिना किसी सर्वर राउंड-ट्रिप के।
ब्राउज़र पहचान देखने से अधिक कठिन होने का कारण क्रम है। विशेष ब्राउज़रों को Chrome से पहले जाँचा जाना चाहिए, क्योंकि उनकी UA स्ट्रिंग्स सभी संगतता के लिए Chrome शाब्दिक टोकन रखती हैं। Microsoft Edge, Opera, Samsung Internet, Vivaldi और CocCoc सभी एक साधारण if (ua.includes("chrome")) जाँच द्वारा Chrome गलत रिपोर्ट किए जाएँगे। इंजन के लिए भी वही सच है: स्ट्रिंग AppleWebKit Blink ब्राउज़रों (Chrome, Edge, Opera) और शुद्ध WebKit वाले (Safari) दोनों में दिखती है, इसलिए इंजन को ब्राउज़र परिवार से अनुमानित किया जाता है, सीधे मैच नहीं।
इसका उपयोग कैसे करें#
- इस ब्राउज़र के अपने
navigator.userAgentको इनपुट बॉक्स में लोड करने के लिए शीर्ष पर मेरा ब्राउज़र उपयोग करें क्लिक करें — यह देखने का सबसे तेज़ तरीका कि आपका अपना ट्रैफ़िक कैसा दिखता है। - या कोई भी UA स्ट्रिंग इनपुट फलक में चिपकाएँ — किसी nginx access log से, अपने बैकएंड के
req.headers["user-agent"]से, किसी curl अनुरोध से, कुछ भी। - आउटपुट फलक में पाँच पंक्तियाँ पढ़ें:
- ब्राउज़र — परिवार नाम और प्रमुख संस्करण (उदा.
Chrome 120)। - इंजन — रेंडरिंग इंजन (Blink, WebKit, Gecko, Trident)।
- OS — ऑपरेटिंग सिस्टम और संस्करण जहाँ पुनर्प्राप्त कर सके (उदा.
Windows 10/11,iOS 17,Android 14)। - डिवाइस प्रकार —
desktop,mobile, याtablet,iPad,MobileरहितAndroid,iPhoneजैसे टोकन से अनुमानित। - बॉट / क्रॉलर —
हाँ/नहीं, क्रॉलर पहचानकर्ताओं (bot,crawl,spider,slurp,pingdom,headless,phantomjs,curl,wget,python-requests,axios, …) के विरुद्ध मैच से चिह्नित।
- ब्राउज़र — परिवार नाम और प्रमुख संस्करण (उदा.
- दोनों फलक खाली करने के लिए साफ़ करें क्लिक करें।
- स्थिति पंक्ति परिणाम संक्षिप्त करती है या रिपोर्ट करती है कि इनपुट खाली था।
मुख्य विशेषताएँ#
- विशेषता-प्रथम ब्राउज़र पहचान। Edge, Opera, Samsung Internet, Vivaldi, CocCoc और Firefox सभी Chrome और Safari से पहले मैच किए जाते हैं, इसलिए वे
Chromeसंगतता टोकन द्वारा चुपचाप निगले नहीं जाते। - परिवार से अनुमानित इंजन। Blink बनाम WebKit का निर्णय पहचाने गए ब्राउज़र द्वारा होता है,
AppleWebKitपर किसी नाज़ुक सीधे मैच से नहीं — जो कारण है कि Safari स्ट्रिंग Chrome रिपोर्ट नहीं होती। - डिवाइस-प्रकार वर्गीकरण। टैबलेट को फ़ोन से
iPadटोकन औरAndroid ... Mobileभेद से अलग पहचाना जाता है, वही ह्यूरिस्टिक्स जिन पर विश्लेषण टूल निर्भर हैं। - क्रॉलर फ़्लैग। बॉट / क्रॉलर पंक्ति उन स्ट्रिंग्स को चिह्नित करती है जिन्हें आप सामान्यतः मानव-सामना मैट्रिक्स से बाहर रखना चाहते हैं — खोज क्रॉलर, अपटाइम मॉनिटर, headless ब्राउज़र और HTTP लाइब्रेरी।
- 100% क्लाइंट-साइड। कोई UA कभी कहीं नहीं भेजी जाती। इसका अर्थ यह भी है कि आप प्रोडक्शन लॉग से टोकन बिना किसी तृतीय-पक्ष पार्सिंग API पर लीक किए चिपका सकते हैं।
विस्तृत उदाहरण#
किसी access log से यह सामान्य Chrome-on-Windows स्ट्रिंग चिपकाएँ:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
और पाँच पंक्तियाँ भरती हैं:
Browser Chrome 120
Engine Blink
OS Windows 10/11
Device desktop
Bot no
अब एक Edge स्ट्रिंग से तुलना करें — अनुगामी Edg/120 पर ध्यान दें:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0
एक साधारण पार्सर जो पहले Chrome जाँचता है यहाँ Chrome 120 रिपोर्ट करता है — गलत। यह पेज Chrome/ से पहले Edg/ जाँचता है, इसलिए वही स्ट्रिंग सही ढंग से ब्राउज़र: Microsoft Edge 120 देती है, इंजन अभी भी Blink (Edge Chromium-आधारित है)।
एक तीसरा मामला bot पथ दिखाता है। curl/7.81.0 भेजने वाली एक स्वास्थ्य-जाँच स्क्रिप्ट बॉट: हाँ चिह्नित होती है यद्यपि इसमें कोई Mozilla आवरण नहीं है, क्योंकि curl bot मैचर द्वारा स्कैन किए जाने वाले लाइब्रेरी टोकनों में से एक है। वही पंक्ति है जो आपको किसी लॉग को देखते समय वास्तविक-उपयोगकर्ता ट्रैफ़िक को स्वचालित शोर से अलग करने देती है।
अक्सर पूछे जाने वाले प्रश्न#
मेरा Edge ब्राउज़र “Chrome” नहीं “Microsoft Edge” क्यों रिपोर्ट करता, यद्यपि UA में Chrome शब्द है?#
क्योंकि Edge की UA जानबूझकर Chrome/120.0.0.0 शामिल करती है ताकि Chrome को सेवा करने वाली वेबसाइटें Edge को भी सेवा करें। यह पार्सर पहले Edg/ टोकन जाँचता है, फिर Chrome/, इसलिए विशेष परिवार जीतता है। कोई भी पार्सर जो अपनी जाँचें इस क्रम में नहीं करता हर Chromium व्युत्पन्न को Chrome गलत रिपोर्ट करेगा।
क्या मैं UA स्ट्रिंग से OS संस्करण पर भरोसा कर सकता हूँ?#
एक हद तक। Windows 10 और 11 को Windows NT 10.0 में सिकुड़ता है, इसलिए वे यहाँ 10/11 रिपोर्ट होते हैं। iOS और macOS संस्करण OS X_x_x टोकन से पुनर्प्राप्त होते हैं किंतु ऐतिहासिक रूप से रिलीज़ समय पर जमे रहते हैं। संस्करण को एक मज़बूत सुराग मानें, गारंटी नहीं, और इस पर सुरक्षा निर्णय न लगाएँ।
क्या Bot फ़्लैग ट्रैफ़िक अवरुद्ध करने के लिए पर्याप्त भरोसेमंद है?#
नहीं — UA-आधारित bot पहचान लॉग विश्लेषण और डैशबोर्ड छँटाई के लिए एक सुविधा है, कोई सुरक्षा सीमा नहीं। दुर्भावनापूर्ण क्लाइंट जो UA चाहें जाली बनाते हैं, जिसमें पूरी तरह मानव-जैसे दिखने वाले। स्पष्ट क्रॉलर और लाइब्रेरी देखने के लिए इस पंक्ति का उपयोग करें; rate limiting, प्रमाणीकरण और व्यवहार जाँच का उपयोग किसी भी चीज़ के लिए करें जिस पर वास्तव में भरोसा करना आवश्यक हो।
पार्सर सब कुछ “अज्ञात” दिखाता है। मैंने क्या चिपकाया?#
या तो एक खाली/रिक्ति स्ट्रिंग, या किसी ऐसे क्लाइंट की UA जिसे यह पार्सर नहीं पहचानता (कुछ डेस्कटॉप ऐप और SDK विशिष्ट पहचानकर्ता भेजते हैं)। स्थिति पंक्ति पहले मामले में कहेगी कि इनपुट खाली था; दूसरे में, ब्राउज़र और OS सरलता से अज्ञात में गिर जाते हैं जबकि डिवाइस प्रकार desktop पर डिफ़ॉल्ट होता है। कच्ची स्ट्रिंग इनपुट फलक में संरक्षित रहती है ताकि आप इसका निरीक्षण कर सकें।