उपयोगकर्ता-एजेंट हेडर को लंबे समय से बिड रिक्वेस्ट में शामिल किया गया है, ताकि काम के शुरुआती डिवाइस के ब्राउज़र और प्लैटफ़ॉर्म जैसे टारगेटिंग डेटा से. हालांकि, ब्राउज़र को इस्तेमाल करने में दिक्कत होती है. इसलिए, उपयोगकर्ता एजेंट को अक्सर छिपाने के लिए उसमें बहुत ज़्यादा बदलाव किए जाते हैं और ताकि उपयोगकर्ता की निजता को बेहतर तरीके से सुरक्षित रखा जा सके. इस समस्या को हल करने के लिए, Google, यूज़र-एजेंट क्लाइंट हिंट, जो कि उपयोगकर्ता-एजेंट हेडर के साथ जोड़ने के लिए उपलब्ध होने पर, बोली अनुरोधों में शामिल की जाती है. ये क्लाइंट हिंट (कम शब्दों में), Sec-Ch-UA* हेडर से हासिल किए जा सकते हैं या JavaScript क्लाइंट हिंट एपीआई से मिला है.
इस्तेमाल किए गए प्रोटोकॉल के आधार पर, उपयोगकर्ता-एजेंट हेडर, स्ट्रिंग फ़ील्ड:
- OpenRTB:
BidRequest.device.ua
- Google आरटीबी (अब काम नहीं करता):
BidRequest.user_agent
जब वे ऐसा करेंगे, तो UserAgent
मैसेज में क्लाइंट हिंट अपने-आप भर जाएंगे
उपलब्ध है, लेकिन इसे
उपयोगकर्ता-एजेंट हेडर. इस्तेमाल किए गए प्रोटोकॉल के हिसाब से, इसे एक ऐसे प्रोटोकॉल के तौर पर दिखाया जाएगा
को भी फ़ॉलो किया जा सकता है:
- OpenRTB:
BidRequest.device.sua
- Google आरटीबी (अब काम नहीं करता):
BidRequest.user_agent_data
बोली लगाने वालों को सलाह दी जाती है कि वेUserAgent
उपयोगकर्ता एजेंट स्ट्रिंग.
UserAgent
में जानकारी अपने-आप भरने का तरीका
UserAgent
मैसेज, उपयोगकर्ता एजेंट को दिखाता है, जबकि उपयोगकर्ता एजेंट हेडर में ऐसा नहीं होता
जिसे किसी खास जानकारी के लिए कई फ़ील्ड में बांटा गया हो.
विज्ञापन अनुरोध में क्लाइंट हिंट उपलब्ध हैं या नहीं, इसके आधार पर
UserAgent
मैसेज में, इन तरीकों से जानकारी भरी जा सकती है:
- अगर अनुरोध में कम से कम
कम एंट्रॉपी
क्लाइंट हिंट,
UserAgent
को उनके कॉन्टेंट के आधार पर भरा जाता है. - अगर अनुरोध में सिर्फ़ उपयोगकर्ता एजेंट हेडर है, तो
UserAgent
हेडर से क्या पार्स किया जा सकता है, उसके आधार पर अपने-आप भर जाता है.
उदाहरण: उपयोगकर्ता-एजेंट हेडर के आधार पर 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
पूरी तरह से उपयोगकर्ता-एजेंट हेडर के आधार पर भरा गया 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
उन हेडर के कॉन्टेंट के हिसाब से अपने-आप जानकारी भर जाएगी, भले ही उपयोगकर्ता-एजेंट
हेडर मौजूद हैं. यह कुछ ऐसा दिखेगा:
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
उपयोगकर्ता-एजेंट हेडर और क्लाइंट हिंट के आधार पर अपने-आप जानकारी भरना
कुछ फ़ील्ड में अपने-आप जानकारी भरने का तरीका अलग-अलग होता है. यह इस बात पर निर्भर करता है कि वे उपयोगकर्ता-एजेंट हेडर या क्लाइंट हिंट. इनकी खास जानकारी यहां दी गई है अंतर:
- एक जैसे ब्राउज़र और प्लैटफ़ॉर्म के लिए,
UserAgent.browsers.brand
और इन चीज़ों के आधार परUserAgent.platform.brand
अक्सरUserAgent
के बीच अलग-अलग होगी उपयोगकर्ता-एजेंट हेडर या क्लाइंट हिंट. उदाहरण के लिए, अगरUserAgent.platform.brand
Windows NT पर आधारित होता है, तो वह “Windows NT” के तौर पर दिख सकता है User-Agent हेडर, या “Windows”, अगर यह क्लाइंट हिंट पर आधारित होता. - कुछ
UserAgent.browsers
एंट्री, User-Agent हेडर के लिए यूनीक होती हैं या क्लाइंट हिंट तक. उदाहरण के लिए, अगरUserAgent
उपयोगकर्ता-एजेंट हेडर पर आधारित थे, जबकि “Chromium” सिर्फ़ अगर यह क्लाइंट हिंट पर आधारित होता. - सिर्फ़ उपयोगकर्ता एजेंट हेडर पर आधारित
UserAgent
में, फ़्रीज़ की गई वैल्यू हो सकती हैं. उदाहरण के लिए, अगर प्लैटफ़ॉर्म Windows 11 22H2 था,UserAgent.platform.brand
को “Windows NT” पर सेट किया जाएगा औरUserAgent.platform.version
को[“10”, “0”]
पर सेट किया जाएगा, क्योंकि यह 10 या उससे ज़्यादा के किसी भी Windows वर्शन के लिए फ़्रीज़ की गई वैल्यू.
UserAgent
में क्लाइंट हिंट पर आधारित डेटा आम तौर पर
ऐसी जानकारी जिसे कुछ समय के लिए रोका गया हो या छिपाने के लिए उसमें बदलाव किया गया हो. अगर आपको
उपयोगकर्ता-एजेंट हेडर और क्लाइंट के आधार पर 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
प्लैटफ़ॉर्म की जानकारी देने वाली एंट्री. ऐसा हो सकता है कि यह सुविधा, उपयोगकर्ता एजेंट के साथ काम न करे
हेडर और क्लाइंट हिंट देते हैं, इसलिए कुछ प्लैटफ़ॉर्म को टारगेट करने के लिए जांच की ज़रूरत पड़ सकती है
दो नाम. उदाहरण के लिए, Apple के Macintosh ऑपरेटिंग सिस्टम को
User-Agent हेडर में “Macintosh”, लेकिन क्लाइंट हिंट में “macOS”.
नीचे कुछ और अंतर दिए गए हैं, जो आपको इनके आधार पर दिख सकते हैं
source
की वैल्यू:
USER_AGENT
:version
फ़ील्ड को मेजर वर्शन में छोटा किया जा सकता है या फ़्रीज़ किया गया. ध्यान दें कि ऐसा कोई संकेत नहीं दिया जाएगा कि वैल्यू फ़्रीज़ की गई है.CLIENT_HINTS_LOW_ENTROPY
:version
फ़ील्ड में जानकारी नहीं भरी जाएगी.CLIENT_HINTS_HIGH_ENTROPY
:version
फ़ील्ड को पूर्ण पर सेट किया जा सकता है वर्शन है.
मोबाइल
इससे पता चलता है कि विज्ञापनों जैसे कॉन्टेंट को छोटी स्क्रीन के लिए ऑप्टिमाइज़ किया जाना चाहिए या नहीं और/या टच इनपुट. ध्यान दें कि यह आवश्यक रूप से डिवाइस का प्रकार दिखाने वाला नहीं है, क्योंकि किसी “डेस्कटॉप साइट” का अनुरोध करने के लिए, मोबाइल ब्राउज़र कॉन्फ़िगर किए जा सकते हैं.
आर्किटेक्चर
प्लैटफ़ॉर्म के आर्किटेक्चर की पहचान करता है. जैसे, “x86” या “आर्म”.
ध्यान दें कि क्लाइंट हिंट के आधार पर 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
: क्लाइंट हिंट उपलब्ध हैं. इनमें कम से कम प्रॉम्प्ट भी शामिल हैं एक फ़ील्ड को हाई एंट्रॉपी के तौर पर मार्क किया गया है.