उपयोगकर्ता-एजेंट टारगेटिंग

उपयोगकर्ता-एजेंट हेडर को लंबे समय से बिड रिक्वेस्ट में शामिल किया गया है, ताकि काम के शुरुआती डिवाइस के ब्राउज़र और प्लैटफ़ॉर्म जैसे टारगेटिंग डेटा से. हालांकि, ब्राउज़र को इस्तेमाल करने में दिक्कत होती है. इसलिए, उपयोगकर्ता एजेंट को अक्सर छिपाने के लिए उसमें बहुत ज़्यादा बदलाव किए जाते हैं और ताकि उपयोगकर्ता की निजता को बेहतर तरीके से सुरक्षित रखा जा सके. इस समस्या को हल करने के लिए, 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: क्लाइंट हिंट उपलब्ध हैं. इनमें कम से कम प्रॉम्प्ट भी शामिल हैं एक फ़ील्ड को हाई एंट्रॉपी के तौर पर मार्क किया गया है.