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

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

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

  • OpenRTB: BidRequest.device.ua
  • הצעת מחיר בזמן אמת (RTB) של Google (הוצאה משימוש): BidRequest.user_agent

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

  • OpenRTB: BidRequest.device.sua
  • הצעת מחיר בזמן אמת (RTB) של 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 יאוכלסו על סמך תוכן הכותרות האלה, גם אם 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" אם הוא מבוסס על בכותרת 'סוכן משתמש', או 'Windows' אם היא מבוססת על רמזים של לקוח.
  • חלק מהרשומות של UserAgent.browsers הן ייחודיות לכותרת של סוכן המשתמש, או אל רמזים ללקוחות. לדוגמה, השם "AppleWebKit" יופיע אם UserAgent מבוססים על הכותרת של סוכן המשתמש, ואילו Chromium יופיע רק. אם הוא מבוסס על רמזים של לקוחות.
  • רק UserAgent שמבוסס על הכותרת של סוכן המשתמש יכול להכיל ערכים שהוקפאו. לדוגמה, אם הפלטפורמה הייתה Windows 11 22H2, UserAgent.platform.brand יוגדר כ-"Windows NT" ו- הערך של UserAgent.platform.version יוגדר כ-[“10”, “0”] כי את הערך שהוקפא בכל גרסת Windows שבגרסה 10 ומעלה.

נתונים ב-UserAgent המבוססים על רמזים של לקוחות לא ייחשבו בדרך כלל החלפה לא מדויקת של מידע שהוקפא או מצונזר. אם קיים חוסר עקביות בין הכותרת של סוכן המשתמש לבין 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 רשומה שמתארת את הפלטפורמה. ייתכן שההגדרה הזו לא תואמת לסוכן המשתמש כותרת ורמזים ללקוחות, לכן טירגוט של פלטפורמות מסוימות עשוי לחייב בדיקה שני שמות. לדוגמה, מערכת ההפעלה Macintosh של Apple ממותגת בתור "Macintosh" בכותרת של סוכן המשתמש, אבל '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.

ביט

מזהה את מידת הביטים של הפלטפורמה, למשל אם היא של 32 סיביות או של 64 ביט מעבד (CPU) השדה הוא מחרוזת של מספר שלם שמספק מידע נוסף על את הארכיטקטורה שלו, לדוגמה, בארכיטקטורת 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_LOW_ENTROPY: יש רק טיפים בסיסיים ללקוחות.
  • CLIENT_HINTS_HIGH_ENTROPY: טיפים ללקוחות זמינים, כולל לפחות שדה אחד שמסווג כאנטרופיה גבוהה.