سربرگ User-Agent از گذشته در درخواستهای پیشنهادی گنجانده شده است تا دادههای هدفگیری مفیدی مانند مرورگر و پلتفرم دستگاه آغازگر را ارائه دهد. با این حال، مرورگرها اغلب به دلیل دشواری استفاده و محافظت بهتر از حریم خصوصی کاربر، User-Agent را به شدت ویرایش میکنند. در پاسخ به این، Google از راهنماییهای کاربر-عامل مشتری پشتیبانی میکند که در صورت وجود برای تکمیل سرصفحه نماینده کاربر، در درخواستهای پیشنهادی گنجانده میشوند. این نکات کلاینت (به اختصار) را می توان از سرصفحه های Sec-Ch-UA* یا از Javascript Client Hints API تهیه کرد.
بسته به پروتکل مورد استفاده، هدر User-Agent با یکی از فیلدهای رشته زیر نمایش داده می شود:
- OpenRTB:
BidRequest.device.ua
- Google RTB (منسوخ شده):
BidRequest.user_agent
پیام UserAgent
در صورت در دسترس بودن با نکات مشتری پر می شود، اما در غیر این صورت بر اساس مقادیر تجزیه شده از هدر User-Agent پر می شود. بسته به پروتکل مورد استفاده، این به عنوان یکی از فیلدهای زیر نمایش داده می شود:
- OpenRTB:
BidRequest.device.sua
- Google RTB (منسوخ شده):
BidRequest.user_agent_data
پیشنهاد دهندگان به شدت تشویق می شوند که از پیام 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 یا Client Hints باشند، متفاوت پر می شوند. در زیر خلاصه ای از این تفاوت ها آمده است:
- برای مرورگرها و پلتفرمهای یکسان،
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
: نکات مشتری در دسترس هستند، از جمله حداقل یک زمینه طبقه بندی شده به عنوان آنتروپی بالا.