هدف گذاری عامل کاربر

سربرگ User-Agent از گذشته در درخواست‌های پیشنهادی گنجانده شده است تا داده‌های هدف‌گیری مفیدی مانند مرورگر و پلتفرم دستگاه آغازگر را ارائه دهد. با این حال، مرورگرها اغلب به دلیل دشواری استفاده و محافظت بهتر از حریم خصوصی کاربر، User-Agent را به شدت ویرایش می‌کنند. در پاسخ به این، Google از راهنمایی‌های کاربر-عامل مشتری پشتیبانی می‌کند که در صورت وجود برای تکمیل سرصفحه نماینده کاربر، در درخواست‌های پیشنهادی گنجانده می‌شوند. این نکات کلاینت (به اختصار) را می توان از سرصفحه های Sec-Ch-UA* یا از Javascript Client Hints API تهیه کرد.

بسته به پروتکل مورد استفاده، هدر User-Agent با یکی از فیلدهای رشته زیر نمایش داده می شود:

  • Google: BidRequest.user_agent
  • OpenRTB: BidRequest.device.ua

پیام UserAgent در صورت در دسترس بودن با نکات مشتری پر می شود، اما در غیر این صورت بر اساس مقادیر تجزیه شده از هدر User-Agent پر می شود. بسته به پروتکل مورد استفاده، این به عنوان یکی از فیلدهای زیر نمایش داده می شود:

  • Google: BidRequest.user_agent_data
  • OpenRTB: BidRequest.device.sua

پیشنهاد دهندگان به شدت تشویق می شوند که از پیام UserAgent به جای رشته User-Agent استفاده کنند.

نحوه پر شدن UserAgent

برخلاف سربرگ User-Agent، پیام UserAgent نشان دهنده اطلاعات عامل کاربر است که به چندین فیلد برای اطلاعات خاص تقسیم شده است.

بسته به اینکه نکات مشتری در درخواست تبلیغ موجود باشد، پیام UserAgent را می توان به روش های زیر پر کرد:

  • اگر درخواست حداقل حاوی نکات مشتری کم آنتروپی باشد، UserAgent بر اساس محتوای آنها پر می شود.
  • اگر درخواست فقط شامل سرصفحه User-Agent باشد، UserAgent بر اساس آنچه که می‌توان از هدر تجزیه کرد پر می‌شود.

مثال: پر کردن UserAgent بر اساس هدر User-Agent

فرض کنید یک درخواست تبلیغ وجود دارد که در آن مرورگر سرصفحه های زیر را ارسال می کند:

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 که فقط بر اساس سربرگ User-Agent پر شده است ممکن است به شکل زیر باشد:

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 اغلب بین یک UserAgent بر اساس سربرگ User-Agent یا نکات مشتری متفاوت هستند. به عنوان مثال، UserAgent.platform.brand ممکن است به عنوان "Windows NT" ظاهر شود اگر بر اساس سربرگ User-Agent باشد، یا "Windows" اگر بر اساس نکات مشتری باشد.
  • برخی از ورودی های UserAgent.browsers منحصر به هدر User-Agent یا نکات مشتری هستند. برای مثال، «AppleWebKit» در صورتی ظاهر می‌شود که UserAgent مبتنی بر سرصفحه User-Agent باشد، در حالی که «Chromium» تنها در صورتی ظاهر می‌شود که بر اساس نکات مشتری باشد.
  • فقط یک UserAgent بر اساس هدر User-Agent می تواند حاوی مقادیر ثابت شده باشد. به عنوان مثال، اگر پلتفرم ویندوز 11 22H2 بود، UserAgent.platform.brand روی "Windows NT" و UserAgent.platform.version روی [“10”, “0”] تنظیم می شد زیرا این مقدار ثابت برای هر نسخه ویندوز 10 یا بالاتر.

داده‌های موجود در UserAgent که مبتنی بر نکات کلاینت هستند، معمولاً جایگزین نادرستی برای اطلاعات ثابت یا ویرایش شده نیستند. اگر هر گونه ناهماهنگی بین هدر User-Agent و UserAgent بر اساس نکات مشتری وجود دارد، اطلاعات UserAgent باید ترجیح داده شود.

فیلدهای شی UserAgent

این بخش هر زمینه را با تمرکز بر رفتار خاص Google RTB و بهترین شیوه‌های استفاده خلاصه می‌کند.

مرورگرها

حاوی فهرستی از ورودی‌های BrandVersion است که معمولاً بر اساس ویژگی مرتب شده‌اند – برای مثال، اگر بخواهید محتوای browsers را فهرست کنید، brand هر ورودی ممکن است به ترتیب زیر ظاهر شود:

نام تجاری معنی
موزیلا سازگار با موزیلا
AppleWebKit مبتنی بر AppleWebKit، زیر مجموعه ای از موزیلا.
کروم مرورگر کروم، زیر مجموعه ای از مرورگرهای سازگار با AppleWebKit
سافاری نوع دسکتاپ، برخلاف موبایل.

UserAgent همیشه مرورگرها را به ترتیب خاصی فهرست نمی کند، به خصوص اگر بر اساس نکات مشتری باشد. موارد زیر تفاوت های دیگری را توضیح می دهد که می توانید انتظار داشته باشید بر اساس ارزش source مشاهده کنید:

  • USER_AGENT : قسمت version ممکن است به نسخه اصلی کاهش یابد یا ثابت شود (بستگی به خط مشی خاص نماینده دارد). توجه داشته باشید که هیچ نشانه ای مبنی بر ثابت بودن مقدار وجود نخواهد داشت.
  • CLIENT_HINTS_LOW_ENTROPY و CLIENT_HINTS_HIGH_ENTROPY : ورودی ها بر اساس هیچ معیاری مرتب نمی شوند. به عنوان مثال، یک مرورگر ممکن است این ورودی ها را به ترتیب های مختلف در هر درخواست ارسال کند. آنها همچنین ممکن است حاوی یک ورودی GREASE باشند که باید نادیده گرفته شود.
  • CLIENT_HINTS_HIGH_ENTROPY : تمام قسمت های version موجود در مرورگرها ممکن است روی نسخه های کامل تنظیم شوند.

سکو

ورودی BrandVersion که پلتفرم را توصیف می کند. این ممکن است در سربرگ User-Agent و نکات مشتری سازگار نباشد، بنابراین هدف قرار دادن برخی پلتفرم‌ها ممکن است نیاز به آزمایش دو نام داشته باشد. برای مثال، سیستم عامل مکینتاش اپل در هدر User-Agent با نام Macintosh و در Client Hints با نام macOS شناخته می شود. موارد زیر تفاوت های دیگری را توضیح می دهد که می توانید انتظار داشته باشید بر اساس ارزش source مشاهده کنید:

  • USER_AGENT : قسمت version ممکن است به نسخه اصلی کاهش یابد یا ثابت شود. توجه داشته باشید که هیچ نشانه ای مبنی بر ثابت بودن مقدار وجود نخواهد داشت.
  • CLIENT_HINTS_LOW_ENTROPY : قسمت version پر نخواهد شد.
  • CLIENT_HINTS_HIGH_ENTROPY : قسمت version ممکن است روی نسخه کامل تنظیم شود.

سیار

نشان می دهد که آیا محتوایی مانند تبلیغات باید برای صفحه نمایش های کوچک و/یا ورودی لمسی بهینه شود یا خیر. توجه داشته باشید که این لزوماً نشانگر نوع دستگاه نیست، زیرا مرورگرهای تلفن همراه را می‌توان برای درخواست «سایت دسک‌تاپ» پیکربندی کرد.

معماری

معماری پلتفرم مانند "x86" یا "arm" را شناسایی می کند.

برای UserAgent مبتنی بر نکات مشتری، توجه داشته باشید که این فقط زمانی پر می شود که source روی CLIENT_HINTS_HIGH_ENTROPY تنظیم شده باشد.

بیتنس

بیتی بودن پلتفرم را مشخص می کند، مانند اینکه آیا CPU 32 بیتی یا 64 بیتی دارد. فیلد یک رشته عدد صحیح است که اطلاعات بیشتری در مورد معماری آن ارائه می دهد. به عنوان مثال، یک معماری "x86" می تواند بیتی را روی "32" یا "64" تنظیم کند.

برای UserAgent مبتنی بر نکات مشتری، توجه داشته باشید که این فقط زمانی پر می شود که source روی CLIENT_HINTS_HIGH_ENTROPY تنظیم شده باشد.

مدل

مدل دستگاه را مشخص می کند. برای دستگاه‌های تلفن همراه - به معنی لپ‌تاپ یا رایانه‌های رومیزی نیست - این نام مدلی مانند «Pixel 6 Pro» دارد.

موارد زیر تفاوت‌هایی را توضیح می‌دهند که می‌توانید انتظار داشته باشید بر اساس ارزش source ببینید:

  • USER_AGENT
    • دستگاه‌های غیر همراه: فیلد model اغلب دارای یک معماری ترکیبی و مقدار بیت مانند «x64» برای ویندوز است. این مقدار بین پلتفرمی نیست. به عنوان مثال، لینوکس ممکن است از "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 : نکات مشتری در دسترس هستند، از جمله حداقل یک زمینه طبقه بندی شده به عنوان آنتروپی بالا.