טירגוט של סוכן משתמש

הכותרת User-Agent נכללה בעבר בבקשות להצעות מחיר, כדי לספק נתוני טירגוט שימושיים, כמו הדפדפן והפלטפורמה של המכשיר שמתחיל את התהליך. עם זאת, לעיתים קרובות דפדפנים מצנזרים בצורה קפדנית את ה-User-Agent בגלל הקושי בשימוש שלו וכדי להגן טוב יותר על פרטיות המשתמש. לכן, Google תומכת ב-User-Agent Client Hints, שכלולים בבקשות להצעות מחיר, כשהן זמינות, כדי להשלים את הכותרת User-Agent. המקור של רמזים אלה (או בקיצור) Client Hints הוא מכותרות Sec-Ch-UA* או מ-JavaScript Client Hints API.

בהתאם לפרוטוקול שבו משתמשים, הכותרת של סוכן המשתמש נחשפת באמצעות אחד משדות המחרוזת הבאים:

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

הודעת UserAgent תאוכלס ב-Client Hints כשהם זמינים, אבל אחרת תאוכלס לפי הערכים שנותחו מהכותרת של User-Agent. המידע יוצג כאחד מהשדות הבאים, בהתאם לפרוטוקול שבו משתמשים:

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

מומלץ מאוד למגישי הצעות המחיר להשתמש בהודעה UserAgent ולא במחרוזת ה-User-Agent.

איך מתבצע אכלוס של UserAgent

להבדיל מהכותרת של סוכן המשתמש, ההודעה UserAgent מייצגת את פרטי סוכן המשתמש בחלוקה לשדות מרובים לגבי מידע ספציפי.

בהתאם לזמינות של רמזים על הלקוח בבקשה למודעה, אפשר לאכלס את ההודעה UserAgent בדרכים הבאות:

  • אם הבקשה מכילה לפחות רמזי לקוח מסוג low-entropy, השדה 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 שמאוכלס רק על סמך הכותרת של 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

אכלוס לפי הכותרת של סוכן המשתמש לעומת רמזים ללקוח

חלק מהשדות מאוכלסים באופן שונה בהתאם לכותרת של הסוכן המשתמש או לרמזים ללקוח. לפניכם סיכום של ההבדלים:

  • בדפדפנים ובפלטפורמות זהים, UserAgent.browsers.brand ו-UserAgent.platform.brand בדרך כלל יהיו שונים בין UserAgent בהתאם לכותרת של סוכן המשתמש או לרמזים ללקוח. לדוגמה, UserAgent.platform.brand עשוי להופיע כ-"Windows NT" אם הוא מבוסס על הכותרת User-Agent, או בתור "Windows" אם הוא מבוסס על רמזים ללקוחות.
  • חלק מרשומות ה-UserAgent.browsers הן ייחודיות לכותרת של סוכן ה-User-Agent או ל-Client Hints. לדוגמה, 'AppleWebKit' יופיע אם הכותרת UserAgent התבססה על הכותרת של סוכן המשתמש, ואילו 'Chromium' יופיע רק אם הוא היה מבוסס על רמזים ללקוחות.
  • רק UserAgent המבוסס על הכותרת של סוכן המשתמש יכול להכיל ערכים שהוקפאו. לדוגמה, אם הפלטפורמה הייתה Windows 11 22H2, הערך של UserAgent.platform.brand יוגדר כ-Windows NT ו-UserAgent.platform.version יוגדר כ-[“10”, “0”] כי זה הערך שהוקפא לכל גרסה של Windows בגרסה 10 ואילך או יותר.

בדרך כלל, הנתונים ב-UserAgent שמבוססים על 'רמזים ללקוחות' לא יהוו תחליף לא מדויק למידע שהוקפא או שצונזר. במקרה של חוסר עקביות בין הכותרת של ה-User-Agent לבין הכותרת UserAgent על סמך 'רמזים ללקוח', כדאי לבחור את המידע מהשדה UserAgent.

שדות אובייקט של סוכן משתמש

בקטע הזה מופיע סיכום של כל שדה, עם התמקדות בהתנהגות הספציפית ל-RTB ובשיטות המומלצות לשימוש של Google.

דפדפן

מכילה רשימה של ערכי BrandVersion שמסודרים בדרך כלל לפי ספציפיות. לדוגמה, אם מציינים את התוכן של browsers, השדה brand של כל רשומה עשוי להופיע בסדר הבא:

מותג משמעות
Mozilla תואם 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 ולרמזים ללקוח, ולכן ייתכן שיהיה צורך לבדוק שני שמות לטירגוט לפלטפורמות מסוימות. לדוגמה, מערכת ההפעלה Macintosh של Apple מתויגת כ-"Macintosh" בכותרת User-Agent, אבל "macOS" ב-Client Hints. בהמשך מתוארים הבדלים אחרים שאתם צפויים לראות על סמך הערך של 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' ב-Windows. הערך הזה לא חוצה פלטפורמות. לדוגמה, Linux עשויה להשתמש ב-"x86_64" לאותה חומרה.
    • מכשירים ניידים: שדה זה לא יכלול ארכיטקטורה וקצב העברת נתונים. הערכים האלה מעניינים אותך? כדאי להיכנס אל UserAgent.architecture ו-UserAgent.bitness.
  • CLIENT_HINTS_LOW_ENTROPY: השדה model לא יאוכלס.
  • CLIENT_HINTS_HIGH_ENTROPY: השדה model יאוכלס רק לדגם המכשיר של מכשירים ניידים. לא הוגדר ערך לפלטפורמות של מחשבים.

מקור

מזהה באילו כותרות נעשה שימוש כדי ליצור את UserAgent. ב-Client Hints אפשר גם להבחין בין שני המקרים הבאים:

  • CLIENT_HINTS_LOW_ENTROPY: ניתן לקבל רק רמזים בסיסיים ללקוח.
  • CLIENT_HINTS_HIGH_ENTROPY: רמזים על הלקוח (Client Hints) זמינים, כולל לפחות שדה אחד שמסווג כאנטרופיה גבוהה.