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

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

הכותרת User-Agent מוצגת כמחרוזת בשדה BidRequest.device.ua.

הודעה מסוג UserAgent תתמלא ברמזים על הלקוח (Client Hints) כשהם יהיו זמינים, אחרת היא תתמלא על סמך ערכים שנותחו מהכותרת User-Agent. השדה הזה מוצג בשדה BidRequest.device.sua.

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

איך השדה 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

במקרים שבהם נכללים לפחות רמזים על הלקוח (Client Hints) עם אנטרופיה נמוכה, השדה 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

האכלוס על סמך הכותרת User-Agent לעומת רמזים על הלקוח (Client Hints)

חלק מהשדות מאוכלסים באופן שונה, בהתאם לכך שהם מבוססים על הכותרת User-Agent או על רמזים על הלקוח (Client Hints). זהו סיכום של ההבדלים האלה:

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

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

שדות של אובייקט UserAgent

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

דפדפנים

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

מותג משמעות
Mozilla תואם ל-Mozilla
AppleWebKit מבוסס על AppleWebKit, קבוצת משנה של Mozilla.
Chrome דפדפן Chrome, קבוצת משנה של דפדפנים שתואמים ל-AppleWebKit
Safari גרסת דפדפן, בניגוד לגרסה לנייד.

השדה UserAgent לא תמיד יציג את הדפדפנים בסדר ספציפי, במיוחד אם הוא מבוסס על רמזים מהלקוח. בהמשך מפורטים הבדלים נוספים שצפויים להופיע בהתאם לערך של source:

  • USER_AGENT: השדה version עשוי להיות מופחת לגרסה ראשית או להקפיא (בהתאם למדיניות הספציפית של סוכן ה-API). חשוב לזכור שלא תהיה אינדיקציה לכך שהערך קפוא.
  • CLIENT_HINTS_LOW_ENTROPY ו-CLIENT_HINTS_HIGH_ENTROPY: הרשומות לא ממוינות לפי קריטריונים כלשהם. לדוגמה, יכול להיות שאותו דפדפן ישלח את הרשומות האלה בסדרים שונים בכל בקשה. הן עשויות לכלול גם רשומה מסוג GREASE, שצריך להתעלם ממנה.
  • CLIENT_HINTS_HIGH_ENTROPY: אפשר להגדיר את כל השדות של version שנמצאים בדפדפנים לגרסאות מלאות.

פלטפורמה

רשומה BrandVersion שמתארת את הפלטפורמה. יכול להיות שהשם הזה לא יהיה תואם בכותרת User-Agent וברמזים ללקוח, ולכן יכול להיות שתצטרכו לבדוק שני שמות כדי לטרגט פלטפורמות מסוימות. לדוגמה, מערכת ההפעלה 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.

Bitness

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