User-Agent हेडर को बिड रिक्वेस्ट में शामिल किया जाता रहा है, ताकि टारगेटिंग के लिए काम का डेटा मिल सके. जैसे, अनुरोध करने वाले डिवाइस का ब्राउज़र और प्लैटफ़ॉर्म. हालांकि, ब्राउज़र अक्सर User-Agent को काफ़ी हद तक छिपाते हैं. ऐसा इसलिए किया जाता है, क्योंकि इसका इस्तेमाल करना मुश्किल होता है और इससे उपयोगकर्ता की निजता को बेहतर तरीके से सुरक्षित रखा जा सकता है. इसकी वजह से, Google User-Agent क्लाइंट के संकेत का इस्तेमाल करता है. ये संकेत, User-Agent हेडर के साथ इस्तेमाल किए जा सकते हैं. हालांकि, ये तब ही बिड रिक्वेस्ट में शामिल किए जाते हैं, जब ये उपलब्ध हों. इन क्लाइंट हिंट को Sec-Ch-UA* हेडर या JavaScript क्लाइंट हिंट एपीआई से सोर्स किया जा सकता है.
User-Agent हेडर को BidRequest.device.ua
फ़ील्ड में स्ट्रिंग के तौर पर दिखाया जाता है.
UserAgent
मैसेज में क्लाइंट हिंट तब पॉप्युलेट किए जाएंगे, जब वे उपलब्ध होंगे. अगर वे उपलब्ध नहीं होंगे, तो User-Agent हेडर से पार्स की गई वैल्यू के आधार पर मैसेज पॉप्युलेट किया जाएगा. यह जानकारी BidRequest.device.sua
फ़ील्ड में दिखती है.
बिड लगाने वाले लोगों या कंपनियों को हमारा सुझाव है कि वे User-Agent स्ट्रिंग के बजाय, UserAgent
मैसेज का इस्तेमाल करें.
UserAgent
का डेटा कैसे जनरेट होता है
User-Agent हेडर के उलट, UserAgent
मैसेज में उपयोगकर्ता एजेंट की जानकारी को अलग-अलग फ़ील्ड में बांटा गया है.
विज्ञापन अनुरोध में क्लाइंट हिंट उपलब्ध होने या न होने के आधार पर, UserAgent
मैसेज को इन तरीकों से पॉप्युलेट किया जा सकता है:
- अगर अनुरोध में कम से कम एक लो-एंट्रॉपी क्लाइंट हिंट शामिल है, तो
UserAgent
को उनके कॉन्टेंट के आधार पर पॉप्युलेट किया जाता है. - अगर अनुरोध में सिर्फ़ User-Agent हेडर है, तो
UserAgent
को हेडर से पार्स किए गए डेटा के आधार पर जानकारी भरी जाती है.
उदाहरण: User-Agent हेडर के आधार पर UserAgent
को पॉप्युलेट करना
मान लें कि कोई विज्ञापन अनुरोध है, जहां ब्राउज़र ये हेडर भेजता है:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
User-Agent हेडर के आधार पर अपने-आप पॉप्युलेट होने वाला UserAgent
ऐसा दिख सकता है:
browsers: [{ brand: "Mozilla", version: ["5", "0"] },
{ brand: "AppleWebKit", version: ["537", "36"] },
{ brand: "Chrome", version: ["103", "0", "0", "0"] },
{ brand: "Safari", version: ["537", "36"] }],
platform: { brand: "Windows NT", version: ["10", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
model: "x64",
source: USER_AGENT_STRING
उदाहरण: क्लाइंट हिंट के आधार पर UserAgent
को पॉप्युलेट करना
मान लें कि कोई विज्ञापन अनुरोध है, जहां ब्राउज़र ये हेडर भेजता है:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Sec-Ch-Ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"
Sec-Ch-Ua-Arch: x86
Sec-Ch-Ua-Full-Version: 103.0.5060.134
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: Windows
Sec-Ch-Ua-Platform-Version: 15.0.0
जिन मामलों में कम से कम कम एन्ट्रॉपी वाले क्लाइंट हिंट शामिल होते हैं उनमें UserAgent
, उन हेडर के कॉन्टेंट के आधार पर पॉप्युलेट होगा. भले ही, User-Agent हेडर मौजूद हों. यह इस तरह दिखेगा:
browsers: [{ brand: ".Not/A)Brand", version: ["99", "0", "0", "0"] },
{ brand: "Google Chrome", version: ["103", "0", "5060", "134"] },
{ brand: "Chromium", version: ["103", "0", "5060", "134"] }],
platform: { brand: "Windows", version: ["15", "0", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
source: CLIENT_HINTS_HIGH_ENTROPY
User-Agent हेडर बनाम क्लाइंट हिंट के आधार पर जानकारी भरना
कुछ फ़ील्ड अलग-अलग तरीके से पॉप्युलेट होते हैं. यह इस बात पर निर्भर करता है कि वे User-Agent हेडर या क्लाइंट हिंट पर आधारित हैं या नहीं. इन अंतरों की खास जानकारी यहां दी गई है:
- एक जैसे ब्राउज़र और प्लैटफ़ॉर्म के लिए,
UserAgent.browsers.brand
औरUserAgent.platform.brand
अक्सर User-Agent हेडर या क्लाइंट हिंट के आधार पर,UserAgent
से अलग होंगे. उदाहरण के लिए, अगरUserAgent.platform.brand
, User-Agent हेडर पर आधारित है, तो यह “Windows NT” के तौर पर दिख सकता है. वहीं, अगर यह क्लाइंट हिंट पर आधारित है, तो यह “Windows” के तौर पर दिख सकता है. - कुछ
UserAgent.browsers
एंट्री, User-Agent हेडर या क्लाइंट हिंट के लिए यूनीक होती हैं. उदाहरण के लिए, अगरUserAgent
User-Agent हेडर पर आधारित होता है, तो “AppleWebKit” दिखेगा. वहीं, अगर यह क्लाइंट हिंट पर आधारित होता है, तो सिर्फ़ “Chromium” दिखेगा. - User-Agent हेडर पर आधारित
UserAgent
में ही फ़्रीज़ की गई वैल्यू हो सकती हैं. उदाहरण के लिए, अगर प्लैटफ़ॉर्म Windows 11 22H2 है, तोUserAgent.platform.brand
को “Windows NT” पर सेट किया जाएगा औरUserAgent.platform.version
को[“10”, “0”]
पर सेट किया जाएगा. ऐसा इसलिए किया जाएगा, क्योंकि Windows 10 या इसके बाद के वर्शन के लिए, यह फ़्रीज़ की गई वैल्यू है.
आम तौर पर, क्लाइंट हिंट पर आधारित UserAgent
में मौजूद डेटा, फ़्रीज़ की गई या छिपाई गई जानकारी के लिए गलत विकल्प नहीं होगा. अगर User-Agent हेडर और क्लाइंट के संकेत के आधार पर UserAgent
के बीच कोई अंतर है, तो UserAgent
की जानकारी को प्राथमिकता दी जानी चाहिए.
UserAgent ऑब्जेक्ट के फ़ील्ड
इस सेक्शन में हर फ़ील्ड के बारे में खास जानकारी दी गई है. इसमें Google आरटीबी के व्यवहार और इस्तेमाल के सबसे सही तरीकों पर फ़ोकस किया गया है.
ब्राउज़र
इसमें BrandVersion की उन एंट्री की सूची होती है जिन्हें आम तौर पर खास जानकारी के हिसाब से क्रम में लगाया जाता है. उदाहरण के लिए, अगर आपको browsers
के कॉन्टेंट की सूची बनानी है, तो हर एंट्री के लिए brand
इस क्रम में दिख सकता है:
ब्रैंड | मतलब |
मोज़िल्ला | Mozilla के साथ काम करने वाला |
AppleWebKit | AppleWebKit पर आधारित, Mozilla का सबसेट. |
Chrome | Chrome ब्राउज़र, AppleWebKit के साथ काम करने वाले ब्राउज़र का सबसेट |
Safari | मोबाइल के बजाय डेस्कटॉप वर्शन. |
UserAgent
हमेशा ब्राउज़र को किसी खास क्रम में नहीं दिखाएगा. ऐसा खास तौर पर तब होगा, जब यह क्लाइंट हिंट पर आधारित हो. यहां उन अन्य अंतरों के बारे में बताया गया है जो आपको source
की वैल्यू के आधार पर दिख सकते हैं:
USER_AGENT
:version
फ़ील्ड को मेजर वर्शन में बदला जा सकता है या फ़्रीज़ किया जा सकता है. यह एजेंट की नीति पर निर्भर करता है. ध्यान दें कि वैल्यू के फ़्रीज़ होने का कोई संकेत नहीं दिखेगा.CLIENT_HINTS_LOW_ENTROPY
औरCLIENT_HINTS_HIGH_ENTROPY
: एंट्री को किसी भी शर्त के हिसाब से क्रम में नहीं लगाया जाता. उदाहरण के लिए, एक ही ब्राउज़र हर अनुरोध में इन एंट्री को अलग-अलग क्रम में भेज सकता है. इनमें GREASE एंट्री भी हो सकती है, जिसे अनदेखा किया जाना चाहिए.CLIENT_HINTS_HIGH_ENTROPY
: ब्राउज़र में मिले सभीversion
फ़ील्ड को पूरे वर्शन पर सेट किया जा सकता है.
प्लैटफ़ॉर्म
प्लैटफ़ॉर्म के बारे में बताने वाली BrandVersion एंट्री. ऐसा हो सकता है कि यह User-Agent हेडर और क्लाइंट हिंट के साथ काम न करे. इसलिए, कुछ प्लैटफ़ॉर्म को टारगेट करने के लिए, दो नामों की जांच की ज़रूरत पड़ सकती है. उदाहरण के लिए, Apple के Macintosh ऑपरेटिंग सिस्टम को उपयोगकर्ता-एजेंट हेडर में “Macintosh” के तौर पर ब्रैंड किया गया है, लेकिन क्लाइंट हिंट में “macOS” के तौर पर.
यहां source
की वैल्यू के आधार पर दिखने वाले अन्य अंतरों के बारे में बताया गया है:
USER_AGENT
:version
फ़ील्ड को मेजर वर्शन में बदला जा सकता है या उसे फ़्रीज़ किया जा सकता है. ध्यान दें कि वैल्यू फ़्रीज़ होने का कोई संकेत नहीं दिखेगा.CLIENT_HINTS_LOW_ENTROPY
:version
फ़ील्ड में कोई जानकारी नहीं दिखेगी.CLIENT_HINTS_HIGH_ENTROPY
:version
फ़ील्ड को पूरे वर्शन पर सेट किया जा सकता है.
मोबाइल
इससे पता चलता है कि विज्ञापनों जैसे कॉन्टेंट को छोटी स्क्रीन और/या टच इनपुट के लिए ऑप्टिमाइज़ किया जाना चाहिए या नहीं. ध्यान दें कि यह ज़रूरी नहीं है कि यह डिवाइस टाइप का सूचक हो, क्योंकि मोबाइल ब्राउज़र को “डेस्कटॉप साइट” का अनुरोध करने के लिए कॉन्फ़िगर किया जा सकता है.
आर्किटेक्चर
इससे प्लैटफ़ॉर्म के आर्किटेक्चर की पहचान होती है, जैसे कि “x86” या “arm”.
क्लाइंट हिंट पर आधारित UserAgent
के लिए, ध्यान दें कि यह सिर्फ़ तब पॉप्युलेट होगा, जब source
को CLIENT_HINTS_HIGH_ENTROPY
पर सेट किया गया हो.
बिटनेस
इससे प्लैटफ़ॉर्म के बिट की जानकारी मिलती है. जैसे, इसमें 32-बिट या 64-बिट सीपीयू है या नहीं. यह फ़ील्ड एक इंटिजर स्ट्रिंग है, जो आर्किटेक्चर के बारे में ज़्यादा जानकारी देता है. उदाहरण के लिए, “x86” आर्किटेक्चर का बिट रेट, “32” या “64” पर सेट किया जा सकता है.
क्लाइंट हिंट पर आधारित UserAgent
के लिए, ध्यान दें कि यह सिर्फ़ तब पॉप्युलेट होगा, जब source
को CLIENT_HINTS_HIGH_ENTROPY
पर सेट किया गया हो.
मॉडल
डिवाइस मॉडल की पहचान करता है. मोबाइल डिवाइसों के लिए, इसमें मॉडल का नाम अपने-आप दिखेगा. जैसे, “Pixel 6 Pro”. यह नाम लैपटॉप या डेस्कटॉप के लिए नहीं दिखेगा.
यहां source
की वैल्यू के आधार पर, आपको दिखने वाले फ़र्क़ के बारे में बताया गया है:
USER_AGENT
- नॉन-मोबाइल डिवाइस:
model
फ़ील्ड में अक्सर, आर्किटेक्चर और बिट वैल्यू, दोनों शामिल होती हैं. जैसे, Windows के लिए “x64”. यह वैल्यू, सभी प्लैटफ़ॉर्म पर काम नहीं करती. उदाहरण के लिए, Linux एक ही हार्डवेयर के लिए “x86_64” का इस्तेमाल कर सकता है. - मोबाइल डिवाइस: इस फ़ील्ड में आर्किटेक्चर और बिट रेट शामिल नहीं होगा.
अगर आपको इन वैल्यू में दिलचस्पी है, तो
UserAgent.architecture
औरUserAgent.bitness
देखें.
- नॉन-मोबाइल डिवाइस:
CLIENT_HINTS_LOW_ENTROPY
:model
फ़ील्ड में कोई जानकारी नहीं भरी जाएगी.CLIENT_HINTS_HIGH_ENTROPY
:model
फ़ील्ड में सिर्फ़ मोबाइल डिवाइसों के डिवाइस मॉडल की जानकारी भरी जाएगी. डेस्कटॉप प्लैटफ़ॉर्म के लिए कोई वैल्यू सेट नहीं है.
स्रोत
इससे पता चलता है कि UserAgent
बनाने के लिए किन हेडर का इस्तेमाल किया गया था. क्लाइंट हिंट के लिए, यह इन दो मामलों में भी अंतर करता है:
CLIENT_HINTS_LOW_ENTROPY
: सिर्फ़ बुनियादी क्लाइंट हिंट उपलब्ध हैं.CLIENT_HINTS_HIGH_ENTROPY
: क्लाइंट हिंट उपलब्ध हैं. इनमें कम से कम एक ऐसा फ़ील्ड भी शामिल है जिसे ज़्यादा एन्ट्रोपी के तौर पर बांटा गया है.